このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
最小冗余最大相关性(MRMR)アルゴリズムを使用した分類用の特徴量のランク付け
は,MRMRアルゴリズムを使用して特徴量(予測子)をランク付けします。テーブルidx
= fscmrmr (资源描述
,ResponseVarName
)资源描述
には予測子変数と応答変数が含まれていて,ResponseVarName
は资源描述
内の応答変数の名前です。関数はidx
を返します。これには予測子の重要度順に並べ替えられた予測子のインデックスが含まれます。idx
を使用して,分類問題用の重要な予測子を選択できます。
標本データを読み込みます。
负载电离层
重要度に基づいて予測子をランク付けします。
[idx,分数]= fscmrmr (X, Y);
予測子の重要度スコアの棒グラフを作成します。
栏(分数(idx))包含(“预测排名”) ylabel (“预测重要性分数”)
最も重要な予測子の1番目と2番目の間のスコアの下落は大きいですが,6番目の予測子の後は比較的小さいです。重要度スコアの下落は,特徴選択の信頼度を表します。したがって,大きな下落は,ソフトウェアが確実に最も重要な予測子を選択していることを示します。小さな下落は,予測子の重要度の差が有意ではないことを示します。
上第五位つの最も重要な予測子を選択します。X
におけるこれらの予測子の列を求めます。
idx (1:5)
ans =1×55 4 1 7 24
X
の5列目が,Y
の最も重要な予測子です。
fscmrmr
を使用して重要な予測子を検出します。次に,testckfold
を使用して,完全分類モデル(すべての予測子を使用する)と上第五位つの重要な予測子を使用する次元削減されたモデルの精度を比較します。
census1994データセットを読み込みます。
负载census1994
census1994
内のテーブルadultdata
には,個人の年収が50000美元を超えるかどうかを予測するための,米国勢調査局の人口統計データが含まれています。テーブルの最初の3行を表示します。
头(adultdata, 3)
ans =3×15表年龄workClass fnlwgt教育education_num marital_status种族职业关系性capital_gain capital_loss hours_per_week native_country薪水 ___ ________________ __________ _________ _____________ __________________ _________________ _____________ _____ ____ ____________ ____________ ______________ ______________ ______ 39 State-gov77516单身汉13未婚Adm-clerical家族的白人男性2174 0 40美国< = 50 k 50 Self-emp-not-inc 83311单身汉13 Married-civ-spouse Exec-managerial丈夫13美国白人男性0 0 < = 50 k 38私人2.1565 e + 05 HS-grad 9离婚Handlers-cleaners家族的白人男性40 0 0美国< = 50 k
fscmrmr
の出力引数には,関数によってランク付けされた変数のみが含まれます。テーブルを関数に渡す前に、出力引数の順序がテーブルの順序と一致するように、応答変数と重みなどのランク付けを行わない変数をテーブルの最後に移動します。
テーブルadultdata
では3番目の列fnlwgt
はサンプルの重みで,最後の列工资
は応答変数です。関数movevars
を使用してfnlwgt
を工资
の左側に移動します。
adultdata = movevars (adultdata,“fnlwgt”,“之前”,“工资”);头(adultdata, 3)
ans =3×15表种族性别年龄workClass教育education_num marital_status职业关系capital_gain capital_loss hours_per_week native_country fnlwgt薪水 ___ ________________ _________ _____________ __________________ _________________ _____________ _____ ____ ____________ ____________ ______________ ______________ __________ ______ 39 State-gov单身汉13未婚Adm-clerical家族的白人男性2174 0 77516美国< = 50 k 50 Self-emp-not-inc单身汉13 Married-civ-spouse Exec-managerial丈夫白人男性0 0 83311年美国13日< = 50 k 38私人HS-grad 9离婚Handlers-cleaners家族的白人男性40 0 0美国2.1565 e + 05 < = 50 k
adultdata
の予測子をランク付けします。列工资
を応答変数として指定します。
[idx,分数]= fscmrmr (adultdata,“工资”,“重量”,“fnlwgt”);
予測子の重要度スコアの棒グラフを作成します。予測子の名前をx軸の目盛りラベルに使用します。
栏(分数(idx))包含(“预测排名”) ylabel (“预测重要性分数”) xticklabels (strrep (adultdata.Properties.VariableNames (idx),“_”,“\ _”) xtickangle (45)
上第五位つの重要な予測子は,的关系
、capital_loss
、capital_gain
、教育
およびhours_per_week
です。
すべての予測子を使用して学習した分類木の精度を,上5位つの重要な予測子を使用して学習した分類木の精度と比較します。
既定のオプションを使用して,分類木テンプレートを作成します。
C = templateTree;
すべての予測子を含むように表tbl1
を定義し,上5位つの重要な予測子を含むようにテーブルtbl2
を定義します。
tbl1 = adultdata (:, adultdata.Properties.VariableNames (idx (1:13)));tbl2 = adultdata (:, adultdata.Properties.VariableNames (idx (1:5)));
分類木テンプレートと2つのテーブルを関数testckfold
に渡します。関数は,反復交差検証により 2 つのモデルの精度を比較します。“替代”、“大”
を指定して,すべての予測子を使用するモデルの精度は,5つの予測子を使用するモデルの精度と同程度であるという帰無仮説を検定します。“测试”
が“5 x2t”
(5行2列のペアt検定)または“10 x10t”
(10行十列の反復交差検証t検定)である場合,“更大的”
オプションを使用できます。
(h p) = testckfold (C, C, tbl1、tbl2 adultdata.salary,“重量”adultdata.fnlwgt,“替代”,“更大的”,“测试”,“5 x2t”)
h =逻辑0
p = 0.9969
h
が0であり,p値がほぼ1であるということは,帰無仮説が棄却できなかったことを示します。5つの予測子を使用するモデルを使用しても、すべての予測子を使用するモデルと比較して、精度が失われる結果にはなりません。
これで,選択した予測子を使用して分類木を学習させます。
mdl = fitctree (adultdata,'工资~关系+资本损失+资本收益+教育+每周工时',...“重量”adultdata.fnlwgt)
mdl = ClassificationTree PredictorNames: {1x5 cell} ResponseName: 'salary' CategoricalPredictors: [1 2] ClassNames: [<=50K >50K] ScoreTransform: 'none' NumObservations: 32561属性,方法
资源描述
- - - - - -標本データ標本データ。テーブルとして指定します。文字ベクトルの cell 配列ではない cell 配列と複数列の変数は使用できません。
资源描述
の各行は1つの観測値に,各列は1つの予測子変数に対応します。必要に応じて,资源描述
に応答変数用および観測値の重み用の追加列を含めることができます。
応答変数は,绝对配列,文字配列,字符串配列,逻辑ベクトル,数値ベクトル,または文字ベクトルの细胞配列にすることができます。応答変数が文字配列である場合,応答変数の各要素は配列の1つの行に対応しなければなりません。
资源描述
に応答変数が含まれている場合に资源描述
内の他の変数をすべて予測子として使用するには,ResponseVarName
を使用して応答変数を指定します。资源描述
に観測値の重みも含まれている場合,权重
を使用して重みを指定できます。
资源描述
に応答変数が含まれている場合に资源描述
内の他の変数のサブセットのみを予測子として使用するには,公式
を使用して変数のサブセットを指定します。
资源描述
に応答変数が含まれていない場合は,Y
を使用して応答変数を指定します。応答変数と资源描述
の行数は同じでなければなりません。
fscmrmr
が资源描述
内の変数のサブセットを予測子として使用する場合,関数はサブセットのみを使用して予測子にインデックスを作成します。名前と値のペアの引数“CategoricalPredictors”
と出力引数idx
内の値は,関数がランク付けを行わない予測子はカウントしません。
fscmrmr
は,応答変数の资源描述
に含まれている南
、''
(空の文字ベクトル),""
(空の字符串),< >失踪
,および<定义>
の値を欠損値と見なします。fscmrmr
は,応答変数に欠損値がある観測値を使用しません。
データ型:表格
ResponseVarName
- - - - - -応答変数名资源描述
内の変数の名前を含む文字ベクトルまたは字符串スカラー応答変数名。资源描述
内の変数の名前を含む文字ベクトルまたは字符串スカラーを指定します。
たとえば,応答変数が资源描述
の列Y
(资源描述。Y
)である場合,ResponseVarName
を“Y”
として指定します。
データ型:字符
|字符串
公式
- - - - - -応答変数および予測子変数サブセットの説明モデル応答変数および予測子変数サブセットの説明モデル。'Y ~ x1 + x2 + x3'
という形式の文字ベクトルまたは字符串スカラーを指定します。この形式では,Y
は応答変数を,x1
、x2
およびx3
は予測子変数を表します。
予測子として资源描述
内の変数のサブセットを指定するには,式を使用します。式を指定した場合,fscmrmr
は公式
に現れない资源描述
内の変数をランク付けしません。
式の変数名は资源描述
の変数名(Tbl.Properties.VariableNames
)であり,有効なMATLAB®識別子でなければなりません。関数isvarname
を使用して资源描述
の変数名を検証できます。変数名が有効でない場合,関数matlab.lang.makeValidName
を使用してそれらを変換できます。
データ型:字符
|字符串
Y
- - - - - -応答変数応答変数。数値ベクトル,直言ベクトル,逻辑ベクトル,文字配列,字符串配列,または文字ベクトルの细胞配列として指定します。Y
の各行は,X
の対応する行のラベルを表します。
fscmrmr
はY
に含まれている南
、''
(空の文字ベクトル),""
(空の字符串),< >失踪
および<定义>
値を欠損値と見なします。fscmrmr
は,Y
に対し欠損値がある観測値を使用しません。
データ型:单
|双
|分类
|逻辑
|字符
|字符串
|细胞
X
- - - - - -予測子データ予測子データ。数値行列として指定します。X
の各行は1つの観測値に,各列は1つの予測子変数に対応します。
データ型:单
|双
オプションの名称,值
引数のコンマ区切りペアを指定します。的名字
は引数名で,价值
は対応する値です。的名字
は引用符で囲まなければなりません。Name1, Value1,…,的家
のように,複数の名前と値のペアの引数を,任意の順番で指定できます。
“CategoricalPredictors”,[1 - 2],“详细”,2
は,最初の2つの予測子変数をカテゴリカル変数として指定し,詳細レベルを2に指定します。
CategoricalPredictors
- - - - - -カテゴリカル予測子のリスト“所有”
カテゴリカル予測子のリスト。次の表のいずれかの値として指定します。
値 | 説明 |
---|---|
正の整数のベクトル | ベクトルの各エントリは,カテゴリカル変数が含まれている予測子データの列に対応するインデックス値です。インデックス値の範囲は1 ~
|
逻辑ベクトル |
|
文字行列 | 行列の各行は予測子変数の名前です。名前は资源描述 の名前に一致しなくてはなりません。文字行列の各行が同じ長さになるように、名前を余分な空白で埋めてください。 |
文字ベクトルの细胞配列または字符串配列 | 配列の各要素は予測子変数の名前です。名前は资源描述 の名前に一致しなくてはなりません。 |
“所有” |
すべての予測子がカテゴリカルです。 |
既定では,予測子データがテーブル(资源描述
)内にある場合,fscmrmr
は,その変数が逻辑ベクトル,順序付けのない直言ベクトル,文字配列,字符串配列または文字ベクトルの细胞配列のいずれかである場合に,変数を直言であると見なします。予測子データが行列(X
)である場合,fscmrmr
はすべての予測子が連続的であると見なします。他の予測子をカテゴリカル予測子として指定するには,名前と値の引数“CategoricalPredictors”
を使用してそれらを指定します。
例:“CategoricalPredictors”、“所有”
データ型:单
|双
|逻辑
|字符
|字符串
|细胞
一会
- - - - - -ランク付けに使用するクラスの名前ランク付けに使用するクラスの名前。“类名”
と直言配列,文字配列,字符串配列,逻辑ベクトル,数値ベクトル,または文字ベクトルの细胞配列から構成されるコンマ区切りのペアとして指定します。一会
のデータ型はY
または资源描述
内の応答変数と同じでなければなりません。
一会
が文字配列の場合,各要素は配列の1つの“行”に対応しなければなりません。
“类名”
の使用目的は次のとおりです。
クラスの順序に対応する之前
の次元の順序を指定する。
ランク付け用にクラスのサブセットを選択する。たとえば,Y
に含まれているすべての異なるクラス名の集合が{' a ', ' b ', ' c '}
であるとします。クラス“一个”
および“c”
のみの観測値を使用して予測子をランク付けするには,“类名”,{' a ', ' c '}
を指定します。
“类名”
の既定値は,Y
または资源描述
内の応答変数に含まれているすべての異なるクラス名の集合です。応答変数に順序がある場合,既定値“类名”
には数学的順序が設定されています。それ以外の場合,既定値にはアルファベット順が設定されています。
例:“类名”,{' b ', ' g '}
データ型:分类
|字符
|字符串
|逻辑
|单
|双
|细胞
之前
- - - - - -事前確率“经验”
(既定値) |“统一”
|スカラー値のベクトル|構造体UseMissing
- - - - - -予測子内の欠損値を使用するか破棄するかを示すインジケーター假
(既定値) |真正的
予測子内の欠損値を使用するか破棄するかを示すインジケーター。“UseMissing”
と,ランク付けのために予測子内の欠損値を使用する(真正的
)または破棄する(假
)のいずれかから構成されるコンマ区切りのペアとして指定します。
fscmrmr
は,南
、''
(空の文字ベクトル),""
(空の字符串),< >失踪
,および<定义>
の値を欠損値と見なします。
“UseMissing”,真的
を指定した場合,fscmrmr
はランク付けに欠損値を使用します。カテゴリカル変数の場合,fscmrmr
は欠損値を追加のカテゴリとして扱います。連続変数の場合,fscmrmr
はビン化するために別個のビン内に南
値を配置します。
“UseMissing”,假的
を指定した場合,fscmrmr
はランク付けに欠損値を使用しません。fscmrmr
は変数の各ペアについて相互情報を計算するため,関数は行内の値が部分的に欠損している場合も行全体を破棄することはありません。fscmrmr
は,欠損値を含まないすべてのペアの値を使用します。
例:“UseMissing”,真的
データ型:逻辑
详细的
- - - - - -詳細レベル0
(既定値) |非負の整数詳細レベル。“详细”
と非負の整数値から構成されるコンマ区切りのペアとして指定します。详细的
の値は,コマンドウィンドウに表示される診断情報の量を制御します。
0 -fscmrmr
は診断情報を何も表示しません。
1 -fscmrmr
は,相互情報の計算と予測子のランク付けにかかる経過時間を表示します。
≥2 -fscmrmr
は,経過時間と相互情報の計算に関連する追加メッセージを表示します。情報の量は,“详细”
値が増加するにつれて増加します。
例:“详细”,1
データ型:单
|双
权重
- - - - - -観測値の重み(大小(X, 1), 1)
(既定値) |スカラー値のベクトル|资源描述
内の変数の名前観測値の重み。“重量”
とスカラー値のベクトルまたは资源描述
内の変数の名前から構成されるコンマ区切りのペアとして指定します。関数は,X
または资源描述
の各行の観測値に,权重
の対応する値で重みを付けます。权重
のサイズは,X
または资源描述
の行数と同じでなければなりません。
入力データをテーブル资源描述
として指定した場合,权重
は数値ベクトルが含まれている资源描述
内の変数の名前にすることができます。この場合,权重
には文字ベクトルまたは字符串スカラーを指定しなければなりません。たとえば,重みベクトルが资源描述
の列W
(资源描述。W
)である場合,“权重”W”
を指定します。
fscmrmr
は,合計がクラスの事前確率の値になるように各クラスの重みを正規化します。
データ型:单
|双
|字符
|字符串
分数
——予測子スコア予測子スコア。1行 r 列の数値ベクトルとして返されます。r はランク付けされた予測子の数です。
大きなスコア値は,対応する予測子が重要であることを示します。また,特徴量の重要度スコアの下落は,特徴選択の信頼度を表します。たとえば,ソフトウェアが確実に特徴量 x を選択している場合、次に最も重要な特徴量のスコア値が x のスコア値よりさらに小さくなります。
たとえば,资源描述
に列が10個あり,公式
を使用して资源描述
の最後の5列を予測子変数として指定するとします。この場合,分数(3)
には资源描述
内の8番目の列のスコア値が含まれます。これは,サブセットの3番目の予測子です。
2つの変数間の相互情報は,ある変数の不確かさの度合いが,他の変数がわかるとどの程度削減できるかを測定します。
離散確率変数XとZの相互情報我は,
として定義されます。Xと Z が独立している場合、I は 0 と等しくなります。X と Z が同じ確率変数である場合、I は X のエントロピーと等しくなります。
関数fscmrmr
は,この定義を使用して,カテゴリカル(離散)変数および連続変数の両方の相互情報の値を計算します。fscmrmr
256年は,連続変数を個のビンか,それが256個より少ない場合は変数内の独自の値の数に離散化させます。関数は,適応アルゴリズムを使用して変数の各ペアに最適な二変量ビンを求めます[2]。
MRMRアルゴリズム[1]は,相互に,最大に類似していない最適な特徴量のセットを求め,応答変数を効率的に表すことができます。このアルゴリズムにより,特徴セットの冗長性が最小化され,応答変数に対する特徴量セットの関連性が最大化されます。変数の相互情報を使用して,冗長性と関連性,つまり特徴量のペアワイズ相互情報と特徴量および応答の相互情報が定量化されます。このアルゴリズムを分類問題に使用できます。
MRMRアルゴリズムの目的は,応答変数yに関してV年代(Sの関連性)を最大化し,W年代(Sの冗長性)を最小化する特徴量の最適なセット年代を検出することです。ここで,V年代とW年代は相互情報我を使用して定義されます。
| |年代は年代内の特徴量の数です。
最適なセット年代の検出には,すべての2|Ω|の組み合わせを考慮することが必要です。ここで,Ωは特徴セット全体です。代わりに,MRMRアルゴリズムは前方追加方式により特徴量をランク付けします。これには,互信息商(筛选)の値を使用したO(|Ω|·| |)計算が必要です。
ここでVxとWxは,それぞれ特徴量の関連性と冗長性です。
関数fscmrmr
はMRMRアルゴリズムを使用してΩ内のすべての特徴量をランク付けし,idx
(特徴量の重要度順に並べ替えられた特徴量のインデックス)を返します。したがって,計算コストはO(|Ω|2)となります。関数は,ヒューリスティックなアルゴリズムを使用して特徴量の重要度を定量化し、分数
を返します。大きなスコア値は,対応する予測子が重要であることを示します。また,特徴量の重要度スコアの下落は,特徴選択の信頼度を表します。たとえば,ソフトウェアが確実に特徴量 x を選択している場合、次に最も重要な特徴量のスコア値が x のスコア値よりさらに小さくなります。出力を使用して、特徴量の特定の数の最適なセット S を検出します。
fscmrmr
は次のように特徴量をランク付けします。
関連性が最も高い特徴量 を選択します。選択した特徴量を空のセット年代に追加します。
,年代cの補数の関連性が非ゼロで冗長性がゼロである特徴量を検出します。
関連性が非ゼロで冗長性がゼロである特徴量が年代cに含まれていない場合,ステップ4に進みます。
それ以外の場合,関連性が最も高い特徴量 を選択します。選択した特徴量をセット年代に追加します。
年代cのすべての特徴量について冗長性がゼロではなくなるまでステップ2を繰り返します。
年代cの関連性が非ゼロで冗長性が非ゼロの,筛选の最大値をもつ特徴量を選択し,選択した特徴量をセット年代に追加します。
年代cのすべての特徴量について関連性がゼロになるまでステップ4を繰り返します。
関連性がゼロである特徴量を無作為順で年代に追加します。
ソフトウェアでステップ内に記述されている条件を満たす特徴量を検出できない場合,任意のステップを省略できます。
“UseMissing”,真的
を指定し,ランク付けに予測子内の欠損値を使用するR2020aでの動作変更
R2020a以降は,“UseMissing”
の名前と値のペアの引数を使用することによって,ランク付けに予測子内の欠損値を使用するか破棄するかを指定できます。“UseMissing”
の既定値は假
です。これは、统计和机器学习工具箱™のほとんどの分類学習関数が学習に欠損値を使用しないためです。
R2019bでは,fscmrmr
が既定で予測子内の欠損値を使用していました。コードを更新するには,“UseMissing”,真的
を指定します。
[1] Ding, C.和H. Peng。从微阵列基因表达数据中选择最小冗余特征生物信息学与计算生物学杂志。第3卷第2期,2005年,185-205页。
Darbellay, g.a.,和I. Vajda。通过对观测空间的自适应划分来估计信息。IEEE信息理论汇刊。第45卷第4期,1999年,第1315-1321页。
次のMATLABコマンドに対応するリンクがクリックされました。
コマンドをMATLABコマンドウィンドウに入力して実行してください。WebブラウザーはMATLABコマンドをサポートしていません。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。