リスクタスク対応の為の再現率100%の実現の課題と実装

機械学習技術 人工知能技術 デジタルトランスフォーメーション技術 確率的生成モデル 画像情報処理技術 ベイズモデリングの世界 自然言語処理技術 マルコフ連鎖モンテカルロ法 知識情報処理 深層学習技術 強化学習 説明できる機械学習 一般的な機械学習 スモールデータでの機械学習 本ブログのナビ
機械学習において再現率100%を実現するとは

機械学習のタスクにおいて、再現率は分類タスクに主に使われる指標となる。この再現率(Recall)100%を実現するとは、分類モデルが全ての陽性サンプルを正しく検出することを意味し、偽陰性(本来の陽性を陰性と間違える)がない状態のことを実現することであり、これは、一般的なタスクの例で考えると、本来見つけたいデータ(陽性)を抜け漏れなく全て抽出することを意味し、現実のリスクが絡むタスクでは頻繁に現れるものとなる。

しかしながらこのような再現率100%の実現は、データの特性や問題の複雑さによって制約され、一般的に達成することは困難となる。また、再現率100%を追求すると偽陽性(本来の陰性を陽性と間違える)の割合が増える可能性もあるため、そのバランスを考慮する必要も出てくる。再現率100%の実現を妨げる課題としては様々なものが考えられる。

次にそれらを実現するためのアルゴリズムについて考える。

再現率100%を実現するのに適した機械学習アルゴリズムは何?

100%の再現率の実現はデータセットの特性に依存し、データの特徴や分布によって最適なアルゴリズムは異なる場合があるが、一般的な傾向として、以下のアルゴリズムが再現率を向上させる上で有効となる。

  • サポートベクターマシン(Support Vector Machines, SVM): SVMは、高次元のデータや非線形の境界を持つデータにも適用でき、最適なハイパーパラメーターの選択とカーネル関数の適切な選択によって、高い再現率を達成できる場合がある。
  • ランダムフォレスト(Random Forest): ランダムフォレストは、多数の決定木を組み合わせることで、高い再現率を達成することができる可能性がある。特に、データセットにノイズや外れ値が含まれる場合にも頑健な性能を示す。
  • グラディエントブースティング(Gradient Boosting): 勾配ブースティングアルゴリズム(例:XGBoostやLightGBM)は、アンサンブル学習の概要とアルゴリズム及び実装例について“にも述べているアンサンブル学習アルゴリズムであり、複数の弱学習器を組み合わせてモデルを構築するものとなる。この手法は、再現率の向上に役立つ特徴の重要度を自動的に学習できるため、高い再現率を達成できる可能性がある。

このようなアルゴリズムを用いても、100%の再現率を達成することは、一般的には困難であり、実際のデータセットに含まれるノイズ、外れ値、不完全なデータなどにより影響を受け、精度が低下する可能性がある。また、再現率を高めるためには、他の性能指標(精度、F1スコアなど)とのトレードオフを考慮する必要もあり、データと問題の特性に基づいて、適切なアルゴリズムを選択する必要がある。

以下にそれぞれのケースについて述べる。

SVMを用いて再現率100%を実現するために必要な要素

SVMを使用して100%の再現率を達成するためには、以下の要素が必要となる。(SVMの詳細は”カーネル法の概要とサポートベクトルマシンについて“を参照のこと)

  • 適切なカーネル関数の選択: SVMは線形カーネルや非線形カーネル(RBF、多項式、シグモイドなど)を使用してデータを高次元空間に写像する。再現率を向上させるためには、データの特性に基づいて適切なカーネル関数を選択する必要がある。
  • ハイパーパラメータの調整: SVMには、正則化パラメータ(C)やカーネル関数固有のパラメータ(ガンマ、多項式の次数など)など、ハイパーパラメータが存在する。再現率を最大化するためには、適切なハイパーパラメータの設定が重要であり、クロスバリデーションやグリッドサーチ、あるいは”Clojureを用いたベイズ最適化ツールの実装“等で述べているベイズ最適化などの手法を使用して、最適なパラメータの組み合わせを見つけることが必要となる。
  • クラスの不均衡への対処: クラスの不均衡なデータセットでは、再現率が低下する可能性がある。SVMにおいても、アンダーサンプリング、オーバーサンプリング、またはクラスの重み付けなどの手法を使用して、データの不均衡を調整する必要がある。
  • モデルの評価と検証: 再現率の最適化に向けて、モデルの評価と検証が重要となる。それらにはホールドアウト検証や交差検証を使い、再現率を主な評価指標として、モデルの性能を評価する必要がある。
