主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

特徴選択の紹介

このトピックでは,特徴選択アルゴリズムの基本と,统计和机器学习工具箱™で利用できる特徴選択関数について説明します。

特徴選択アルゴリズム

"特徴選択"では,測定した特徴(予測子変数)のサブセットのみを選択してモデルを作成することによりデータの次元を削減します。特徴選択アルゴリズムは、必要な、もしくは除外すべき特徴量、サブセットのサイズなどの制約のもとで、測定された応答を最適にモデル化する予測子のサブセットを探索します。特徴選択の主なメリットは、予測性能を改善し、より高速で費用対効果の高い予測子を提供し、データ生成プロセス[1]の理解を深められることです。使用する特徴量の数が多すぎると,すべての特徴量が関連性を持ち応答変数に関する情報を含んでいたとしても,予測性能が低下する場合があります。

特徴選択アルゴリズムは次の 3.つの種類に分けることができます。

  • フィルタータイプ特徴選択— フィルター タイプ特徴選択アルゴリズムは、特徴量の分散や特徴量の応答に対する関連度といった特徴量の特性によって特徴量の重要度を測定します。データの前処理ステップの一部として重要な特徴量を選択し、選択した特徴量を使用してモデルを学習させます。そのため、フィルター タイプ特徴選択は学習アルゴリズムとは無相関です。

  • ラッパータイプ特徴選択— ラッパー タイプ特徴選択アルゴリズムは、特徴量のサブセットを使用して学習を開始し、その後に選択基準を使用して特徴量を追加または削除します。選択基準は、特徴量を追加または削除することによるモデル性能の変化を直接測定します。アルゴリズムは、停止条件が達成されるまで学習とモデルの改善を繰り返します。

  • 組み込み型特徴選択— 組み込み型特徴選択アルゴリズムは、モデルの学習プロセスの一部として特徴量の重要度を学習します。一度モデルを学習させると、学習済みモデルの中に特徴量の重要度が得られます。この種のアルゴリズムでは、特定の学習プロセスに対してうまく機能する特徴量が選択されます。

さらに,アルゴリズムが特徴量を逐次にランク付けするかどうかによって,特徴選択アルゴリズムを分類できます。最小冗余最大相关性(MRMR)アルゴリズムとステップワイズ回帰は、逐次特徴選択アルゴリズムの 2 つの例です。詳細については、逐次特徴選択を参照してください。

部分依存プロット(PDP)および個別条件付き期待値(ICE)プロットを作成することにより,予測子変数の重要度を視覚的に比較できます。詳細については,局部依赖を参照してください。

分類問題の場合、特徴量を選択した後、2.つのモデル (たとえば、完全なモデルと、予測子のサブセットを使用して学習したモデル) を学習させ、関数比较控股testcholdout、またはtestckfoldを使用して精度を比較することができます。

元々の特徴量とその単位が重要であり,モデリングの目標が影響力のあるサブセットの特定である場合,特徴選択は特徴変換よりも適切です。カテゴリカル特徴量が存在し,数値への変換が不適切な場合,特徴選択は次元削減の主要な方法になります。

特徴選択関数

统计和机器学习工具箱には、特徴選択のために複数の関数が用意されています。対象の問題と特徴量のデータ型に基づき、適切な特徴選択関数を選択してください。

フィルタータイプ特徴選択

関数 サポートされる問題 サポートされるデータ型 説明
fscchi2 分類 明确的特徴量および連続的特徴量

個々のカイ二乗検定を使用して各予測子変数が応答変数から独立しているかどうかを調べた後,カイ二乗検定統計量のp値を使用して特徴量をランク付けします。

例については,関数fscchi2のリファレンス ページを参照してください。

fscmrmr 分類 明确的特徴量および連続的特徴量

最小冗余最大相关性(MRMR)アルゴリズムを使用して逐次的に特徴量をランク付けします。

例については,関数fscmrmrのリファレンス ページを参照してください。

