メインコンテンツ

fsulaplacian

ラプラシアン スコアを使用して教師なし学習の特徴量をランク付け

説明

idx = fsulaplacian(X) は、ラプラシアン スコアを使用して X の特徴量 (変数) をランク付けします。関数は idx を返します。これには特徴量の重要度順に並べ替えられた特徴量のインデックスが含まれます。idx を使用して、教師なし学習用の重要な特徴量を選択できます。

idx = fsulaplacian(X,Name,Value) では、1 つ以上の名前と値のペアの引数を使用して追加オプションを指定します。たとえば、'NumNeighbors',10 を指定すると、10 個の最近傍を使用して類似度グラフを作成できます。

[idx,scores] = fsulaplacian(___) は、前の構文におけるいずれかの入力引数の組み合わせを使用して、特徴量スコア scores も返します。大きなスコア値は、対応する特徴量が重要であることを示します。

すべて折りたたむ

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

load ionosphere

重要度に基づいて特徴量をランク付けします。

[idx,scores] = fsulaplacian(X);

特徴量の重要度スコアの棒グラフを作成します。

bar(scores(idx))
xlabel('Feature rank')
ylabel('Feature importance score')

Figure contains an axes object. The axes object with xlabel Feature rank, ylabel Feature importance score contains an object of type bar.

上位 5 つの最も重要な特徴量を選択します。X におけるこれらの特徴量の列を求めます。

idx(1:5)
ans = 1×5

    15    13    17    21    19

X の 15 列目が、最も重要な特徴量です。

フィッシャーのアヤメのデータ セットから類似度行列を計算し、類似度行列を使用して特徴量をランク付けします。

フィッシャーのアヤメのデータ セットを読み込みます。

load fisheriris

既定のユークリッド距離計量で関数pdistsquareformを使用して、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

入力引数

すべて折りたたむ

入力データ。np 列の数値行列を指定します。X の行は観測値 (点) に、列は特徴量に対応します。

NaNX の欠損データとして扱われ、最低 1 つの NaN を含む X の任意の行を無視します。

データ型: single | double

名前と値の引数

すべて折りたたむ

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: 'NumNeighbors',10,'KernelScale','auto' は、最近傍の個数を 10 に、カーネル スケール係数を 'auto' に指定します。

類似度行列。'Similarity'nn 列の対称行列から構成されるコンマ区切りのペアとして指定します。n は観測値の個数です。類似度行列 (または隣接行列) は、データ点間のローカルな近傍関係をモデル化することで入力データを表します。類似度行列内の値は、類似度グラフ内で接続しているノード (データ点) 間のエッジ (または接続) を表します。詳細は、類似度行列を参照してください。

'Similarity' の値を指定する場合、別の名前と値のペアの引数を指定することはできません。'Similarity' の値を指定しない場合、別の名前と値のペアの引数によって指定されたオプションを使用して類似度行列の計算が行われます。

データ型: single | double

距離計量。'Distance' と次の表で説明されている文字ベクトル、string スカラーまたは関数ハンドルから構成されるコンマ区切りのペアとして指定します。

説明
'euclidean'

ユークリッド距離 (既定)

'seuclidean'

標準化されたユークリッド距離。観測値間の各座標差は、X から計算された標準偏差の対応する要素で除算することによりスケーリングされます。名前と値のペアの引数 Scale を使用して、異なるスケーリング係数を指定します。

'mahalanobis'

X の標本共分散を使用したマハラノビス距離、C = cov(X,'omitrows')。名前と値のペアの引数 Cov を使用して、異なる共分散行列を指定します。

'cityblock'

市街地距離

'minkowski'

ミンコフスキー距離。既定の指数は 2 です。名前と値のペアの引数 P を使用して、別の指数を指定します。P は正のスカラー値です。

'chebychev'

チェビシェフ距離 (最大座標差)

'cosine'

1 から、ベクトルとして扱われる観測間の夾角の余弦を減算

'correlation'

1 から、観測値間の標本相関を減算 (値の系列として処理)

'hamming'

ハミング距離 (異なる座標の比率)

'jaccard'

1 からジャカード係数 (異なる非ゼロ座標の比率) を減算

'spearman'

1 から観測値間の標本スピアマン順位相関係数を減算 (値の系列として処理)

@distfun

カスタム距離関数のハンドル。距離関数の形式は次のようになります。

function D2 = distfun(ZI,ZJ)
% calculation of distance
...
ここで

  • ZI は、単一の観測値が含まれている 1n 列のベクトルです。

  • ZJ は、複数の観測値が含まれている m2n 列の行列です。distfun は、任意の個数の観測値が含まれている行列 ZJ を受け入れなければなりません。

  • D2m21 列の距離のベクトルであり、D2(k) は観測値 ZIZJ(k,:) の間の距離です。

データがスパースでない場合、通常は関数ハンドルではなく組み込みの距離を使用する方が高速に距離を計算できます。

詳細は、距離計量を参照してください。

'seuclidean''minkowski' または 'mahalanobis' 距離計量を使用する場合、追加の名前と値のペアの引数 'Scale''P' または 'Cov' をそれぞれ指定して、距離計量を制御することができます。

例: 'Distance','minkowski','P',3 は、指数 3 のミンコフスキー距離計量を使用することを指定します。

ミンコフスキー距離計量の指数。'P' と正のスカラー値をコンマで区切って指定します。

この引数は、'Distance''minkowski' である場合のみ有効です。

例: 'P',3

データ型: single | double

マハラノビス距離計量の共分散行列。'Cov' と正定値行列から構成されるコンマ区切りのペアとして指定します。

この引数は、'Distance''mahalanobis' である場合のみ有効です。

例: 'Cov',eye(4)

データ型: single | double

標準化されたユークリッド距離計量のスケール係数。'Scale' と非負値の数値ベクトルから構成されるコンマ区切りのペアとして指定します。

X の各次元 (列) には対応する Scale の値があるので、Scale の長さは p (X の列数) です。fsulaplacian は、X の各次元について、Scale 内の対応する値を使用して、観測値の差を標準化します。

この引数は、'Distance''seuclidean' である場合のみ有効です。

データ型: single | double

類似度グラフの作成に使用される最近傍の個数。'NumNeighbors' と正の整数で構成されるコンマ区切りのペアとして指定します。

例: 'NumNeighbors',10

データ型: single | double

カーネルのスケール係数。'KernelScale''auto' または正のスカラーで構成されるコンマ区切りのペアとして指定します。距離を類似度測定に変換するために、スケール係数が使用されます。詳細は、類似度グラフを参照してください。

  • 'auto' オプションは、'euclidean' および 'seuclidean' の距離計量でのみサポートされます。

  • 'auto' を指定した場合、ヒューリスティック手法を使用して適切なスケール係数が選択されます。このヒューリスティック手法では副標本抽出を使用するので、呼び出すたびに推定値が変化する可能性があります。結果を再現するには、fsulaplacian を呼び出す前に rng を使用して乱数シードを設定します。

例: 'KernelScale','auto'

出力引数

すべて折りたたむ

特徴量の重要度順に並べ替えられた X の特徴量のインデックス。数値ベクトルとして返されます。たとえば、idx(3)5 である場合、3 番目に重要な特徴量は X の 5 列目です。

特徴量スコア。数値ベクトルとして返されます。大きな scores スコア値は、対応する特徴量が重要であることを示します。scores 内の値の順序は、X 内の特徴量と同じ順序です。

詳細

すべて折りたたむ

アルゴリズム

すべて折りたたむ

参照

[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 で導入