ランダムフォレストを用いて再現率100%を実現するために必要な要素

ランダムフォレストを使用して100%の再現率を達成するためには、以下の要素が必要となる。(ランダムフォレストの詳細は”分類(4)集団学習(アンサンブル学習,ランダムフォレスト)と学習結果の評価(交差検証法)“等を参照のこと)

  • 適切な特徴量の選択: モデルの性能は、入力として提供される特徴量の品質に大きく依存する。再現率を向上させるためには、特徴量エンジニアリングの手法を使用して、意味のある特徴量を作成することが重要となる。特徴量抽出の詳細に関しては”様々な特徴エンジニアリングの手法とpythonによる実装“を参照のこと。
  • ハイパーパラメータの調整: ランダムフォレストには、木の数や各ツリーの深さ、サンプルの分割方法などのハイパーパラメータがある。適切なパラメータ設定が再現率の向上に重要となる。それらを行うには、グリッドサーチやランダムサーチ、あるいは”Clojureを用いたベイズ最適化ツールの実装“等で述べているベイズ最適化などの手法を使用して、最適なハイパーパラメータの組み合わせを探索することが必要となる。
  • 不均衡データへの対処: クラスの不均衡なデータセットでは、再現率が低下する可能性がある。再現率を向上させるためには、不均衡なデータに対処する方法を適用する必要があり、アンダーサンプリング、オーバーサンプリング、またはクラスの重み付けなどの手法を使用して、データの不均衡を調整することが重要となる。
  • クラスの重み付け: ランダムフォレストでは、クラスの重み付けが可能であり、少数クラスに対して重みを増やすことで、再現率を向上させることができる。
  • モデルの評価と検証: 再現率の最適化に向けて、モデルの評価と検証が重要となり、ホールドアウト検証や交差検証を使用して、再現率を主な評価指標として、モデルの性能を評価することが必要となる。
LightGBMを用いて再現率100%を実現するために必要な要素

LightGBMは主に勾配ブースティングとDecision Treeを用いたアルゴリズムであり、大規模なデータセットに対して高速かつ高精度なモデルを構築できるように設計されている機械学習のツールとなる(詳細は”LightGBMの概要と各種言語での実装“を参照のこと)。

このLightGBMを利用して100%の再現率を達成するためには、以下の要素が必要となる。

  • 適切な特徴量の選択: モデルの性能は、入力として提供される特徴量の品質に大きく依存するため、再現率を向上させるために、適切な特徴量の選択が重要となる。これには、特徴量エンジニアリングの手法を使用して、意味のある特徴量を作成するアプローチが必要となる。特徴量抽出の詳細に関しては”様々な特徴エンジニアリングの手法とpythonによる実装“を参照のこと。
  • パラメータチューニング: LightGBMは多くのハイパーパラメータを持っており、再現率を最大化するためには、適切なパラメータ設定が必要となる。これには、木の数や深さ、学習率などのパラメータの選択が含まれ、グリッドサーチや”Clojureを用いたベイズ最適化ツールの実装“等で述べているベイズ最適化などの手法を使用して、最適なパラメータを探索することが必要となる。
  • 不均衡データへの対処: 再現率を高めるためには、不均衡なデータセットに対処する必要がある。再現率は、クラスの不均衡によって低下する可能性があり、この場合、オーバーサンプリングやアンダーサンプリング、クラスの重み付けなどの技術を使用して、データの不均衡を調整する。
  • モデルの評価と検証: 再現率の最適化に向けて、モデルの評価と検証が重要となる。これらはホールドアウト検証や交差検証を使用して、モデルの性能を評価し、再現率を主な評価指標とし、結果を評価することが必要となる。

上記の中で共通する要素として、不均衡なデータセットへの対応のアプローチがある。現志津の問題においても、この問題は頻繁に現れ、再現率の向上のための阻害要因となっている。以下では、この不均衡なデータセットへの対応のアプローチについて詳細に述べる。

データ(クラス)の不均衡によって低下した機械学習の再現率を向上させるための手段