fscnca 分類 連続的特徴量

近傍成分分析(NCA)を対角的に適用することにより,特徴量の重みを特定します。これは,観測値間のペアワイズ距離を使用して応答を予測する距離ベースの教師ありモデルにおいて特徴量の重要度を推定するのに最適なアルゴリズムです。

詳細については,関数fscncaのリファレンスページと以下のトピックを参照してください。

fsrftest 回帰 明确的特徴量および連続的特徴量

F検定を使用して各予測子の重要度を個別に調べた後,F検定統計量のp値を使用して特徴量をランク付けします。各F検定は,予測子変数値でグループ化された応答値が,平均が同じである複数の母集団から抽出されたという仮説を,母集団の平均はすべて同じではないという対立仮説に対して検定します。

例については,関数fsrftestのリファレンス ページを参照してください。

fsrnca 回帰 連続的特徴量

近傍成分分析(NCA)を対角的に適用することにより,特徴量の重みを特定します。これは,観測値間のペアワイズ距離を使用して応答を予測する距離ベースの教師ありモデルにおいて特徴量の重要度を推定するのに最適なアルゴリズムです。

詳細については,関数fsrncaのリファレンスページと以下のトピックを参照してください。

弗拉普拉斯阶 教師なし学習 連続的特徴量

ラプラシアンスコアを使用して特徴量をランク付けします。

例については,関数弗拉普拉斯阶のリファレンス ページを参照してください。

救济 分類および回帰 すべて 明确的またはすべて連続的な特徴量

分類にはReliefFアルゴリズム、回帰にはRReliefFアルゴリズムを使用して特徴量をランク付けします。これは,観測値間のペアワイズ距離を使用して応答を予測する距離ベースの教師ありモデルにおいて特徴量の重要度を推定するのに最適なアルゴリズムです。

例については,関数救济のリファレンス ページを参照してください。

顺序 分類および回帰 すべて 明确的またはすべて連続的な特徴量

カスタム基準を使用して逐次的に特徴量を選択します。データの特性を測定して特徴量を選択する関数を定義して,関数ハンドルを関数顺序に受け渡します。名前と値のペアの引数“方向”を使用して、逐次前方選択または逐次後方選択を指定できます。顺序は交差検証を使用して基準を評価します。

fscncafsrncaは、組み込み型特徴選択関数とみなすこともできます。これらは、学習済みモデル オブジェクトを返し、オブジェクト関数预测および损失を使用できるためです。しかし、通常、これらのオブジェクト関数はアルゴリズムの正則化パラメーターを調整するために使用されます。関数fscncaまたはfsrncaでデータ前処理ステップの一部として特徴量を選択した後,問題に別の分類または回帰アルゴリズムを適用することができます。

ラッパータイプ特徴選択

関数 サポートされる問題 サポートされるデータ型 説明
顺序 分類および回帰 すべて 明确的またはすべて連続的な特徴量

カスタム基準を使用して逐次的に特徴量を選択します。教師あり学習アルゴリズムを実装する関数または学習アルゴリズムの性能を測定する関数を定義し,関数ハンドルを関数顺序に受け渡します。名前と値のペアの引数“方向”を使用して、逐次前方選択または逐次後方選択を指定できます。顺序は交差検証を使用して基準を評価します。

例については,関数顺序のリファレンスページと以下のトピックを参照してください。

組み込み型特徴選択

関数 サポートされる問題 サポートされるデータ型 説明
ClassificationDiscriminantモデルオブジェクトのDeltaPredictorプロパティ 線形判別分析による分類 連続的特徴量

fitcdiscrを使用して線形判別分析分類器を作成します。ClassificationDiscriminantとして返される学習済み分類器のDeltaPredictorプロパティには,係数の大きさが保存されています。この値はDeltaPredictorで予測子の重要度の尺度として使用できます。この分類器は、2.つの正則化パラメーターガンマとデルタを使用して冗長な予測子を特定および削除します。これらのパラメーターの適切な値は,関数cvshrinkまたは名前と値のペアの引数“OptimizeHyperparameters”を使用して取得できます。

