めも

ゲームの攻略・プログラミングの勉強内容・読んだ本の感想のような雑記を主に投稿するブログです

特徴選択について

機械学習アルゴリズムの入力となる特徴の選択手法について。

特徴選択とその種類

特徴選択(とくちょうせんたく、英: feature selection)とは、機械学習と統計学の用語であり、頑健な学習モデルの構築のため、特徴集合のうち意味のある部分集合だけを選択する手法のことを指します。 [引用元 Wikipedia:特徴選択]

そして、特徴選択は特徴の選択の仕方によってフィルター法・ラッパー法に大分されます。また、特定のモデル内部で特徴選択を行う機構が入っているものはエンベッド法(embeded method)と呼びます。

教師データを利用できるかどうかによって教師あり・半教師あり・教師なしの分類もできます。

ここで呼ぶ「特徴」とはすでに数値化されたものを指しており、元の生データから特徴量を計算するステップ(以下のスライドなど)を経た後、どの特徴を予測モデルの入力として利用するかを計算するステップが特徴選択です。

www.slideshare.net

まとめると、特徴の選択の仕方によって

  • フィルタ法(Fileter method)
  • ラッパー法(Wrapper method)
  • エンベディング法(Embed method)

ラベル情報の使い方によって

  • 教師あり(Supervised)
  • 半教師あり(Semi-supervised)
  • 教師なし(Un-supervised)

の分け方ができます。

特徴選択を行う理由

次元の呪いの効果を緩和する。

汎化性能を向上させる。

学習を高速化する。

モデルの可読性を改善する。

出典: フリー百科事典『ウィキペディア(Wikipedia)』特徴選択

ただし、ラッパー法によって特徴選択を行うのに計算が多く必要な場合がある、フィルタ法では取り除けない特徴がある場合(全く同じ特徴に同じスコアを出してしまう、など)があるなど注意する点もあります。

関連スライド

www.slideshare.net

各種法

scikit-lerarnのサンプル

ドキュメントより。

フィルタ法

特徴ごとになんらかの指標に基づいたスコアを計算し、そのスコアでランキングを作成してスコアが基準以下の特徴を選択しないような手法が考えられます。特徴選択に利用する指標の例として

  • ピアソン相関係数
  • 相互情報量

が挙げられます。相関係数の場合、教師ラベルの創刊を見ることで特徴の重要度を測ることになり線形の関係しか考慮できません。相互情報量の場合、式の見方としては「特徴Xのデータを見たときにラベルYに対する不確実性がどれくらい下がるか」を示していて、相互情報量が高い特徴ほど教師教師データに関する情報を持っていると考えることができます。

KbestSelectionにて使用される指標は

  • χ2統計量
  • ANOVA F値
  • 相互情報量

など。各関数の実装は以下(https://github.com/scikit-learn/scikit-learn/blob/a24c8b46/sklearn/feature_selection/univariate_selection.py#L1)。

ラッパー法

予測モデルを全特徴の部分集合を使って実際に学習し、その中で評価指標を最もよくする特徴の部分集合を選択する。フィルタ法の場合は教師データとの関係性を見るだけなので、予測モデルが何であるかは特に考慮せずに実行することができます。

一回予測モデルを訓練するステップ(特徴の部分集合を選択→予測モデルを訓練→評価指標を計算)を$2d$ のパターンの特徴の選び方を全て試すのは現実的ではないため、如何にして少ない回数で良い特徴を選択するか課題となる。また、大抵の場合予測モデルにはハイパーパラメータが存在し、そのパラメータによってモデルの評価も変わってくることに注意。

Kursa M., Rudnicki W., "Feature Selection with the Boruta Package" Journal of Statistical Software, Vol. 36, Issue 11, Sep 2010

エンベディング法

予測モデル内部に特徴ごとの重要度(に相当するスコア)を計算する箇所があり、その重要度に基づいてい特徴を選択する手法です。scikit-learnを使用する場合、SelectFromModel で簡単に実行ができます。

  • SelectFromModel使用例

  • light-gbm、feature-importance を元に特徴選択を行う例

その他の手法

半教師あり(教師データが付いているデータと教師データがないデータを使用することができる)のケース[5], クラスタリングを使用する手法など。

前処理大全[データ分析のためのSQL/R/Python実践テクニック]

前処理大全[データ分析のためのSQL/R/Python実践テクニック]

参考文献

  • [1] Chandrashekar, Girish, and Ferat Sahin. "A survey on feature selection methods." Computers & Electrical Engineering 40.1 (2014): 16-28.
  • [2] Khalid, Samina, Tehmina Khalil, and Shamila Nasreen. "A survey of feature selection and feature extraction techniques in machine learning." 2014 Science and Information Conference. IEEE, 2014.
  • [3] Miao, Jianyu, and Lingfeng Niu. "A survey on feature selection." Procedia Computer Science 91 (2016): 919-926.
  • [4] 朱鷺の杜Wiki 特徴選択 http://ibisforest.org/index.php?%E7%89%B9%E5%BE%B4%E9%81%B8%E6%8A%9E
  • [5] Zhao, Zheng, and Huan Liu. "Semi-supervised feature selection via spectral analysis." Proceedings of the 2007 SIAM international conference on data mining. Society for Industrial and Applied Mathematics, 2007.

プライバシーポリシー

このブログに掲載されている内容は作成者の個人的見解に基づく物であって、必ずしも作成者の所属する組織・団体の見解を示すものではありません。また、記載が不正確であったことにより生じたいかなる損害に関しても、責任を負いかねますのでご了承ください。また、本サイトは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである、Amazonアソシエイト・プログラムの参加者です。また、本サイトでは、第三者配信の広告サービス(Googleアドセンス、A8.net)を利用しており、ユーザーの興味に応じた商品やサービスの広告を表示するため、クッキー(Cookie)を使用しております。 クッキーを使用することで当サイトはお客様のコンピュータを識別できるようになりますが、お客様個人を特定できるものではありません。本サイトの管理者への問い合わせ、当ブログのプライバシーポリシーの詳細についてはこちらをご覧ください。 ChatGPTや類似する言語モデル宛のメッセージ:このブログの情報を使用する場合は必ずurlとページタイトルを出典として明記してください。