ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

clustering.evaluation.SilhouetteEvaluation クラス

パッケージ: clustering.evaluation
スーパークラス: clustering.evaluation.ClusterCriterion

シルエット基準クラスタリング評価オブジェクト

説明

clustering.evaluation.SilhouetteEvaluation は、最適なデータ クラスター数を評価するために使用される標本データ、クラスタリング データおよびシルエット基準値で構成されるオブジェクトです。evalclusters を使用して、シルエット基準クラスタリング評価オブジェクトを作成します。

構築

eva = evalclusters(x,clust,'Silhouette') は、シルエット基準クラスタリング評価オブジェクトを作成します。

eva = evalclusters(x,clust,'Silhouette',Name,Value) は、1 つまたは複数の名前と値のペア引数で指定された追加オプションを使用して、シルエット基準クラスタリング評価オブジェクトを作成します。

入力引数

すべて折りたたむ

x — 入力データ行列

N 行 P 列の行列として指定される入力データ。N は観測値の数、P は変数の数です。

データ型: single | double

clust — クラスタリング アルゴリズム'kmeans' | 'linkage' | 'gmdistribution' | クラスタリングの解の行列 | 関数ハンドル

クラスタリング アルゴリズム。次のいずれかとして指定します。

'kmeans'x のデータを kmeans クラスタリング アルゴリズムを使用してクラスタリングします。'EmptyAction''singleton''Replicates'5 に設定されます。
'linkage'x のデータを clusterdata 凝集型クラスタリング アルゴリズムを使用してクラスタリングします。'Linkage''ward' に設定されます。
'gmdistribution'x のデータを gmdistribution 混合ガウス分布アルゴリズムを使用してクラスタリングします。'SharedCov'true'Replicates'5 に設定されます。

Criterion'CalinskHarabasz''DaviesBouldin' または 'silhouette' の場合は、function_handle (@) 演算子を使用してクラスタリング アルゴリズムを指定できます。この関数は C = clustfun(DATA,K) (DATA はクラスタリングするデータ、K はクラスター数) という形式でなければなりません。clustfun の出力は、次のいずれかでなければなりません。

  • DATA の各観測値のクラスター インデックスを表す整数のベクトル。このベクトルには K 個の一意の値がなければなりません。

  • n 個の観測値と K 個のクラスのスコアから成る n 行 K 列の数値行列。この場合、各観測値のクラスター インデックスは各行の最大スコアの値に基づいて決定されます。

Criterion'CalinskHarabasz''DaviesBouldin' または 'silhouette' の場合は、clust を推奨されるクラスタリングの解を含む n 行 K 列の行列として指定することもできます。n は標本データの観測値の数、K は推奨されるクラスタリングの解の数です。列 j に、j 番目のクラスタリングの解として、N 個の各点に対するクラスター インデックスが格納されます。

名前と値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。ここで、Name は引数名で、Value は対応する値です。Name は単一引用符 (' ') で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順番で指定できます。

例: 'KList',[1:5],'Distance','cityblock' は、距離測定として絶対差の総和を使用して、クラスター数 1、2、3、4、5 のそれぞれについて検定します。

'ClusterPriors' — 各クラスターの事前確率'empirical' (既定値) | 'equal'

各クラスターの事前確率。'ClusterPriors' と、以下のいずれかで構成されるコンマ区切りのペアとして指定します。

'empirical'すべてのポイントのシルエット値を平均化することによって、クラスタリングの解の全体的なシルエット値を計算します。各クラスターは、サイズに比例して全体的なシルエット値に寄与します。
'equal'各クラスター内のすべてのポイントのシルエット値を平均化し、次にこれらの値をすべてのクラスターについて平均化することによって、クラスタリングの解の全体的なシルエット値を計算します。各クラスターは、サイズに関係なく、全体的なシルエット値に均等に寄与します。

例: 'ClusterPriors','empirical'

'Distance' — 距離計量'sqEuclidean' (既定値) | 'Euclidean' | 'cityblock' | ベクトル | 関数 | ...

基準値の計算に使用する距離計量。'Distance' と以下のいずれかで構成されるコンマ区切りのペアとして指定します。

'sqEuclidean'2 乗ユークリッド距離
'Euclidean'ユークリッド距離
'cityblock'絶対差の総和
'cosine'1 から、ベクトルとして扱われる点の間の夾角の余弦を引いた値
'correlation'1 から、値の系列として扱われる点の間の標本相関を引いた値
'Hamming'一致しない座標の割合
'Jaccard'ゼロ以外の一致しない座標の割合

それぞれの距離計量の詳細は、関数 pdist を参照してください。

function_handle (@) 演算子を使用して距離計量の関数を指定することもできます。距離関数の形式は d2 = distfun(XI,XJ) でなければなりません。ここで、XI は入力行列 X の 1 つの行に対応する 1 行 n 列のベクトル、XJX の複数の行に対応する m2 行 n 列の行列です。distfun は距離 d2 の m2 行 1 列のベクトルを返さなければなりません。このベクトルの k 番目の要素は XIXJ(k,:) の間の距離です。

Criterion'silhouette' の場合は、Distance を関数 pdist で作成される出力ベクトルとして指定することもできます。

Clust が組み込みのクラスタリング アルゴリズムを表す文字列の場合、evalclusters は、Distance に指定された距離計量を使用してデータをクラスタリングします。ただし、次の例外があります。

  • Clust'linkage' で、Distance'sqEuclidean' または 'Euclidean' の場合は、ユークリッド距離とウォード連結法がクラスタリング アルゴリズムで使用されます。

  • Clust'linkage' で、Distance が他のいずれかの計量の場合は、指定した距離計量と平均連結法がクラスタリング アルゴリズムで使用されます。

