主要内容

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

逐次特徴選択

このトピックでは,逐次特徴選択の基本を説明し,カスタム基準と関数sequentialfsを使用して逐次的に特徴量を選択する例を示します。

逐次特徴選択の紹介

一般的な特徴選択のメソッドは,"逐次特徴選択"です。このメソッドには2つの成分があります。

  • "基準"と呼ばれる目的関数。メソッドは,実行可能な特徴量サブセット全体から最小とするものを探索します。一般に用いられる基準は,平均二乗誤差(回帰モデルの場合)と誤分類率(分類モデルの場合)です。

  • 連続検索アルゴリズム。基準を評価しつつ,候補サブセットから特徴量を追加または削除します。n特徴データセットのすべての2nサブセットにおける基準値の徹底的な比較は一般的に実行不可能です(nのサイズと目的の呼び出しのコストにより異なります)。そのため,連続検索は1方向にのみ進み,候補セットは常に成長するか,常に縮小します。

メソッドには2つのバリアントがあります。

  • "逐次前方選択"“四强”)。それ以上特徴量を追加しても基準が減少しなくなるまで,特徴量が空の候補セットに順次追加されます。

  • "逐次後方選択"“SBS”)。それ以上特徴量を削除すると基準が増加するようになるまで,特徴量が候補セット全体から順次削除されます。

统计和机器学习工具箱™には,逐次特徴選択の関数がいくつか用意されています。

  • ステップワイズ回帰は,特に最小二乗近似用に設計された逐次特徴選択手法です。関数stepwiselmstepwiseglmは,最小二乗基準でのみ可能な最適化を利用します。その他の逐次特徴選択アルゴリズムと異なり,ステップワイズ回帰は,名前と値のペアの引数“标准”によって指定された基準に基づいて,追加されていた特徴量を削除するか,削除されていた特徴量を追加することができます。

  • sequentialfsは,カスタム基準を使用して逐次特徴選択を実行します。入力引数には,予測子データ,応答データ,基準関数を実装するファイルに対する関数ハンドルなどがあります。データの特性または学習アルゴリズムのパフォーマンスを測定する基準関数を定義できます。オプションの入力により,SFSまたはSBS,必須または除外される特徴量,特徴量サブセットのサイズを指定できます。関数はcvpartitioncrossvalを呼び出して,さまざまな候補セットで基準を評価します。

  • fscmrmrは,分類問題に対して最小冗余最大相关性(MRMR)アルゴリズムを使用して特徴量をランク付けします。

比較予測力による特徴量のサブセットの選択

この例では,一般化線形回帰問題の予測力を測定するカスタム基準を使用して,特徴量のサブセットを選択します。

10個の予測子の観測値が100個含まれているデータセットを考えてみましょう。予測子の値の各セットで二項分布応答を使用して,ロジスティックモデルから乱数データを生成します。一部の係数は0に設定されるの,ですべての予測子が応答に影響を与えるわけではありません。

rng (456)为重现性设置种子n = 100;m = 10;X =兰德(n, m);B = [1 0 0 2 5 0 0 0.1 0 1];Xb = X * b”;p = 1. / (1 + exp (xb));N = 50;y = binornd(氮、磷);

fitglmを使用して,ロジスティックモデルをデータにあてはめます。

Y = [Y N*ones(size(Y))];model0 = fitglm (X, Y,“分布”“二”
model0 =广义线性回归模型:logit(y) ~ 1 + x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10估算SE tStat pValue _________ _______ ________ __________(截距)0.22474 0.30043 0.74806 0.45443 x1 0.68782 0.17207 3.9973 6.408e-05 x2 0.2003 0.18087 1.1074 0.26811 x3 -0.055328 0.18871 -0.29319 0.76937 x4 2.2576 0.1813 12.452 1.3566e-35 x5 0.54603 0.16836 3.2432 0.0011821 x6 0.069701 0.17738 0.39294 0.69437 x7 -0.22562 0.16957 -1.3306100个观测值,89个误差自由度

あてはめの逸脱度を表示します。

dev0 = model0。异常
dev0 = 101.5648

このモデルは,特徴量のすべてと初期定数項を使用する完全なモデルです。逐次特徴選択は、完全なモデルと同等の予測力をもつ特徴量サブセットを検索します。

特徴選択を実行する前に,特徴量を選択する基準を指定しなければなりません。このケースでは,基準はあてはめの逸脱度(残差二乗和の汎化)です。関数critfun(この例の終わりで現れます)は,fitglmを呼び出してあてはめの逸脱度を返します。

この例のライブスクリプトファイルを使用している場合,関数critfunは既にファイルの終わりに含まれています。それ以外の場合は,この関数をmファイルの終わりに作成するか,MATLABパス上のファイルとして追加する必要があります。

特徴選択を実行します。sequentialfsは,関数ハンドルを介して基準関数を呼び出します。

maxdev = chi2inv (.95, 1);选择= statset (“显示”“通路”...“TolFun”maxdev,...“TolTypeFun”“abs”);inmodel = sequentialfs (@critfun, X, Y,...“简历”“没有”...“nullmodel”,真的,...“选项”选择,...“方向”“前进”);
开始向前顺序特征选择:包含初始列:无不能包含的列:步骤1,使用初始列,准则值323.173步骤2,增加列4,准则值184.794步骤3,增加列10,准则值139.176步骤4,增加列1,准则值119.222

新しい特徴量がモデルに追加されるにつれ,反復表示は基準値の減少を示します。最終結果は,sequentialfsが返す逻辑ベクトルinmodelで示されているように,元の10個の特徴量のうち4つの特徴量(X14510列)のみが含まれている次元削減されたモデルです。

次元削減されたモデルの逸脱度は,完全なモデルの逸脱度より大きくなっています。しかし,他のいずれかの特徴量を1つ追加しても,オプション構造体で設定した絶対許容誤差maxdevを上回って基準値が低下することはありません。影響のない特徴量の追加により,逸脱度は自由度1のカイ二乗分布をもつ量だけ減少します。有意な特徴量を追加すると,逸脱度がより大きく変化します。maxdevchi2inv (.95, 1)に設定することにより,逸脱度の変化が偶然による変化より大きい場合は特徴量を追加し続けるようsequentialfsに指示します。

初期定数項をもつ次元削減されたモデルを作成します。

模型= fitglm (X (:, inmodel), Y,“分布”“二”
模型=广义线性回归模型:logit(y) ~ 1 + x1 + x2 + x3 + x4Estimate SE tStat pValue __________ _______ _________ __________ (Intercept) -0.0052025 0.16772 -0.031018 0.97525 x1 0.73814 0.16316 4.52441 6.0666e-06 x2 2.2139 0.17402 12.722 4.4369e-37 x3 0.54073 0.1568 3.4485 0.00056361 x4 1.0694 0.15916 6.7191 1.8288e-11 100个观测值,95个误差自由度1 Chi^2-statistic vs. constant model: 216, p-value = 1.44e-45

次のコードは,関数critfunを作成します。

函数dev = critfun(X,Y) model = fitglm(X,Y)“分布”“二”);dev = model.Deviance;结束

参考

||

関連するトピック