例については,以下のトピックを参照してください。

菲切克templateLinear 高次元データのマルチクラス学習の線形分類 連続的特徴量

菲切克と,templateLinearで定義された線形バイナリ学習器を使用して、線形分類モデルに学習をさせます。套索正則化を使用するには、templatelinear“正规化”“套索”に指定します。

たとえば,交差検証の使用による適切な套索ペナルティの特定を参照してください。この例は,kfoldLossを使用して異なる強度値でモデルを評価することにより、適した 套索ペナルティの強度を決定します。kfoldEdgekfoldMargin损失、または保证金を使用してモデルを評価することもできます。

fitclinear 高次元データのバイナリ学習の線形分類 連続的特徴量

fitclinearを使用して線形分類モデルを学習させます。套索正則化を使用するには,fitclinear“正规化”“套索”に指定します。

たとえば,交差検証AUCの使用による適切な套索ペナルティの特定を参照してください。この例は,AUC の値を使用して異なる強度値でモデルを評価することにより、適した LASSO ペナルティの強度を決定します。kfoldPredictを使用して交差検証事後クラス確率を計算し,性能曲线を使用して AUCの値を計算します。kfoldEdgekfoldLosskfoldMargin损失保证金、または预测を使用してモデルを評価することもできます。

菲特尔格普 回帰 明确的特徴量および連続的特徴量

菲特尔格普を使用してガウス過程回帰 (探地雷达)モデルを学習させます。関連度自動決定 (ARD)を使用するには、名前と値のペアの引数“内核函数”を設定します。利用可能なオプションは“ardsquaredexponential”“ardexponential”“ardmatern32”“ardmatern52”、および“ardrationalquadratic”です。KernelInformationプロパティに格納された負の学習済み特性長スケールの指数を使用して、予測子の重みを求めます。

例については,以下のトピックを参照してください。

fitrlinear 高次元データの線形回帰 連続的特徴量

fitrlinearを使用して線形回帰モデルを学習させます。套索正則化を使用するには,fitrlinear“正规化”“套索”に指定します。

例については,以下のトピックを参照してください。

套索 線形回帰 連続的特徴量

套索を使用して套索の正則化で線形回帰モデルを学習させます。名前と値のペアの引数“阿尔法”を使用してリッジ最適化に対する套索最適化の重みを指定できます。

例については,関数套索のリファレンスページと以下のトピックを参照してください。

lassoglm 一般化線形回帰 連続的特徴量

lassoglmを使用して套索の正則化で一般化線形回帰モデルを学習させます。名前と値のペアの引数“阿尔法”を使用してリッジ最適化に対する套索最適化の重みを指定できます。

詳細については,関数lassoglmのリファレンスページと以下のトピックを参照してください。

ClassificationBaggedEnsembleoobPermutedPredictorImportance** バギングされた決定木(ランダムフォレストなど)のアンサンブルによる分類 明确的特徴量および連続的特徴量

fitcensembleを使用し、“方法”“包”に指定することで,木学習器でバギングされたアンサンブル分類を学習させます。その後,oobPermutedPredictorImportanceを使用して並べ替えによる 现成的予測子の重要度の推定を計算します。この関数は、応答の予測においてモデル内の予測子変数がどの程度影響を与えるかを測ります。

例については,関数のリファレンスページとトピックoobPermutedPredictorImportanceを参照してください。

回归分析oobPermutedPredictorImportance** バギングされた決定木(ランダムフォレストなど)のアンサンブルによる回帰 明确的特徴量および連続的特徴量

fitrensembleを使用し、“方法”“包”に指定することで,木学習器でバギング回帰アンサンブルを学習させます。その後,oobPermutedPredictorImportanceを使用して並べ替えによる 现成的予測子の重要度の推定を計算します。この関数は、応答の予測においてモデル内の予測子変数がどの程度影響を与えるかを測ります。

