fsulaplacian
ラプラシアン スコアを使用して教師なし学習の特徴量をランク付け
説明
は、ラプラシアン スコアを使用して idx
= fsulaplacian(X
)X
の特徴量 (変数) をランク付けします。関数は idx
を返します。これには特徴量の重要度順に並べ替えられた特徴量のインデックスが含まれます。idx
を使用して、教師なし学習用の重要な特徴量を選択できます。
では、1 つ以上の名前と値のペアの引数を使用して追加オプションを指定します。たとえば、idx
= fsulaplacian(X
,Name,Value
)'NumNeighbors',10
を指定すると、10 個の最近傍を使用して類似度グラフを作成できます。
例
重要度を基準とした特徴量のランク付け
標本データを読み込みます。
load ionosphere
重要度に基づいて特徴量をランク付けします。
[idx,scores] = fsulaplacian(X);
特徴量の重要度スコアの棒グラフを作成します。
bar(scores(idx)) xlabel('Feature rank') ylabel('Feature importance score')
上位 5 つの最も重要な特徴量を選択します。X
におけるこれらの特徴量の列を求めます。
idx(1:5)
ans = 1×5
15 13 17 21 19
X
の 15 列目が、最も重要な特徴量です。
指定された類似度行列を使用した特徴量のランク付け
フィッシャーのアヤメのデータ セットから類似度行列を計算し、類似度行列を使用して特徴量をランク付けします。
フィッシャーのアヤメのデータ セットを読み込みます。
load fisheriris
既定のユークリッド距離計量で関数pdist
とsquareform
を使用して、meas
に含まれている観測値の各ペア間の距離を求めます。
D = pdist(meas); Z = squareform(D);
類似度行列を作成し、これが対称であることを確認します。
S = exp(-Z.^2); issymmetric(S)
ans = logical
1
特徴量をランク付けします。
idx = fsulaplacian(meas,'Similarity',S)
idx = 1×4
3 4 1 2
類似度行列 S
を使用したランク付けは、'NumNeighbors'
を size(meas,1)
として指定することによるランク付けと同じです。
idx2 = fsulaplacian(meas,'NumNeighbors',size(meas,1))
idx2 = 1×4
3 4 1 2
入力引数
X
— 入力データ
数値行列
入力データ。n 行 p 列の数値行列を指定します。X
の行は観測値 (点) に、列は特徴量に対応します。
NaN
は X
の欠損データとして扱われ、最低 1 つの NaN
を含む X
の任意の行を無視します。
データ型: single
| double
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: 'NumNeighbors',10,'KernelScale','auto'
は、最近傍の個数を 10 に、カーネル スケール係数を 'auto'
に指定します。
Similarity
— 類似度行列
[]
(空の行列) (既定値) | 対称行列
類似度行列。'Similarity'
と n 行 n 列の対称行列から構成されるコンマ区切りのペアとして指定します。n は観測値の個数です。類似度行列 (または隣接行列) は、データ点間のローカルな近傍関係をモデル化することで入力データを表します。類似度行列内の値は、類似度グラフ内で接続しているノード (データ点) 間のエッジ (または接続) を表します。詳細は、類似度行列を参照してください。
'Similarity'
の値を指定する場合、別の名前と値のペアの引数を指定することはできません。'Similarity'
の値を指定しない場合、別の名前と値のペアの引数によって指定されたオプションを使用して類似度行列の計算が行われます。
データ型: single
| double
Distance
— 距離計量
文字ベクトル | string スカラー | 関数ハンドル
距離計量。'Distance'
と次の表で説明されている文字ベクトル、string スカラーまたは関数ハンドルから構成されるコンマ区切りのペアとして指定します。
値 | 説明 |
---|---|
'euclidean' | ユークリッド距離 (既定) |
'seuclidean' | 標準化されたユークリッド距離。観測値間の各座標差は、 |
'mahalanobis' |
|
'cityblock' | 市街地距離 |
'minkowski' | ミンコフスキー距離。既定の指数は 2 です。名前と値のペアの引数 |
'chebychev' | チェビシェフ距離 (最大座標差) |
'cosine' | 1 から、ベクトルとして扱われる観測間の夾角の余弦を減算 |
'correlation' | 1 から、観測値間の標本相関を減算 (値の系列として処理) |
'hamming' | ハミング距離 (異なる座標の比率) |
'jaccard' | 1 からジャカード係数 (異なる非ゼロ座標の比率) を減算 |
'spearman' | 1 から観測値間の標本スピアマン順位相関係数を減算 (値の系列として処理) |
@ | カスタム距離関数のハンドル。距離関数の形式は次のようになります。 function D2 = distfun(ZI,ZJ) % calculation of distance ...
データがスパースでない場合、通常は関数ハンドルではなく組み込みの距離を使用する方が高速に距離を計算できます。 |
詳細は、距離計量を参照してください。
'seuclidean'
、'minkowski'
または 'mahalanobis'
距離計量を使用する場合、追加の名前と値のペアの引数 'Scale'
、'P'
または 'Cov'
をそれぞれ指定して、距離計量を制御することができます。
例: 'Distance','minkowski','P',3
は、指数 3
のミンコフスキー距離計量を使用することを指定します。
P
— ミンコフスキー距離計量の指数
2
(既定値) | 正のスカラー
ミンコフスキー距離計量の指数。'P'
と正のスカラー値をコンマで区切って指定します。
この引数は、'Distance'
が 'minkowski'
である場合のみ有効です。
例: 'P',3
データ型: single
| double
Cov
— マハラノビス距離計量の共分散行列
cov(X,'omitrows')
(既定値) | 正定値行列
マハラノビス距離計量の共分散行列。'Cov'
と正定値行列から構成されるコンマ区切りのペアとして指定します。
この引数は、'Distance'
が 'mahalanobis'
である場合のみ有効です。
例: 'Cov',eye(4)
データ型: single
| double
Scale
— 標準化されたユークリッド距離計量のスケール係数
std(X,'omitnan')
(既定値) | 非負値の数値ベクトル
標準化されたユークリッド距離計量のスケール係数。'Scale'
と非負値の数値ベクトルから構成されるコンマ区切りのペアとして指定します。
X
の各次元 (列) には対応する Scale
の値があるので、Scale
の長さは p (X
の列数) です。fsulaplacian
は、X
の各次元について、Scale
内の対応する値を使用して、観測値の差を標準化します。
この引数は、'Distance'
が 'seuclidean'
である場合のみ有効です。
データ型: single
| double
NumNeighbors
— 最近傍の個数
log(size(X,1))
(既定値) | 正の整数
類似度グラフの作成に使用される最近傍の個数。'NumNeighbors'
と正の整数で構成されるコンマ区切りのペアとして指定します。
例: 'NumNeighbors',10
データ型: single
| double
KernelScale
— スケール係数
1
(既定値) | 'auto'
| 正のスカラー
カーネルのスケール係数。'KernelScale'
と 'auto'
または正のスカラーで構成されるコンマ区切りのペアとして指定します。距離を類似度測定に変換するために、スケール係数が使用されます。詳細は、類似度グラフを参照してください。
'auto'
オプションは、'euclidean'
および'seuclidean'
の距離計量でのみサポートされます。'auto'
を指定した場合、ヒューリスティック手法を使用して適切なスケール係数が選択されます。このヒューリスティック手法では副標本抽出を使用するので、呼び出すたびに推定値が変化する可能性があります。結果を再現するには、fsulaplacian
を呼び出す前にrng
を使用して乱数シードを設定します。
例: 'KernelScale','auto'
出力引数
詳細
類似度グラフ
類似度グラフは、X
のデータ点間のローカルな近傍関係を無向グラフとしてモデル化します。グラフ内のノードはデータ点を表し、無向のエッジはデータ点間の接続を表します。
任意の 2 つのノード i および j 間のペアワイズ距離 Disti,j が正である (またはあるしきい値よりも大きい) 場合、類似度グラフはエッジ[2]を使用して 2 つのノードを接続します。2 つのノード間のエッジは、ペアワイズ類似度 Si,j によって重み付けされます。ここで、指定されたカーネル スケール σ の値に対して です。
fsulaplacian
は、最近傍法を使用して類似度グラフを作成します。関数は、最近傍である X
内の点を接続します。'NumNeighbors'
を使用して、最近傍の個数を指定します。
類似度行列
類似度行列は、類似度グラフの行列表現です。n 行 n 列の行列 には、類似度グラフで接続しているノード間のペアワイズ類似度の値が含まれます。グラフの類似度行列は、隣接行列とも呼ばれます。
類似度グラフのエッジが無向であるため、類似度行列は対称です。Si,j = 0
の値は、類似度グラフのノード i と j が接続していないことを意味します。
次数行列
次数行列 Dg は、類似度行列 S の行を合計することで得られる n 行 n 列の対角行列です。つまり、Dg の i 番目の対角要素は です。
アルゴリズム
ラプラシアン スコア
関数 fsulaplacian
は、最近傍の類似度グラフから取得したラプラシアン スコア[1]を使用して特徴量をランク付けします。
fsulaplacian
は、次のように scores
の値を計算します。
X
内の各データ点に対して、最近傍法を使用してローカルな近傍を定義し、近傍内のすべての点 i および j のペアワイズ距離 を求めます。カーネル変換 を使用して距離を類似度行列 S に変換します。ここで σ は、名前と値のペアの引数
'KernelScale'
によって指定されるカーネルのスケール係数です。各特徴量をその平均を削除することでセンタリングします。
ここで xr は r 番目の特徴量、Dg は次数行列であり、 です。
各特徴量のスコア sr を計算します。
[1] がラプラシアン スコアを
のように定義していることに注意してください。ここで L は Dg と S の間の差として定義されているラプラシアン行列です。関数 fsulaplacian
は、scores
のスコア値にこの方程式の 2 つ目の項のみを使用するため、大きいスコア値が重要な予測子を示します。
ラプラシアン スコアを使用した特徴量の選択は、値
の最小化と一致します。ここで、xir は r 番目の特徴量の i 番目の観測値を表します。この値を最小化することは、アルゴリズムでは大きな分散をもつ特徴量が推奨されることを示します。また、アルゴリズムは、類似性グラフの 2 つのデータ点の間にエッジがある場合のみ、重要な特徴量の 2 つのデータ点が近いと仮定します。
参照
[1] He, X., D. Cai, and P. Niyogi. "Laplacian Score for Feature Selection." NIPS Proceedings. 2005.
[2] Von Luxburg, U. “A Tutorial on Spectral Clustering.” Statistics and Computing Journal. Vol.17, Number 4, 2007, pp. 395–416.
バージョン履歴
R2019b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)