このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
このトピックでは,逐次特徴選択の基本を説明し,カスタム基準と関数sequentialfs
を使用して逐次的に特徴量を選択する例を示します。
一般的な特徴選択のメソッドは,"逐次特徴選択"です。このメソッドには2つの成分があります。
メソッドには2つのバリアントがあります。
统计和机器学习工具箱™には,逐次特徴選択の関数がいくつか用意されています。
ステップワイズ回帰は,特に最小二乗近似用に設計された逐次特徴選択手法です。関数stepwiselm
とstepwiseglm
は,最小二乗基準でのみ可能な最適化を利用します。その他の逐次特徴選択アルゴリズムと異なり,ステップワイズ回帰は,名前と値のペアの引数“标准”
によって指定された基準に基づいて,追加されていた特徴量を削除するか,削除されていた特徴量を追加することができます。
sequentialfs
は,カスタム基準を使用して逐次特徴選択を実行します。入力引数には,予測子データ,応答データ,基準関数を実装するファイルに対する関数ハンドルなどがあります。データの特性または学習アルゴリズムのパフォーマンスを測定する基準関数を定義できます。オプションの入力により,SFSまたはSBS,必須または除外される特徴量,特徴量サブセットのサイズを指定できます。関数はcvpartition
とcrossval
を呼び出して,さまざまな候補セットで基準を評価します。
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つの特徴量(X
の1
、4
、5
、10
列)のみが含まれている次元削減されたモデルです。
次元削減されたモデルの逸脱度は,完全なモデルの逸脱度より大きくなっています。しかし,他のいずれかの特徴量を1つ追加しても,オプション構造体で設定した絶対許容誤差maxdev
を上回って基準値が低下することはありません。影響のない特徴量の追加により,逸脱度は自由度1のカイ二乗分布をもつ量だけ減少します。有意な特徴量を追加すると,逸脱度がより大きく変化します。maxdev
をchi2inv (.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;结束
sequentialfs
|stepwiseglm
|stepwiselm