Main Content

evalclusters

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

説明

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.4871 456.1279 469.5068]
           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 456.1279 469.5068]
           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'CalinskiHarabasz''DaviesBouldin' または 'silhouette' の場合、関数ハンドルを使用してクラスタリング アルゴリズムを指定できます。この関数は C = clustfun(DATA,K) (DATA はクラスタリングするデータ、K はクラスター数) という形式でなければなりません。clustfun の出力は、次のいずれかでなければなりません。

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

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

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

データ型: single | double | char | string | function_handle

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

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

名前と値の引数

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

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

例: 'KList',[1:5],'Distance','cityblock' は、市街地距離計量を使用して、1、2、3、4 および 5 つのクラスターを検定するよう指定します。

すべての基準に対して

すべて折りたたむ

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

例: 'KList',[1:6]

データ型: single | double

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

すべて折りたたむ

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

'sqEuclidean'2 乗ユークリッド距離
'Euclidean'ユークリッド距離。このオプションは、kmeans のクラスタリング アルゴリズムには使用できません。
'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,:) の間の距離です。

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

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

  • clust'kmeans' または 'gmdistribution' である場合、evalclustersDistance について指定された距離計量を使用してデータをクラスター化します。

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

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

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

例: 'Distance','Euclidean'

データ型: single | double | char | string | function_handle

シルエットのみの場合

すべて折りたたむ

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

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

例: 'ClusterPriors','empirical'

ギャップのみの場合

すべて折りたたむ

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

例: 'B',150

データ型: single | double

参照データの生成方法。'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 で導入