ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

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 基準によるクラスタリングの解の評価

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
       InspectecedK: [1 2 3 4 5 6]
    CriterionValues: [1x6 double]
           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 459.5058 473.6577]
           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.7658 459.5058 473.6577]
           OptimalK: 3

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

入力引数

すべて展開する

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 個の各点に対するクラスター インデックスが格納されます。

criterion - クラスタリング評価基準'CalinskiHarabasz' | 'DaviesBouldin' | 'gap' | 'silhouette'

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

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

例: 'KList',[1:6]

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

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

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

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

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

function_handle (@) 演算子を使用して距離計量の関数を指定することもできます。距離関数は次の形式でなければなりません。

d2 = distfun(XI,XJ),

ここで、XI は 1 行の入力行列 X に対応する 1 行 n 列のベクトル、XJ は複数行の X に対応する 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'

シルエットのみの場合

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

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

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

例: 'ClusterPriors','empirical'

ギャップのみの場合

'B' - 参照データセットの数100 (既定の設定) | 正の整数値

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

例: 'B',150

'ReferenceDistribution' - 参照データの生成方法'PCA' (既定の設定) | 'uniform'

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

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

例: 'ReferenceDistribution','uniform'

'SearchMethod' - 最適なクラスター数の選択方法'firstmaxse' | 'globalmaxse'

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

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

ここで、K はクラスターの数、Gap(K) は K 個のクラスターに対するクラスタリングの解のギャップ値、SE(K + 1) は K + 1 個のクラスターに対するクラスタリングの解の標準誤差です。並べ替え後の KList に連続する整数値が含まれる場合、これが既定の設定になります。
'globalmaxse'KList の推奨されるクラスター数をそれぞれ評価し、次の条件を満たす最も少ないクラスター数を選択します。

ここで、K はクラスターの数、Gap(K) は K 個のクラスターに対するクラスタリングの解のギャップ値、GAPMAX は最大ギャップ値、SE(GAPMAX) は最大ギャップ値に対応する標準誤差です。KList に値が 1 つしか含まれていない場合または連続しない整数値が含まれる場合、これが既定の設定になります。

例: 'SearchMethod','globalmaxse'

出力引数

すべて展開する

eva - クラスタリング評価データクラスタリング評価オブジェクト

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

参考

| | |

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