SMOTE アルゴリズムを使用せずに、マルチクラスの不均衡なデータをどのように処理できますか?

SMOTE アルゴリズムを使用せずに、マルチクラスの不均衡なデータをどのように処理できますか?

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)から転載したものです。

機械学習における一般的な問題は、ターゲット クラスに非常に不均衡な量のデータが存在する、不均衡なデータを処理することです。

[[344863]]

マルチクラス不均衡データとは何ですか?

分類問題の対象クラス(2 つ以上)が均等に分布していない場合、不均衡データと呼ばれます。この問題が適切に処理されない場合、クラスの不均衡なデータを使用したモデリングは多数派クラスに偏るため、モデルは惨事になります。不均衡なデータに対処するにはさまざまなアプローチがありますが、最も一般的なのはオーバーサンプリングと合成サンプルの作成です。

SMOTE アルゴリズムとは何ですか?

SMOTE は、データセットから合成例を生成するオーバーサンプリング手法であり、少数派クラスの予測力を向上させます。情報の損失はありませんが、いくつかの制限があります。

合成サンプル

制限:

  • SMOTE は高次元データには適していません。
  • クラスの重複が発生し、データにノイズがさらに発生する可能性があります。

したがって、この問題を回避するには、「class_weight」パラメータを使用してクラスに手動で重みを割り当てることができます。

クラスの重みを使用するのはなぜですか?

クラスの重みは、異なる重みを持つクラスにペナルティを課すことで損失関数を直接変更し、少数クラスのパワーを意図的に増加させ、多数クラスのパワーを減少させます。したがって、SMOTE よりもうまく機能します。この記事では、不均衡な学習問題に適したデータの重みを取得するための最も一般的な手法をいくつか紹介します。

(1) Sklearnユーティリティ

クラスの重みは、sklearn を使用して取得および計算できます。モデルをトレーニングする際にこれらの重みを少数クラスに追加すると、クラスの分類パフォーマンスが向上します。

  1. sklearn.utilsからclass_weightをインポートします。class_weight class_weight = class_weight.compute_class_weight('balanced,
  2. np.unique(ターゲット_Y)、
  3. target_Y)モデル= LogisticRegression ( class_weight class_weight = class_weight)
  4. model.fit(X,target_Y) # ['balanced', 'calculated balanced', 'normalized'] は操作できるハイパーパラメータです。

ロジスティック回帰から Catboost まで、ほぼすべての分類アルゴリズムには、class_weight パラメーターがあります。しかし、XGboost はバイナリ分類には scale_pos_weight を使用し、バイナリおよびマルチクラスの問題には sample_weight を使用します。

(2)数と長さの比

非常に簡単です。行数を各クラスのカウント数で割るだけです。

  1. 重み= df [target_Y].value_counts()/len(df)
  2. モデル= LGBMClassifier ( class_weight = weights )model.fit(X,target_Y)

(3)ウェイトを滑らかにする

これは重量を選択する最良の方法の 1 つです。 labels_dict は各クラスのカウントを含む辞書オブジェクトであり、対数関数は不均衡なクラスの重みを平均化します。

  1. 定義class_weight(labels_dict, mu = 0.15 ):
  2. 合計= np .sum(labels_dict.values())キー= labels_dict .keys()重み= dict () i がキーに含まれる場合:
  3. score = np .log(mu*total/float(labels_dict[i])) weight[i] = score if score > 1else 1return weight# random labels_dict
  4. labels_dict = df [target_Y].value_counts().to_dict() weights = class_weight (labels_dict) model = RandomForestClassifier ( class_weight = weights )
  5. モデルをフィット(X,target_Y)

(4)サンプル重み戦略

以下の関数は、XGboost アルゴリズムのサンプル重みを取得するために使用される class_weight パラメータとは異なります。トレーニング例ごとに異なる重みを返します。サンプルの重みは、データと同じ長さの配列で、各サンプルに適用されたモデル損失の重みが含まれます。

  1. バランスサンプル重みを定義します(y_train、クラス重み係数):
  2. クラス= np .unique(y_train、= 0 )
  3. classes.sort() class_samples = np .bincount(y_train) total_samples = class_samples .sum() n_classes = len (class_samples) weights = total_samples / (n_classes * class_samples * 1.0)
  4. class_weight_dict = {key : value for (key, value) in zip(classes, weights)}
  5. class_weight_dict[クラス[1]] = class_weight_dict[クラス[1]] *
  6. class_weight_coefsample_weights = [class_weight_dict[i] y_train 内の i について]
  7. return sample_weights#使用方法
  8. 重み= BalancedSampleWeights (target_Y、class_weight_coef)
  9. モデル= XGBClassifier (サンプルの重み= 重み )
  10. モデルをフィット(X, ターゲットY)

(5)クラス重みとサンプル重み:

サンプルの重みは、各トレーニング サンプルの重みを提供するために使用されます。つまり、トレーニング サンプルとまったく同じ数の要素を持つ 1D 配列を渡す必要があります。クラスの重みは、各ターゲット クラスに重みを提供するために使用されます。つまり、分類するクラスごとに 1 つの重みを渡す必要があります。

これらは、分類器のクラス重みとサンプル重みを見つけるためのいくつかの方法です。これらのテクニックはすべて私のプロジェクトで機能したので、ぜひ試してみてください。きっと大いに役立つでしょう。

<<:  精密人工知能:原子核物理学と素粒子物理学における新たな力

>>:  95歳のハーバード大学出身者が、機械学習をゼロから始めるための必読書を執筆しました。本のリソースは現在公開されています。

ブログ    
ブログ    
ブログ    

推薦する

VR時代、eスポーツは新たな輝きを放つ

[51CTO.comからのオリジナル記事] 2015年以降、仮想現実(VR)業界は急速に発展しました...

周紅一の2024年大模型予測は8つの点を検証し、ソラの出現は予想を超えていると述べている

「私は講義をするときに利益を請求しません。私の目的は、無料の授業、共有、科学普及、コミュニケーション...

AIと天気予報が出会うとどんな火花が散るのでしょうか?

SF作家の劉慈欣はかつて、自身の小説の中でこのような天気予報を描写した。小説の主人公は気象大学を卒...

給料の心配はやめましょう。これは今後 10 年間で最も収益性の高い業界であり、横になっているときでもお金を稼ぐことができます。

小米創始者の雷軍はかつて「風の吹き口に立てば豚でも飛べる」と言った。事実は往々にしてこの通りだ。人の...

悪いことを学ぶのは簡単ですが、良いことを学ぶのは難しいです!人工知能は人間の人種や性別の偏見を継承する

編集者注: サンスティーンは『インターネット共和国』でアルゴリズムが私たちの認知世界に影響を与えると...

ディープラーニングの学習をすぐに始めないでください。非常に詳細な AI 専門家のロードマップ、GitHub は数日間で 2.1k のスターを獲得

この学習ロードマップは、人工知能分野のほぼすべてのコンテンツを網羅しています。マウスをクリックするだ...

機械学習に基づく自動化されたスピアフィッシング戦略

2016年のBlack Hat USAカンファレンスでは、カンファレンスに参加したセキュリティ専門家...

...

ケビン・ケリーがAIブームを解説:超人的なAIを暴く5つの神話

人工知能は非常に人気が高まっているため、ニュースで報道される超知能に関する予測が実現可能なものなのか...

...

...

...

人工知能は未来の都市にどのような力を与えるのでしょうか?

スマート シティが将来のアイデアだけでなく現実のものとなるにつれ、人工知能 (AI) が台頭してきて...