主要内容

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

fscmrmr

最小冗余最大相关性(MRMR)アルゴリズムを使用した分類用の特徴量のランク付け

説明

idx= fscmrmr (资源描述ResponseVarNameは,MRMRアルゴリズムを使用して特徴量(予測子)をランク付けします。テーブル资源描述には予測子変数と応答変数が含まれていて,ResponseVarName资源描述内の応答変数の名前です。関数はidxを返します。これには予測子の重要度順に並べ替えられた予測子のインデックスが含まれます。idxを使用して,分類問題用の重要な予測子を選択できます。

idx= fscmrmr (资源描述公式は,公式を使用して资源描述内の変数を考慮するために応答変数と予測子変数を指定します。

idx= fscmrmr (资源描述Yは,応答変数Yを使用して资源描述内の予測子をランク付けします。

idx= fscmrmr (XYは,応答変数Yを使用してX内の予測子をランク付けします。

idx= fscmrmr (___名称,值では,前の構文におけるいずれかの入力引数の組み合わせに加えて,1つ以上の名前と値のペアの引数を使用して追加のオプションを指定します。たとえば,事前確率と観測値の重みを指定できます。

idx分数) = fscmrmr (___は,予測子スコア分数も返します。大きなスコア値は,対応する予測子が重要であることを示します。

すべて折りたたむ

標本データを読み込みます。

负载电离层

重要度に基づいて予測子をランク付けします。

[idx,分数]= fscmrmr (X, Y);

予測子の重要度スコアの棒グラフを作成します。

栏(分数(idx))包含(“预测排名”) ylabel (“预测重要性分数”

图中包含一个坐标轴。坐标轴包含bar类型的对象。

最も重要な予測子の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)

图中包含一个坐标轴。坐标轴包含bar类型的对象。

上第五位つの重要な予測子は,的关系capital_losscapital_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は,応答変数に欠損値がある観測値を使用しません。

データ型:表格

応答変数名。资源描述内の変数の名前を含む文字ベクトルまたは字符串スカラーを指定します。

たとえば,応答変数が资源描述の列Y资源描述。Y)である場合,ResponseVarName“Y”として指定します。

データ型:字符|字符串

応答変数および予測子変数サブセットの説明モデル。'Y ~ x1 + x2 + x3'という形式の文字ベクトルまたは字符串スカラーを指定します。この形式では,Yは応答変数を,x1x2およびx3は予測子変数を表します。

予測子として资源描述内の変数のサブセットを指定するには,式を使用します。式を指定した場合,fscmrmr公式に現れない资源描述内の変数をランク付けしません。

式の変数名は资源描述の変数名(Tbl.Properties.VariableNames)であり,有効なMATLAB®識別子でなければなりません。関数isvarnameを使用して资源描述の変数名を検証できます。変数名が有効でない場合,関数matlab.lang.makeValidNameを使用してそれらを変換できます。

データ型:字符|字符串

応答変数。数値ベクトル,直言ベクトル,逻辑ベクトル,文字配列,字符串配列,または文字ベクトルの细胞配列として指定します。Yの各行は,Xの対応する行のラベルを表します。

fscmrmrYに含まれている''(空の文字ベクトル),""(空の字符串),< >失踪および<定义>値を欠損値と見なします。fscmrmrは,Yに対し欠損値がある観測値を使用しません。

データ型:||分类|逻辑|字符|字符串|细胞

予測子データ。数値行列として指定します。Xの各行は1つの観測値に,各列は1つの予測子変数に対応します。

データ型:|

名前と値のペアの引数

オプションの名称,值引数のコンマ区切りペアを指定します。的名字は引数名で,价值は対応する値です。的名字は引用符で囲まなければなりません。Name1, Value1,…,的家のように,複数の名前と値のペアの引数を,任意の順番で指定できます。

例:“CategoricalPredictors”,[1 - 2],“详细”,2は,最初の2つの予測子変数をカテゴリカル変数として指定し,詳細レベルを2に指定します。

カテゴリカル予測子のリスト。次の表のいずれかの値として指定します。

説明
正の整数のベクトル

ベクトルの各エントリは,カテゴリカル変数が含まれている予測子データの列に対応するインデックス値です。インデックス値の範囲は1 ~pです。pはモデルの学習に使用した予測子の数です。

fscmrmrが入力変数のサブセットを予測子として使用する場合,関数はサブセットのみを使用して予測子にインデックスを作成します。応答変数,観測値の重み変数,および関数で使用されないその他の変数は,“CategoricalPredictors”値でカウントされません。

逻辑ベクトル

真正的というエントリは,予測子データの対応する列がカテゴリカル変数であることを意味します。ベクトルの長さはpです。

文字行列 行列の各行は予測子変数の名前です。名前は资源描述の名前に一致しなくてはなりません。文字行列の各行が同じ長さになるように、名前を余分な空白で埋めてください。
文字ベクトルの细胞配列または字符串配列 配列の各要素は予測子変数の名前です。名前は资源描述の名前に一致しなくてはなりません。
“所有” すべての予測子がカテゴリカルです。

既定では,予測子データがテーブル(资源描述)内にある場合,fscmrmrは,その変数が逻辑ベクトル,順序付けのない直言ベクトル,文字配列,字符串配列または文字ベクトルの细胞配列のいずれかである場合に,変数を直言であると見なします。予測子データが行列(X)である場合,fscmrmrはすべての予測子が連続的であると見なします。他の予測子をカテゴリカル予測子として指定するには,名前と値の引数“CategoricalPredictors”を使用してそれらを指定します。

例:“CategoricalPredictors”、“所有”

データ型:||逻辑|字符|字符串|细胞

ランク付けに使用するクラスの名前。“类名”と直言配列,文字配列,字符串配列,逻辑ベクトル,数値ベクトル,または文字ベクトルの细胞配列から構成されるコンマ区切りのペアとして指定します。一会のデータ型はYまたは资源描述内の応答変数と同じでなければなりません。

一会が文字配列の場合,各要素は配列の1つの“行”に対応しなければなりません。

“类名”の使用目的は次のとおりです。

  • クラスの順序に対応する之前の次元の順序を指定する。

  • ランク付け用にクラスのサブセットを選択する。たとえば,Yに含まれているすべての異なるクラス名の集合が{' a ', ' b ', ' c '}であるとします。クラス“一个”および“c”のみの観測値を使用して予測子をランク付けするには,“类名”,{' a ', ' c '}を指定します。

“类名”の既定値は,Yまたは资源描述内の応答変数に含まれているすべての異なるクラス名の集合です。応答変数に順序がある場合,既定値“类名”には数学的順序が設定されています。それ以外の場合,既定値にはアルファベット順が設定されています。

例:“类名”,{' b ', ' g '}

データ型:分类|字符|字符串|逻辑|||细胞

各クラスの事前確率。次のいずれかとして指定します。

  • 文字ベクトルまたは字符串スカラー。

    • “经验”Yまたは资源描述の応答変数のクラスの頻度からクラス確率を決定します。観測値の重みを渡す場合,fscmrmrはこの重みを使用してクラス確率を計算します。

    • “统一”はすべてのクラス確率を均等に設定します。

  • ベクトル(クラスごとに1つのスカラー値)。“之前”の対応する要素についてクラスの順序を指定するには,名前と値の引数“类名”を設定します。

  • 2次のつのフィールドがある構造体年代

    • S.ClassNamesには,Yまたは资源描述の応答変数と同じ型の変数のクラス名が格納されます。

    • S.ClassProbsには,対応する確率のベクトルが格納されます。

fscmrmrは,合計がクラスの事前確率の値になるように各クラスの重み(“重量”)を正規化します。

例:“前”、“制服”

データ型:字符|字符串|||结构体

予測子内の欠損値を使用するか破棄するかを示すインジケーター。“UseMissing”と,ランク付けのために予測子内の欠損値を使用する(真正的)または破棄する()のいずれかから構成されるコンマ区切りのペアとして指定します。

fscmrmrは,''(空の文字ベクトル),""(空の字符串),< >失踪,および<定义>の値を欠損値と見なします。

“UseMissing”,真的を指定した場合,fscmrmrはランク付けに欠損値を使用します。カテゴリカル変数の場合,fscmrmrは欠損値を追加のカテゴリとして扱います。連続変数の場合,fscmrmrはビン化するために別個のビン内に値を配置します。

“UseMissing”,假的を指定した場合,fscmrmrはランク付けに欠損値を使用しません。fscmrmrは変数の各ペアについて相互情報を計算するため,関数は行内の値が部分的に欠損している場合も行全体を破棄することはありません。fscmrmrは,欠損値を含まないすべてのペアの値を使用します。

例:“UseMissing”,真的

データ型:逻辑

詳細レベル。“详细”と非負の整数値から構成されるコンマ区切りのペアとして指定します。详细的の値は,コマンドウィンドウに表示される診断情報の量を制御します。

  • 0 -fscmrmrは診断情報を何も表示しません。

  • 1 -fscmrmrは,相互情報の計算と予測子のランク付けにかかる経過時間を表示します。

  • ≥2 -fscmrmrは,経過時間と相互情報の計算に関連する追加メッセージを表示します。情報の量は,“详细”値が増加するにつれて増加します。

例:“详细”,1

データ型:|

観測値の重み。“重量”とスカラー値のベクトルまたは资源描述内の変数の名前から構成されるコンマ区切りのペアとして指定します。関数は,Xまたは资源描述の各行の観測値に,权重の対応する値で重みを付けます。权重のサイズは,Xまたは资源描述の行数と同じでなければなりません。

入力データをテーブル资源描述として指定した場合,权重は数値ベクトルが含まれている资源描述内の変数の名前にすることができます。この場合,权重には文字ベクトルまたは字符串スカラーを指定しなければなりません。たとえば,重みベクトルが资源描述の列W资源描述。W)である場合,“权重”W”を指定します。

fscmrmrは,合計がクラスの事前確率の値になるように各クラスの重みを正規化します。

データ型:||字符|字符串

出力引数

すべて折りたたむ

予測子の重要度順に並べ替えられたXまたは资源描述の予測子のインデックス。1行 r 列の数値ベクトルとして返されます。r はランク付けされた予測子の数です。

fscmrmr资源描述内の変数のサブセットを予測子として使用する場合,関数はサブセットのみを使用して予測子にインデックスを作成します。たとえば,资源描述に列が10個あり,公式を使用して资源描述の最後の5列を予測子変数として指定するとします。idx (3)5である場合3番目に重要な予測子は资源描述の10列目(サブセットの5番目の予測子)です。

予測子スコア。1行 r 列の数値ベクトルとして返されます。r はランク付けされた予測子の数です。

大きなスコア値は,対応する予測子が重要であることを示します。また,特徴量の重要度スコアの下落は,特徴選択の信頼度を表します。たとえば,ソフトウェアが確実に特徴量 x を選択している場合、次に最も重要な特徴量のスコア値が x のスコア値よりさらに小さくなります。

  • Xを使用して予測子を指定するか,资源描述内のすべての変数を予測子として使用する場合,分数内の値の順序は,Xまたは资源描述内の予測子と同じ順序です。

  • 资源描述内の変数のサブセットを予測子として指定する場合,分数内の値の順序は,サブセットと同じ順序です。

たとえば,资源描述に列が10個あり,公式を使用して资源描述の最後の5列を予測子変数として指定するとします。この場合,分数(3)には资源描述内の8番目の列のスコア値が含まれます。これは,サブセットの3番目の予測子です。

詳細

すべて折りたたむ

相互情報

2つの変数間の相互情報は,ある変数の不確かさの度合いが,他の変数がわかるとどの程度削減できるかを測定します。

離散確率変数XとZの相互情報我は,

X Z j P X x Z z j 日志 P X x Z z j P X x P Z z j

として定義されます。Xと Z が独立している場合、I は 0 と等しくなります。X と Z が同じ確率変数である場合、I は X のエントロピーと等しくなります。

関数fscmrmrは,この定義を使用して,カテゴリカル(離散)変数および連続変数の両方の相互情報の値を計算します。fscmrmr256年は,連続変数を個のビンか,それが256個より少ない場合は変数内の独自の値の数に離散化させます。関数は,適応アルゴリズムを使用して変数の各ペアに最適な二変量ビンを求めます[2]

アルゴリズム

すべて折りたたむ

最小冗余最大相关性(MRMR)アルゴリズム

MRMRアルゴリズム[1]は,相互に,最大に類似していない最適な特徴量のセットを求め,応答変数を効率的に表すことができます。このアルゴリズムにより,特徴セットの冗長性が最小化され,応答変数に対する特徴量セットの関連性が最大化されます。変数の相互情報を使用して,冗長性と関連性,つまり特徴量のペアワイズ相互情報と特徴量および応答の相互情報が定量化されます。このアルゴリズムを分類問題に使用できます。

MRMRアルゴリズムの目的は,応答変数yに関してV年代(Sの関連性)を最大化し,W年代(Sの冗長性)を最小化する特徴量の最適なセット年代を検出することです。ここで,V年代とW年代相互情報我を使用して定義されます。

V 年代 1 | 年代 | x 年代 x y

W 年代 1 | 年代 | 2 x z 年代 x z

| |年代は年代内の特徴量の数です。

最適なセット年代の検出には,すべての2|Ω|の組み合わせを考慮することが必要です。ここで,Ωは特徴セット全体です。代わりに,MRMRアルゴリズムは前方追加方式により特徴量をランク付けします。これには,互信息商(筛选)の値を使用したO(|Ω|·| |)計算が必要です。

进行筛选 x V x W x

ここでVxとWxは,それぞれ特徴量の関連性と冗長性です。

V x x y

W x 1 | 年代 | z 年代 x z

関数fscmrmrはMRMRアルゴリズムを使用してΩ内のすべての特徴量をランク付けし,idx(特徴量の重要度順に並べ替えられた特徴量のインデックス)を返します。したがって,計算コストはO(|Ω|2となります。関数は,ヒューリスティックなアルゴリズムを使用して特徴量の重要度を定量化し、分数を返します。大きなスコア値は,対応する予測子が重要であることを示します。また,特徴量の重要度スコアの下落は,特徴選択の信頼度を表します。たとえば,ソフトウェアが確実に特徴量 x を選択している場合、次に最も重要な特徴量のスコア値が x のスコア値よりさらに小さくなります。出力を使用して、特徴量の特定の数の最適なセット S を検出します。

fscmrmrは次のように特徴量をランク付けします。

  1. 関連性が最も高い特徴量 马克斯 x Ω V x を選択します。選択した特徴量を空のセット年代に追加します。

  2. ,年代cの補数の関連性が非ゼロで冗長性がゼロである特徴量を検出します。

    • 関連性が非ゼロで冗長性がゼロである特徴量が年代cに含まれていない場合,ステップ4に進みます。

    • それ以外の場合,関連性が最も高い特徴量 马克斯 x 年代 c W x 0 V x を選択します。選択した特徴量をセット年代に追加します。

  3. 年代cのすべての特徴量について冗長性がゼロではなくなるまでステップ2を繰り返します。

  4. 年代cの関連性が非ゼロで冗長性が非ゼロの,筛选の最大値をもつ特徴量を選択し,選択した特徴量をセット年代に追加します。

    马克斯 x 年代 c 进行筛选 x 马克斯 x 年代 c x y 1 | 年代 | z 年代 x z

  5. 年代cのすべての特徴量について関連性がゼロになるまでステップ4を繰り返します。

  6. 関連性がゼロである特徴量を無作為順で年代に追加します。

ソフトウェアでステップ内に記述されている条件を満たす特徴量を検出できない場合,任意のステップを省略できます。

互換性の考慮事項

すべて展開する

R2020aでの動作変更

参照

[1] Ding, C.和H. Peng。从微阵列基因表达数据中选择最小冗余特征生物信息学与计算生物学杂志。第3卷第2期,2005年,185-205页。

Darbellay, g.a.,和I. Vajda。通过对观测空间的自适应划分来估计信息。IEEE信息理论汇刊。第45卷第4期,1999年,第1315-1321页。

R2019bで導入