データ(クラス)の不均衡によって再現率が低下する場合、再現率を向上させるアプローチとして以下のものが考えられる。

  • アンダーサンプリング(Undersampling): 多数クラスのサンプル数を減らすことで、クラスのバランスを調整することが可能となる。それらの手法としてはランダムに多数クラスの一部を削除する方法や、クラスの特徴に基づいてサンプルを削除する方法などがある。
  • オーバーサンプリング(Oversampling): 少数クラスのサンプル数を増やすことで、クラスのバランスを調整する。それらの手法としては、ランダムな複製や、少数クラスのサンプルを増やすための合成手法(SMOTE、ADASYNなど)がある。
  • クラスの重み付け(Class Weighting): 学習アルゴリズムにおいて、クラスの重みを調整することでバランスを調整することができる。この手法では、少数クラスに対して重みを大きくすることで、再現率を向上させることができる。多くの機械学習ライブラリは、クラスの重み付けをサポートしている。
  • 異常検出(Anomaly Detection): 少数クラスのサンプルを特定し、それを異常として検出する手法となる。少数クラスを正常と見なし、多数クラスとの異なりを検出することで、再現率を向上させることができる。
  • カスタム閾値の設定(Threshold Adjustment): 予測スコアの閾値を変更することで、クラスの予測結果を調整することができる。再現率を重視する場合は、閾値を下げて予測結果における陽性クラスの割合を増やす。

以下にそれぞれの手法の詳細と課題について述べる。

アンダーサンプリングの課題

不均衡なデータセットでは、少数派クラスのデータが極端に少なく、学習モデルが少数派クラスを適切に学習するのが難しい場合があり、アンダーサンプリングは、多数派クラスのデータを削減することで、クラスのバランスを改善し、モデルの性能を向上させることを目指すものとなる。しかし、アンダーサンプリングにはいくつかの課題が存在する。

  • 情報の損失: アンダーサンプリングでは、多数派クラスのデータを削減するため、データセットから一部のデータを削除する。これにより、情報の損失が発生する可能性がある。削除されたデータには重要なパターンや傾向が含まれているかもしれず、アンダーサンプリングを行う際は、情報の損失を最小限に抑える方法を考慮する必要がある。
  • モデルのバイアス: アンダーサンプリングによってデータセットのバランスが改善される一方で、少数派クラスのデータが大幅に減少するため、モデルが少数派クラスを適切に学習するのが難しくなる場合がある。モデルは、多数派クラスに偏った予測を行う傾向が生じる可能性があり、アンダーサンプリングを適用する際は、モデルのバイアスに注意しながら、適切なバランスを保つ必要がある。
  • サンプリング方法の選択: アンダーサンプリングでは、どのデータを削減するかを決定する必要がある。ランダムに削減する方法や、少数派クラスに対してより重要なデータを保持する方法など、さまざまなサンプリング方法があるが、適切なサンプリング方法を選択しないと、情報の損失やバイアスの増加などの問題が生じる可能性がある。また、データの削減が不十分である場合、アンダーサンプリングは効果を発揮せず、クラスの不均衡が残る可能性がある。
  • 汎化性能の低下: アンダーサンプリングは、モデルが少数派クラスを適切に学習するための手法だが、データセットのバランスを改善する一方で、全体のデータ数が減少するため、モデルの汎化性能が低下する可能性がある。特に、少数派クラスに対して十分な情報がない場合、モデルは少数派クラスを正確に予測することが難しくなる。したがって、アンダーサンプリングを行う際は、モデルの性能とバランスの改善をバランスさせる必要がある。

これらの課題に対処するためのアプローチとしては、アンダーサンプリングと他の手法(オーバーサンプリング、SMOTEなど)の組み合わせ、重み付け、アンサンブル学習などがある。また、特徴量の抽出などの適切な前処理手法を実施することも重要となる。

オーバーサンプリングの課題と手法

<課題>

