Pythonで不均衡なデータセットを処理する

1.データの不均衡とは

いわゆるデータの不均衡とは、データセット内のカテゴリ数の不均一な分布を指します。不均衡なデータは、実際のタスクでは非常に一般的です。といった

・クレジットカード詐欺データ:99%は通常のデータ、1%は詐欺データです

・ローンの延滞データ

一般に、データ生成によって発生するのは不均衡なデータです。カテゴリが少ないサンプルは、通常、発生頻度が低く、収集に長い時間がかかります。

機械学習タスク(分類問題など)では、データのバランスが悪いと、トレーニングされたモデルの予測結果がサンプル数の多いカテゴリに偏ります。現時点では、適切な評価指標を選択することに加えて、必要に応じてモデルのパフォーマンスを向上させるには、データとモデルの前処理を行う必要があります。

データの不均衡に対処する主な方法:

· 欠采样
· 过采样
· 综合采样
· 模型集成
· 调整类别权重或者样本权重

2.データ不均衡処理方法

不均衡な学習ライブラリは、不均衡なデータを処理する多くの方法を提供します。この記事の例はすべて、不均衡な学習ライブラリを使用して実装されています。

https://github.com/scikit-learn-contrib/imbalanced-learn

最初にデータを見てみましょう

2.1アンダーサンプリング

アンダーサンプリングとは、数のバランスをとるために、多数のカテゴリのサンプルをサンプリングして、サンプルの数を少数のカテゴリの数と等しくすることです。


推奨事項:020は継続的に更新され、小さなブティックサークルには毎日新しいコンテンツがあり、乾物の濃度は非常に高くなっています。
接続してテクノロジーについて話し合いたいものはすべてあります。
グループに最初に参加して、仲間をしのぐようにしましょう!(グループへの参加は無料です)
Python開発者とのコミュニケーションと学習については、ここをクリックしてください。
グループ番号:745895701、
アプリケーション
Pythonソフトウェアインストールパッケージ、Python実際の戦闘チュートリアル、
Pythonの基本学習、高度な学習、クローラー、人工知能、自動操作とメンテナンス、自動テストなどを含む資料の無料コレクション。

アンダーサンプリングはデータの一部を失うため、マルチクラスサンプルの数の分布は必然的に変化します。優れたアンダーサンプリング戦略では、元のデータ分布を可能な限り維持する必要があります。

アンダーサンプリングとは、過半数のサンプルを削除することです。削除できるサンプルはどれですか。

・1つは重複データであり、これは冗長データです

・1つは、マイノリティの分布を妨げるデータです。

これに基づいて、アンダーサンプリングには2つの方法があります

・隣接するマッチングの境界、TomekLinks、NearMissなどの隣接するスペースの多数派サンプルの削除を検討してください

下の写真は6NN(6つの最近傍)を示しています

TomekLinksに重点を置いています。この方法は単純です。マイノリティサンプルごとに1NN(最近傍)を検索します。最近傍がメジャーの場合、トームリンクが形成されます。このメソッドは、このマジョリティを干渉と見なします。削除します。

以上のことから、1174個のtomek-linksが削除されていることがわかります。削除だけでは不十分なようです。分類結果に役立つかどうかをテストできます。最近傍を計算する必要があるため、サンプル属性は数値属性であるか、数値属性に変換できることに注意してください。

クラスタリング

このタイプの方法では、元のサンプルを複数のクラスターを介して複数のクラスターに分割し、各クラスターの中心を使用してクラスターの特性を置き換え、サンプリングの目的を達成します。この種のサンプリングのサンプルは、元のサンプルセットからのものではなく、クラスタリングによって生成されたものであることがわかります。

不均衡によって提供されるアンダーサンプリング方法は次のとおりです。

· Random majority under-sampling with replacement
· Extraction of majority-minority Tomek links
· Under-sampling with Cluster Centroids
· NearMiss-(1 & 2 & 3)
· Condensed Nearest Neighbour
· One-Sided Selection
· Neighboorhood Cleaning Rule
· Edited Nearest Neighbours
· Instance Hardness Threshold
· Repeated Edited Nearest Neighbours
· AllKNN

2.2オーバーサンプリング

オーバーサンプリングとは、少数のカテゴリのサンプルをコピーして、サンプルの数を多数のカテゴリの数と同じにし、定量的なバランスを実現することです。複数の少数派サンプルが複製されるため、オーバーサンプリングは少数派の分散を変更します。

オーバーサンプリングの簡単な方法は、少数派のサンプルをランダムにコピーすることです。もう1つは、既存のサンプルに基づいて人工サンプルを生成することです。ここでは、人工サンプル用の古典的なアルゴリズムSMOTE(Synthetic Minority Over-sampling Technique)を紹介します。