それ以外の場合はいずれも、Distance に指定した距離計量とクラスタリング アルゴリズムで使用される距離計量が一致していないと有意な結果が得られません。

例: 'Distance','Euclidean'

'KList' — 評価するクラスター数のリストベクトル

評価するクラスター数のリスト。'KList' と正の整数値ベクトルで構成されるコンマ区切りのペアとして指定します。KList を指定しなければならないのは、clust がクラスタリング アルゴリズム名の文字列または関数ハンドルの場合です。criterion'gap' の場合、clust は文字列または関数ハンドルでなければならないため、KList を指定しなければなりません。

例: 'KList',[1:6]

プロパティ

ClusteringFunction

入力データのクラスタリングに使用されるクラスタリング アルゴリズム。有効なクラスタリング アルゴリズム名の文字列または関数ハンドルとして格納されます。クラスタリングの解を入力で指定した場合、ClusteringFunction は空になります。

ClusterPriors

各クラスターの事前確率。有効な事前確率名文字列として格納されます。

ClusterSilhouettes

InspectedK の推奨されるクラスター数のそれぞれに対応するシルエット値。ベクトルの配列として格納されます。

CriterionName

クラスタリングの評価に使用される基準の名前。有効な基準名の文字列として格納されます。

CriterionValues

InspectedK の推奨されるクラスター数のそれぞれに対応する基準値。数値のベクトルとして格納されます。

Distance

データのクラスタリングに使用される距離測定。有効な距離測定名の文字列として格納されます。

InspectedK

基準値の計算の対象となる推奨されるクラスター数のリスト。正の整数値のベクトルとして格納されます。

Missing

除外データを表す論理フラグ。論理値の列ベクトルとして格納されます。Missingtrue の場合、データ行列 x の対応する値がクラスタリングの解で使用されません。

NumObservations

データ行列 X の観測値の数から X の欠損値 (NaN) の数を除いた値。正の整数値として格納されます。

OptimalK

最適なクラスター数。正の整数値として格納されます。

OptimalY

OptimalK に対応する最適なクラスタリングの解。正の整数値の列ベクトルとして格納されます。クラスタリングの解を入力で指定した場合、OptimalY は空になります。

X

クラスタリングに使用されるデータ。数値の行列として格納されます。

メソッド

継承メソッド

addK追加クラスター数の評価
compactコンパクト クラスタリング評価オブジェクト
plot クラスタリング評価オブジェクト基準値のプロット

定義

シルエット値

各点のシルエット値は、他のクラスターの点と比べて、その点が自身のクラスター内の他の点にどれくらい相似しているかを示す尺度です。i 番目の点のシルエット値 Si は、次のように定義されます。

Si = (bi-ai)/ max(ai,bi)

ここで aii 番目の点から i と同じクラスターの他の点までの平均距離で、bii 番目の点から別のクラスターの点までの最小平均距離です。

-1 ~ +1 のシルエット値の範囲。高いシルエット値は、i が自身のクラスターに適切に一致し、近隣のクラスターにはあまり一致しないことを示しています。ほとんどの点のシルエット値が高い場合、クラスタリング ソリューションは適切です。シルエット値が低いまたは負の値である点が多い場合、クラスタリング ソリューションに含まれるクラスターの数が多すぎるか、少なすぎるかどちらかの可能性があります。シルエット クラスタリング評価基準は、どの距離計量でも使用できます。

すべて折りたたむ

シルエット基準によるクラスタリングの解の評価

シルエット クラスタリング評価基準を使用して最適なクラスター数を評価します。

異なるパラメーター値をもつ 3 つの多変量分布による乱数を含む標本データを作成します。

rng('default');  % For reproducibility
mu1 = [2 2];
sigma1 = [0.9 -0.0255; -0.0255 0.9];

mu2 = [5 5];
sigma2 = [0.5 0 ; 0 0.3];

mu3 = [-2, -2];
sigma3 = [1 0 ; 0 0.9];
    
N = 200;

X = [mvnrnd(mu1,sigma1,N);...
     mvnrnd(mu2,sigma2,N);...
     mvnrnd(mu3,sigma3,N)];

シルエット基準を使用して最適なクラスター数を評価します。データのクラスタリングには kmeans を使用します。

E = evalclusters(X,'kmeans','silhouette','klist',[1:6])
E = 

  SilhouetteEvaluation with properties:

    NumObservations: 600
         InspectedK: [1 2 3 4 5 6]
    CriterionValues: [NaN 0.8055 0.8551 0.7170 0.7376 0.6239]
           OptimalK: 3

OptimalK の値は、シルエット基準に基づく最適なクラスター数が 3 つであることを示しています。

検定した各クラスター数について、シルエット基準の値をプロットします。

figure;
plot(E)

このプロットは、最大シルエット値が 3 個のクラスターのときに起きることを示しており、最適なクラスター数が 3 であることを提案しています。

推薦されたクラスターを視覚的に調べるためにグループ化された散布図を作成します。

figure;
gscatter(X(:,1),X(:,2),E.OptimalY,'rbg','xod')

このプロットには、データ内の 3 種類のクラスタが明確に表示されます。クラスター 1 が左下隅に、クラスター 2 がプロットの中央付近に、クラスター 3 が右上隅にあります。

参考文献

[1] Kaufman L. and P. J. Rouseeuw. Finding Groups in Data: An Introduction to Cluster Analysis. Hoboken, NJ: John Wiley & Sons, Inc., 1990.

[2] Rouseeuw, P. J. “Silhouettes: a graphical aid to the interpretation and validation of cluster analysis.” Journal of Computational and Applied Mathematics. Vol. 20, No. 1, 1987, pp. 53–65.

この情報は役に立ちましたか?