機械学習におけるオーバーサンプリングは、少数派クラスのデータを複製または合成して、クラスのバランスを改善するアプローチであり、データセット内のクラスの不均衡を解消するために使用される手法の一つとなる。このオーバーサンプリングには以下のような課題が存在する。

  • 過学習のリスク: オーバーサンプリングでは、少数派クラスのデータを複製または合成することによって、そのデータの重みを増やす。これにより、モデルは少数派クラスのパターンを強く学習する傾向がある。しかし、過剰な少数派クラスのデータが存在する場合、モデルはそれらのデータに過度に適合し、新しいデータに対する汎化性能が低下するリスクが生じる。過学習を避けるために、適切なバランスとモデルの正則化手法の選択が重要となる。
  • 情報の重複: オーバーサンプリングでは、少数派クラスのデータを複製または合成するため、元のデータと類似したデータが生成される場合がある。これにより、データセット内の情報が重複し、モデルが冗長な情報を学習する可能性がある。また、重複したデータがモデルの性能に寄与しない場合、トレーニング効率が低下する可能性がある。重複を最小限に抑えるために、合成手法の適切な選択とパラメータの調整が重要となる。
  • モデルのバイアス: オーバーサンプリングでは、少数派クラスのデータを増やすことで、モデルのバイアスを減らすことができる。しかし、過度にオーバーサンプリングを行うと、モデルが少数派クラスに偏った予測を行う可能性がある。モデルは少数派クラスのパターンに敏感になりすぎて、実際のデータの特徴を適切に捉えることができなくなる。このような課題に対応するため、バランスのとれたオーバーサンプリング手法の使用と、モデルのバイアスを考慮したハイパーパラメータの調整が重要となる。

これらの課題に対処するためのアプローチとしては、アンダーサンプリングの場合と同様に、オーバーサンプリングとアンダーサンプリングの組み合わせや、合成手法の改善(例: SMOTEやGANを使用した合成)、さらに、クロスバリデーションや正則化手法、特徴選択、アンサンブル学習などの手法も使用することなどがある。以下にそれらの一部の詳細について述べる。

<少数クラスのサンプルを増やすための合成手法>

少数クラスのサンプルを増やすための合成手法として以下のようなアプローチがある。

  • SMOTE(Synthetic Minority Over-sampling Technique): SMOTEは、少数クラスのサンプルを基に合成サンプルを生成する手法となる。SMOTEは、少数クラスのサンプル間を補完するように新しいサンプルを作成し、データセットをバランスさせる。具体的には、少数クラスのサンプルに対してランダムに選択した近傍サンプルとの間を結ぶベクトルを計算し、それに比例して新しいサンプルを生成します。
  • ADASYN(Adaptive Synthetic Sampling): ADASYNは、SMOTEの改良版であり、データポイントの密度に応じてサンプルを生成する手法となる。ADASYNは、少数クラスのサンプルに対して近傍サンプルを考慮しながら合成を行うことで、データの偏りを補正しており、密度が低い領域ではより多くの合成サンプルを生成し、密度が高い領域では少ない数の合成サンプルを生成する。
  • SMOTE-NC(SMOTE for Nominal and Continuous features): SMOTE-NCは、SMOTEの拡張版で、名義変数(カテゴリ変数)と連続変数の両方を含むデータセットに適用することができるものとなる。SMOTE-NCでは、連続変数と名義変数の違いを考慮し、適切な合成手法を適用する。

これらの合成手法では、過学習のリスクやノイズの導入の可能性があるため、それらを闔閭した上で、適切なパラメータ設定やデータの特性に注意する必要がある。

クラスの重み付けの課題

クラスの重み付けには、通常は少数派クラスに対して高い重みを割り当て、多数派クラスには低い重みを割り当て、モデルが少数派クラスにより重点を置いて学習することが期待されるアプローチとなる。このクラスの重み付けのアプローチには以下のような課題が存在する。

  • パフォーマンスのバランス: クラスの重み付けは、少数派クラスの重要性を強調するために使用されるが、適切な重みの設定が必要となる。重み付けが不適切である場合、モデルは少数派クラスに過度に適合するか、逆に多数派クラスを無視する可能性がある。適切な重みの設定は、クラスの重要性とデータセットの特性に基づいて慎重に検討する必要がある。
  • パフォーマンスの低下: クラスの重み付けは、不均衡なデータセットにおけるパフォーマンス向上を目指す手法だが、不適切な重みの設定はパフォーマンスを低下させる可能性がある。例えば、過度に少数派クラスに重みを割り当てると、モデルは過剰に少数派クラスに適合し、多数派クラスの予測性能が低下する可能性がある。このため、クラスの重み付けはバランスを保ちながら適切に設定する必要がある。
  • パラメータの調整の困難さ: クラスの重み付けには、重みの値を適切に設定する必要がある。重みの値はハイパーパラメータとして扱われ、チューニングが必要となる。適切な重みの設定を見つけるためには、モデルの性能や目的関数の評価が必要だが、重みの値を適切に調整するためには、ドメイン知識やデータの理解が必要となる。

