ドキュメンテーション

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

evalclusters

クラスタリングの解の評価

構文

  • eva = evalclusters(x,clust,criterion)
  • eva = evalclusters(x,clust,criterion,Name,Value)

説明

eva = evalclusters(x,clust,criterion) は、最適なデータ クラスター数を評価するために使用されるデータを含むクラスタリング評価オブジェクトを作成します。

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

すべて折りたたむ

Calinski-Harabasz クラスタリング評価基準を使用して最適なクラスター数を評価します。

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

load fisheriris;

このデータには、3 種のアヤメの花のがく片と花弁からの長さと幅の測定値が含まれています。

Calinski-Harabasz 基準を使用して最適なクラスター数を評価します。データのクラスタリングには kmeans を使用します。

rng('default');  % For reproducibility
eva = evalclusters(meas,'kmeans','CalinskiHarabasz','KList',[1:6])
eva = 

  CalinskiHarabaszEvaluation with properties:

    NumObservations: 150
         InspectedK: [1 2 3 4 5 6]
    CriterionValues: [NaN 513.9245 561.6278 530.4871 456.1279 469.5068]
           OptimalK: 3

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

推奨されるクラスタリングの解の入力行列を使用して、最適なクラスター数を評価します。

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

load fisheriris;

このデータには、3 種のアヤメの花のがく片と花弁からの長さと幅の測定値が含まれています。

kmeans を使用し、クラスター数を 1、2、3、4、5、6 にして、がく片の長さの測定値に対する推奨されるクラスタリングの解の入力行列を作成します。

clust = zeros(size(meas,1),6);
for i=1:6
clust(:,i) = kmeans(meas,i,'emptyaction','singleton',...
        'replicate',5);
end

clust の各行は、1 つのがく片の長さの測定値に対応します。6 つの各列は、1 ~ 6 クラスターを含むクラスタリングの解に対応します。

Calinski-Harabasz 基準を使用して最適なクラスター数を評価します。

eva = evalclusters(meas,clust,'CalinskiHarabasz')
eva = 

  CalinskiHarabaszEvaluation with properties:

    NumObservations: 150
         InspectedK: [1 2 3 4 5 6]
    CriterionValues: [NaN 513.9245 561.6278 530.7658 495.5415 470.4474]
           OptimalK: 3

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

関数ハンドルを使用してクラスタリング アルゴリズムを指定してから、最適なクラスター数を評価します。

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

load fisheriris;

このデータには、3 種のアヤメの花のがく片と花弁からの長さと幅の測定値が含まれています。

関数ハンドルを使用してクラスタリング アルゴリズムを指定します。

myfunc = @(X,K)(kmeans(X, K, 'emptyaction','singleton',...
    'replicate',5));

Calinski-Harabasz 基準を使用してがく片の長さのデータに対する最適なクラスター数を評価します。

eva = evalclusters(meas,myfunc,'CalinskiHarabasz',...
    'klist',[1:6])
eva = 

  CalinskiHarabaszEvaluation with properties:

    NumObservations: 150
         InspectedK: [1 2 3 4 5 6]
    CriterionValues: [NaN 513.9245 561.6278 530.4871 495.5415 473.8506]
           OptimalK: 3

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

関連する例

入力引数

すべて折りたたむ

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

データ型: single | double

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

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

Criterion'CalinskHarabasz''DaviesBouldin' または 'silhouette' の場合、「関数ハンドル」を使用してクラスタリング アルゴリズムを指定できます。この関数は 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 個の各点に対するクラスター インデックスが格納されます。

クラスタリング評価基準。次のいずれかとして指定します。

'CalinskiHarabasz'Calinski-Harabasz インデックス値を含む CalinskiHarabaszEvaluation クラスタリング評価オブジェクトを作成します。
'DaviesBouldin'Davies-Bouldin インデックス値を含む DaviesBouldinEvaluation クラスター評価オブジェクトを作成します。
'gap'ギャップ基準値を含む GapEvaluation クラスター評価オブジェクトを作成します。
'silhouette'シルエット値を含む SilhouetteEvaluation クラスター評価オブジェクトを作成します。

名前/値のペアの引数

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

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

すべての基準に対して

すべて折りたたむ

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

例: 'KList',[1:6]

シルエットおよびギャップの場合

すべて折りたたむ

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

'sqEuclidean'2 乗ユークリッド距離
'Euclidean'ユークリッド距離
'cityblock'差の絶対値の総和
'cosine'1 から、ベクトルとして扱われる点の間の夾角の余弦を引いた値
'correlation'1 から、値の系列として扱われる点の間の標本相関を引いた値
'Hamming'一致しない座標の割合。このオプションは、Silhouette 基準の場合のみ有効です。
'Jaccard'ゼロ以外の一致しない座標の割合。このオプションは、Silhouette 基準の場合のみ有効です。

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

「関数ハンドル」を使用して距離計量の関数を指定することもできます。距離関数の形式は 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 に指定した距離計量とクラスタリング アルゴリズムで使用される距離計量が一致していないと有意な結果が得られません。

クラスタリング アルゴリズム clust が距離計量として関数ハンドルを受け入れる場合のみ、Distance は関数ハンドルを受け入れます。たとえば、kmeans クラスタリング アルゴリズムは距離計量として関数ハンドルを受け入れません。したがって、kmeans アルゴリズムを使用して Distance の関数ハンドルを指定すると、エラーが発生します。

例: 'Distance','Euclidean'

シルエットのみの場合

すべて折りたたむ

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

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

例: 'ClusterPriors','empirical'

ギャップのみの場合

すべて折りたたむ

参照分布 ReferenceDistribution から生成される参照データセットの数。'B' と正の整数値で構成されるコンマ区切りのペアとして指定します。

例: 'B',150

参照データの生成方法。'ReferenceDistributions' と以下のいずれかで構成されるコンマ区切りのペアとして指定します。

'PCA'データ行列 x の主成分に合わせて整列されたボックスにおける一様分布から参照データを生成します。
'uniform'データ行列 x の各特徴の範囲で均一に参照データを生成します。

例: 'ReferenceDistribution','uniform'

最適なクラスター数の選択方法。'SearchMethod' と以下のいずれかで構成されるコンマ区切りのペアとして指定します。

'globalMaxSE'KList の推奨されるクラスター数をそれぞれ評価し、次の条件を満たす最も少ないクラスター数を選択します。

Gap(K)GAPMAXSE(GAPMAX),

ここで、K はクラスターの数、Gap(K) は K 個のクラスターに対するクラスタリングの解のギャップ値、GAPMAX は最大ギャップ値、SE(GAPMAX) は最大ギャップ値に対応する標準誤差です。
'firstMaxSE'KList の推奨されるクラスター数をそれぞれ評価し、次の条件を満たす最も少ないクラスター数を選択します。

Gap(K)Gap(K+1)SE(K+1),

ここで、K はクラスターの数、Gap(K) は K 個のクラスターに対するクラスタリングの解のギャップ値、SE(K + 1) は K + 1 個のクラスターに対するクラスタリングの解の標準誤差です。

例: 'SearchMethod','globalMaxSE'

出力引数

すべて折りたたむ

クラスタリング評価データ。クラスタリング評価オブジェクトとして返されます。

R2013b で導入

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