例については,関数oobPermutedPredictorImportanceのリファレンスページおよびランダムフォレストの予測子の選択を参照してください。

分类符号predictorImportance** 決定木のアンサンブルによる分類 明确的特徴量および連続的特徴量

fitcensembleを使用して,木学習器でアンサンブル分類を学習させます。その後,predictorImportanceを使用して、すべての予測子について分割によるリスク変動を合計し、この合計を枝ノード数で除算することにより、アンサンブルの予測子の重要度の推定を計算します。

例については,関数predictorImportanceのリファレンス ページを参照してください。

分类树predictorImportance** 決定木による分類 明确的特徴量および連続的特徴量

fitctreeを使用して分類木を学習させます。その後,predictorImportanceを使用して、すべての予測子について分割によるリスク変動を合計し、この合計を枝ノード数で除算することにより、木の予測子の重要度の推定を計算します。

例については,関数predictorImportanceのリファレンス ページを参照してください。

RegressionEnsemblepredictorImportance** 決定木のアンサンブルによる回帰 明确的特徴量および連続的特徴量

fitrensembleを使用して,木学習器でアンサンブル回帰を学習させます。その後,predictorImportanceを使用して、すべての予測子について分割によるリスク変動を合計し、この合計を枝ノード数で除算することにより、アンサンブルの予測子の重要度の推定を計算します。

例については,関数predictorImportanceのリファレンス ページを参照してください。

回归树predictorImportance** 決定木による回帰 明确的特徴量および連続的特徴量

fitrtreeを使用して回帰木を学習させます。その後,predictorImportanceを使用して,すべての予測子について分割による平均二乗誤差(MSE)の変動を合計し,この合計を枝ノード数で除算することにより,木の予測子の重要度の推定を計算します。

例については,関数predictorImportanceのリファレンス ページを参照してください。

stepwiseglm*** 一般化線形回帰 明确的特徴量および連続的特徴量

stepwiseglmを使用して,ステップワイズ回帰により一般化線形回帰モデルをあてはめます。あるいは,fitglmを使用して線形回帰モデルをあてはめた後、一步を使用してモデルを調整することもできます。ステップワイズ回帰は、応答変数の説明における各項の統計的な重要性に基づき、モデルから項を追加したり削除するための体系的な方法です。

詳細については,関数stepwiseglmのリファレンスページと以下のトピックを参照してください。

逐步地*** 線形回帰 明确的特徴量および連続的特徴量

逐步地を使用して,ステップワイズ回帰により線形回帰モデルをあてはめます。あるいは,fitlmを使用して線形回帰モデルをあてはめた後、一步を使用してモデルを調整することもできます。ステップワイズ回帰は、応答変数の説明における各項の統計的な重要性に基づき、モデルから項を追加したり削除するための体系的な方法です。

詳細については,関数逐步地のリファレンスページと以下のトピックを参照してください。

* *木ベースのアルゴリズムでは,交互作用検定を使用して最適な分割予測子を選択するために,“PredictorSelection”“interaction-curvature”に指定します。交互作用検定は、多くの無関係な変数が存在する状況下で重要な変数を特定するのに役立ちます。また、多数の予測子が学習データに含まれている場合、学習について“NumVariablesToSample”“所有”に指定します。このようにしないと,重要度が過小評価されて一部の予測子が選択されない可能性があります。詳細については,fitctreefitrtreeおよびtemplateTreeを参照してください。

***stepwiseglmおよび逐步地は別の学習関数のラッパーとして使用できないため,ラッパータイプの関数ではありません。ただし,これら2つの関数はラッパータイプのアルゴリズムを使用して重要な特徴量を見つけます。

参照

[1] 《变量和特征选择导论》,《机器学习研究杂志》,2003年第3卷,第1157-1182页。

参考

(生物信息学工具箱)

関連するトピック