これらの課題に対処するためには、慎重な重みの設定とパラメータの調整が必要であり、クラスの重み付けは、他の手法(アンダーサンプリング、オーバーサンプリング)との組み合わせや、交差検証などのモデルの評価手法と組み合わせて使用することも有効となる。

異常検出アプローチの課題と手法

<課題>

不均衡なクラスに対する異常検出のアプローチにも、以下のような課題が存在する。

  • 少数派クラスの不足: 不均衡なクラスの場合、異常データは通常、少数派クラスに属している。そのため少数派クラスのデータが不足し、異常データを適切にモデル化することが難しくなる。モデルは、正常データに偏って学習し、異常データを検出する性能が低下する可能性がある。
  • ラベルの不均衡: 異常検出では、通常、異常データに対して陽性のラベルが付けられるが、異常データは正常データに比べて非常に少ないため、ラベルの不均衡が発生する。このような場合、モデルは異常データを十分に学習することができず、正常データに偏った予測を行う傾向がある。
  • フィーチャーの選択と抽出: 異常検出では、異常データの特徴を適切に捉えることが重要となる。しかし、異常データは通常、正常データとは異なる特徴を持つ場合がある。これらには適切な特徴の選択と抽出が必要であり、ドメイン知識やデータの理解が不可欠となる。
  • 評価の難しさ: 不均衡なクラスに対する異常検出では、一般的な評価指標(正解率、再現率など)の使用が困難となる。異常データが少ないため、モデルの評価が歪んでしまう可能性がある。適切な評価指標の選択と、結果の解釈には注意が必要となる。

これらの課題に対処するためには、適切なデータバランスの確保やサンプリング戦略の検討、異常データの生成や合成手法の利用、特徴選択や抽出の最適化、評価指標の適切な選択などが必要となる。

<手法>

クラスの不均衡によって低下した機械学習の再現率を向上させるための異常検知手法のアプローチには、以下のような方法がある。

  • 異常スコアに基づく手法: 異常検知手法では、通常データとは異なる振る舞いを示す「異常」と見なされるデータを検出する。異常スコアに基づく手法では、モデルによって計算されたデータの異常度を使用して、異常なデータを特定し、異常度が高いデータポイントは、異常として分類される可能性が高くなる。これにより、少数クラスの異常なインスタンスを検出し、再現率を向上させることができる。
  • アンダーサンプリングと組み合わせる手法: 不均衡データセットでは、多数クラスのサンプルが支配的であり、少数クラスの異常なインスタンスが埋もれてしまうことがある。この場合、多数クラスの一部をアンダーサンプリングすることによって、クラスのバランスを取ることができる。アンダーサンプリングを組み合わせて異常検知手法を適用することで、少数クラスの異常なインスタンスをより効果的に検出し、再現率を向上させることが可能となる。
  • 教師あり異常検知手法: 教師あり異常検知手法では、少数クラスの異常なインスタンスに対してラベル付けが行われ、異常検知モデルを教師あり学習として訓練することが可能となる。教師あり学習の手法を使用することで、少数クラスの異常なインスタンスをより正確に識別し、再現率を向上させることができる。
カスタム閾値の設定によるアプローチの課題

不均衡なクラスに対する機械学習において、カスタム閾値の設定は重要なアプローチだが、以下に示すような課題が存在する。

  • ラベルの不均衡: 不均衡なクラスでは、異常なデータは通常、少数派クラスに属する。そのため、カスタム閾値を設定する場合、異常データの数が非常に少ないため、適切な閾値を見つけることが困難となる。閾値を低く設定すると、偽陽性(正常なデータを異常として誤検出)が増える可能性があり、逆に閾値を高く設定すると、真陽性(異常なデータを正しく検出)の数が減る。
  • 評価指標の選択: 不均衡なクラスに対しては、通常の評価指標(正解率、再現率など)では適切な評価ができない。特に、カスタム閾値を設定した場合、真陽性率と偽陽性率のトレードオフを考慮する必要がある。例えば、異常データの検出を重視する場合は再現率が重要だが、偽陽性率も同時に上昇する可能性がある。
  • ドメイン知識の不足: カスタム閾値の設定には、ドメイン知識やデータの理解が重要となる。データの特性や異常データの分布に関する深い理解がない場合、適切な閾値を設定することが難しくなり、ドメインエキスパートのアドバイスや経験に頼ることが必要な場合もある。