SMOTEは、マイノリティサンプルと同様の特徴空間に基づいて新しい人工サンプルを作成します。次のように実行します。

・少数派のサンプルを選択し、そのKNN近傍を計算します

・K近傍の中からランダムに近傍を選択します

・特定の機能を変更し、特定のサイズをオフセットします。オフセットのサイズは、少数派のサンプルと隣接するサンプルの差に小さなランダムな比率(0、1)を掛けたものであり、新しいサンプルが生成されます。

SMOTEメソッドの場合、マイノリティごとに新しいサンプルが作成されます。ただし、常にそうであるとは限りません。次の3つのポイントA、B、およびCを考慮してください。データ分散の観点から、ポイントCは異常ポイント(ノイズ)である可能性が高く、ポイントBは正規分布ポイント(SAFE)であり、ポイントAは境界に分布しています(危険)。直感的には、行くべきではありません。ポイントCへ新しいサンプルの作成ポイントBの場合、新しいサンプルを作成しても、マイノリティカテゴリの分布は充実しません。ポイントAのみがあります。ポイントAを(DANGER)から(SAFE)にするために新しいサンプルを作成すると、マイノリティカテゴリの分類境界が強化されます。これはボーダーラインです-SMOTE

ADASYN法は、サンプル分布を維持するという観点から生成データを決定します。データの生成方法はSMOTEと同じですが、少数のサンプルごとに生成されるサンプルの数が異なる点が異なります。

・最初に、ベータを生成するサンプルの数が[0、1]であることを確認します。

・マイナーサンプルごとに、生成するサンプルの割合を決定します。最初にKの最近傍を見つけ、Kの最近傍(つまり分子)の過半数に属するサンプルの比率を計算します。Zは、すべての少数比率の合計が1になるようにするための正規化係数です。すべての分子の合計と見なされます。

・各マイナーに対して生成された新しいサンプルの数を計算します

・SMOTEモードでサンプルを生成する

不均衡によって提供されるオーバーサンプリング方法は次のとおりです(SMOTEアルゴリズムのバリアントを含む)。

· Random minority over-sampling with replacement
· SMOTE - Synthetic Minority Over-sampling Technique
· SMOTENC - SMOTE for Nominal Continuous
· bSMOTE(1 & 2) - Borderline SMOTE of types 1 and 2
· SVM SMOTE - Support Vectors SMOTE
· ADASYN - Adaptive synthetic sampling approach for imbalanced learning
· KMeans-SMOTE
· ROSE - Random OverSampling Examples

2.3包括的なサンプリング

オーバーサンプリングは少数派のサンプル用であり、アンダーサンプリングは多数派のサンプル用です。一方、包括的なサンプリングは、少数派と多数派のサンプルを同時に操作する方法です。主にSMOTE + Tomek-linksとSMOTE + Edited NearestNeighboursがあります。

包括的なサンプリングの方法は、最初にオーバーサンプリングを実行し、次にアンダーサンプリングを実行することです。

2.4モデルの統合

ここでのモデル統合は、主にデータに反映されます。つまり、多くのバランスの取れたデータセット(アンダーサンプリング用の主要なサンプルと少数のサンプル)を使用して複数のモデルをトレーニングし、次に統合します。imblearn.ensembleは、BalancedRandomForestClassifierなど、いくつかの一般的なモデル統合アルゴリズムを提供します。

不均衡によるモデル統合の方法は次のとおりです。

· Easy Ensemble classifier
· Balanced Random Forest
· Balanced Bagging
· RUSBoost

2.5カテゴリの重みまたはサンプルの重みを調整する

勾配降下法を使用して学習する(損失損失を最小限に抑える)多くの機械学習方法では、カテゴリの重みまたはサンプルの重みを調整することで、不均衡なデータのバランスをある程度とることができます。gbdtモデルlightgbmのclass_weightなど

3.まとめ

この記事では、不均衡なデータセットを処理するためのいくつかの一般的な方法を共有し、不均衡な学習の簡単な例を示します。次のように要約します。

· 欠采样: 减少majoritry样本
· 过采样:增加minority样本
· 综合采样:先过采样,在欠采样
· 模型集成:制造平衡数据(majoritry样本欠采样+minority样本),多次不同的欠采样,训练不同的模型,然后融合

・アンダーサンプリングとオーバーサンプリングの両方で、元のデータの分布がある程度変化し、モデルが過剰適合する可能性があります。どの方法を試す必要があるかは、実際のデータ分布と一致しています。もちろん、それは効果的ではないかもしれません、ただ勇敢にそれをしてください!

おすすめ

転載: blog.csdn.net/Python_xiaobang/article/details/112391683