Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

evalclusters

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

説明

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

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

すべて折りたたむ

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

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

loadfisheriris;

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

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

rng('default');% For reproducibilityeva = evalclusters(meas,'kmeans','CalinskiHarabasz','KList',[1:6])
eva = CalinskiHarabaszEvaluation with properties: NumObservations: 150 InspectedK: [1 2 3 4 5 6] CriterionValues: [Inf 513.9245 561.6278 530.4871 456.1279 469.5068] OptimalK: 1

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

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

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

loadfisheriris;

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

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

clust = zeros(size(meas,1),6);fori=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 つであることを示しています。

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

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

loadfisheriris;

このデータには、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クラスタリング評価オブジェクトを作成します。
'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は文字ベクトル、string スカラーまたは関数ハンドルでなければならず、KListを指定しなければなりません。

例:'KList',[1:6]

データ型:single|double

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

すべて折りたたむ

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

'sqEuclidean' 2 乗ユークリッド距離
'Euclidean' ユークリッド距離。このオプションは、kmeansのクラスタリング アルゴリズムには使用できません。
'cityblock' 差の絶対値の総和
的余弦 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'と、以下のいずれかで構成されるコンマ区切りのペアとして指定します。

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

例:“ClusterPriors”、“经验”

ギャップのみの場合

すべて折りたたむ

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

例:'B',150

データ型:single|double

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

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

例:'ReferenceDistribution','uniform'

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

'globalMaxSE'

KListで指定されたクラスター数のそれぞれを評価し、次の条件を満たす最小のクラスター数を選択します。

Gap ( K ) G A P M A X SE ( G A P M A X ) ,

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