これらの課題に対処するためには、以下のようなアプローチがある。

  • モデルの評価指標の適切な選択: 真陽性率と偽陽性率のバランスを考慮し、適切な評価指標を選択する。例えば、F1スコアやAUC-ROC(Receiver Operating Characteristic curveの下の面積)などが考慮されることがある。
  • カスタム閾値の調整と交差検証: カスタム閾値を設定する際には、交差検証を行って性能を評価し、適切な閾値を見つけるために調整する。閾値の選択においては、異常データと正常データの重要性のバランスを考慮し、ビジネス上の目標や制約条件を反映させることも重要となる。
  • ドメインエキスパートの知識の活用: ドメインエキスパートの知識や経験を活用し、適切な閾値の設定に役立てることも重要となる。異常なパターンや重要な特徴を理解することで、より適切な閾値を見つけることがで切る可能性がある。

このように不均衡データセットに対応する課題には様々なものがあり、単純なアプローチでは解が得られず、複数の手法を組み合わせることが必要になってくる。

オーバーサンプリングとアンダーサンプリングの組み合わせについて

以下にいくつかの一般的なオーバーサンプリングとアンダーサンプリングの組み合わせ手法について述べる。

  • オーバーサンプリングとアンダーサンプリングの組み合わせ: この手法では、少数派クラスのデータを増やすオーバーサンプリングと、多数派クラスのデータを減らすアンダーサンプリングを組み合わせて使用する。オーバーサンプリングには、SMOTEやADASYNなどの手法があり、これらの手法を用いて、少数派クラスのデータを合成して増やすことで、データセットのバランスを改善する。一方、アンダーサンプリングでは、多数派クラスからランダムにデータを削除することで、データセットのサイズを減らす。
  • オーバーサンプリングとアンダーサンプリングの反復: この手法では、オーバーサンプリングとアンダーサンプリングを複数回反復する。最初の反復ではオーバーサンプリングを行い、次の反復ではアンダーサンプリングを行うことで、データセットのバランスを調整する。この反復プロセスを繰り返すことで、モデルの学習がより安定し、性能が向上することがある。
  • オーバーサンプリングとアンサンブル学習の組み合わせ: この手法では、オーバーサンプリングとアンサンブル学習を組み合わせて使用する。オーバーサンプリングによって生成された合成データと、元のデータを用いて複数のモデルを学習し、それらの予測結果を組み合わせることで、より正確な予測が可能となる。アンサンブル学習手法としては、バギング(Bagging)やブースティング(Boosting)などが一般的に使用される。

これらの組み合わせ手法では、適切なサンプリング戦略やパラメータの設定が重要であり、ドメイン知識やデータの理解が必須となる。また、オーバーサンプリングによっては、合成データが元のデータに過剰に適合する過学習のリスクがあるため、注意が必要となる。

これらを実装際に、pythonライブラリのimbalanced-learnを用いることが簡便なアプローチとなる。

imbalanced-learnによる実装

<概要>

imbalanced-learnは、不均衡データセット(クラス間のサンプル数の不均衡が存在するデータセット)に対処するためのPythonのライブラリとなる。imbalanced-learnの主な機能と手法には以下のようなものがある。

  • オーバーサンプリング手法:オーバーサンプリングのアルゴリズムとして、SMOTE(Synthetic Minority Over-sampling Technique)やADASYN(Adaptive Synthetic Sampling)などの合成手法を提供している。これらの手法は、少数クラスのサンプルを合成することにより、クラスの不均衡を補正する。
  • アンダーサンプリング手法: ランダムアンダーサンプリングやクラスの重み付けに基づくアンダーサンプリングなど、少数クラスのサンプルを削除することにより、クラスの不均衡を補正することができる。
  • 組み合わせサンプリング手法: オーバーサンプリングとアンダーサンプリングを組み合わせることで、データセットのクラスの不均衡をより効果的に補正する手法を提供している。
  • 分類器: imbalanced-learnは、不均衡データセットに対して適用できる分類器のラッパーや、不均衡データに対応した評価指標を提供します。これにより、不均衡データセットでの分類タスクをサポートします。

<実装>

imbalanced-learnは、Scikit-learnのAPIスタイルに準拠しており、Scikit-learnのモデルやパイプラインと組み合わせて使用することができる。また、Pythonの一般的な機械学習フレームワークとの互換性もある。以下に具体的な実装例について述べる。

まず、pipコマンドを使用ししてimbalanced-learnのインストールする。

pip install imbalanced-learn

次にオーバーサンプリングの手法の一つであるSMOTE-NCのPythonによる実装にについて述べる。SMOTE-NCの手順は以下のようになる。

  1. まず、連続変数の部分に対して通常のSMOTEを適用する。
    1. 少数クラスの各サンプルに対して、近傍にあるk個の最近傍サンプルをランダムに選択する(通常はk=5などが使われる)。(ADASYNではサンプルする数をクラスのサンプル密度に合わせて調整するものとなる)
    2. 選択した少数クラスのサンプルとその近傍サンプルの間を結ぶベクトルを計算する。
    3. ベクトルをランダムに拡張し、新しいサンプルを生成する。生成されたサンプルは、少数クラスのサンプルと近傍サンプルの間の位置に存在する。
    4. この操作をデータセットの各少数クラスのサンプルに対して繰り返す。
  2. 次に、名義変数の部分に対して合成を行う。名義変数はカテゴリ値を持つ特徴量であり、通常は整数値や文字列で表される。SMOTE-NCでは、少数クラスの名義変数のサンプルに対して、最も近い近傍サンプルを見つけ、その近傍サンプルと同じ値を持つ名義変数の合成サンプルを生成する。
  3. 連続変数と名義変数の合成サンプルを組み合わせて新しい合成データポイントを作成する。

imbalanced-learnを利用すると、これらの手順がパラメータの設定で実現される。

from imblearn.over_sampling import SMOTENC

# データセットの特徴量とクラスラベルを準備する
X = # 特徴量行列(numpy配列など)
y = # クラスラベル(numpy配列など)

# 名義変数と連続変数の特徴量のインデックスを指定する
categorical_features = [0, 2, 4]  # 名義変数の特徴量のインデックス
continuous_features = [1, 3, 5]  # 連続変数の特徴量のインデックス

# SMOTE-NCを適用する
smotenc = SMOTENC(categorical_features=categorical_features, random_state=42)
X_resampled, y_resampled = smotenc.fit_resample(X, y)

上記の例では、imbalanced-learnのSMOTENCクラスを使用してSMOTE-NCを実行している。categorical_featuresには名義変数の特徴量のインデックスを、continuous_featuresには連続変数の特徴量のインデックスを指定し、fit_resampleメソッドを呼び出すことで、オーバーサンプリングされた特徴量行列X_resampledと対応するクラスラベルy_resampledを取得している。

まとめ:再現率100%を実現するために

再現率を100%にすることは、実際のデータセットにおいては非常に困難なタスクとなる。なぜなら、再現率を100%にするためには、全ての異常なインスタンスを完全に検出する必要があるからで、そのような場合、完全な再現率を達成することは現実的ではないためである。しかし現実には、再現率100%つまり抜け漏れのない検索を実現することは、リスク絡みのタスクにおいて度々要求される目標となる。

それらを実現させるためには、上記に述べたようなアプローチ、その中でも特に不均衡なデータに対する対処が重要であり、ドメイン知識を利用してそれらを最適化する必要がある。また、ここで述べた不均衡なデータに対する対処は、”スモールデータ学習、論理と機械学習との融合、局所/集団学習“で述べているスモールデータでの機械学習を解くためのヒントにもなっている。

コメント

  1. […] 再現率100%の実現のための課題と実装 […]

  2. […] 再現率100%の実現のための課題と実装 […]

  3. […] ング)を使用して、各クラスのバランスを取る。これはアンサンブル学習の性能を向上させるのに役立つ。”リスクタスク対応の為の再現率100%の実現の課題と実装“も参照のこと。 […]

  4. […] ンプリング、アンダーサンプリングなどのバランスの取れたデータセットを作成する手法が役立つ。詳細は”リスクタスク対応の為の再現率100%の実現の課題と実装“も参照のこと。 […]

  5. […] は”リスクタスク対応の為の再現率100%の実現の課題と実装“も参照のこと。 […]

  6. […] 減らす)などの戦略を採用できる。また、クラスの重要性に応じてウェイトを調整することも考えられる。”リスクタスク対応の為の再現率100%の実現の課題と実装“も参照のこと。 […]

タイトルとURLをコピーしました