ドキュメンテーション

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

clustering.evaluation.GapEvaluation クラス

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

ギャップ基準クラスタリング評価オブジェクト

説明

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

構築

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

eva = evalclusters(x,clust,'Gap',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 のそれぞれについて検定します。

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

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

例: 'B',150

'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'

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

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

例: 'KList',[1:6]

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

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

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

例: 'ReferenceDistribution','uniform'

'SearchMethod' — 最適なクラスター数の選択方法'globalMaxSE' (既定値) | 'firstMaxSE'

最適なクラスター数の選択方法。'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'

プロパティ

B

参照分布から生成されるデータセットの数。正の整数値として格納されます。

ClusteringFunction

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

CriterionName

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

CriterionValues

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

Distance

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

ExpectedLogW

生成される参照データに基づく W の自然対数の期待値。スカラー値のベクトルとして格納されます。W は距離測定 Distance を使用して計算されるクラスター内の分散です。

InspectedK

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

LogW

入力データに基づく W の自然対数。スカラー値のベクトルとして格納されます。W は距離測定 Distance を使用して計算されるクラスター内の分散です。

Missing

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

NumObservations

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

OptimalK

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

OptimalY

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

ReferenceDistribution

参照データの生成方法。有効な参照分布名の文字列として格納されます。

SE

InspectedK の各クラスター数の参照データに対する W の自然対数の標準誤差。スカラー値のベクトルとして格納されます。W は距離測定 Distance を使用して計算されるクラスター内の分散です。

SearchMethod

最適なクラスター数を判定する方法。有効な検索法名の文字列として格納されます。

StdLogW

InspectedK の各クラスター数の参照データに対する W の自然対数の標準偏差。W は距離測定 Distance を使用して計算されるクラスター内の分散です。

X

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

メソッド

increaseB参照データセットの増加

継承メソッド

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

定義

ギャップ値

クラスター評価を行うための一般的でグラフィカルな方法は、複数の推定されるクラスター数を比較する誤差測定をプロットし、そのプロットの「屈曲点」を特定します。「屈曲点」とは誤差測定において最も大きく低下する部分です。ギャップ基準は、ギャップ値が最大になるクラスター数を「屈曲点」と推定することによってこの方法を形式化する手法です。したがって、ギャップ基準では、許容誤差の範囲内で局所的または大域的なギャップ値が最大になる解が最適なクラスター数と見なされます。

ギャップ値は次のように定義されます。

Gapn(k)=En*{log(Wk)}log(Wk),

ここで、n は標本のサイズ、k は評価するクラスター数、Wk はクラスター内に分散がプールされた測定値です。

Wk=r=1k12nrDr,

ここで、nr はクラスター r のデータ点の数、Dr はクラスター r のすべての点に関するペアワイズ距離の合計です。

期待値 En*{log(Wk)} は参照分布からモンテカルロ法による標本化で特定され、log(Wk) は標本データから計算されます。

ギャップ値はクラスターが 1 つしかないクラスタリングの解でも定義され、任意の距離計量で使用できます。ただし、キャップ基準を使用すると、クラスタリング アルゴリズムは推奨されるクラスタリングの解ごとに参照データを適用しなければならないため、他のクラスター評価基準よりも計算に時間がかかります。

すべて折りたたむ

ギャップ基準によるクラスタリングの解の評価

ギャップ クラスタリング評価基準を使用して最適なクラスター数を評価します。

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

load fisheriris;

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

ギャップ基準値に基づいてクラスター数を評価します。データのクラスタリングには kmeans を使用します。

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

  GapEvaluation with properties:

    NumObservations: 150
       InspectecedK: [1 2 3 4 5 6]
    CriterionValues: [1x6 double]
           OptimalK: 4

OptimalK の値は、ギャップ基準に基づく最適なクラスター数が 4 つであることを示しています。

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

figure;
plot(eva);

このプロットでは、クラスター数が 5 つの場合にギャップ基準の値が最大になっています。ただし、1 標準誤差内で最大になるのはクラスター数が 4 つの場合であるため、推奨される最適なクラスター数は 4 つになります。

グループ化した散布図を作成して花弁の長さと幅の関係を調べます。データは推奨されるクラスターごとにグループ化します。

figure;
PetalLength = meas(:,3);
PetalWidth = meas(:,4);
ClusterGroup = eva.OptimalY;
figure;
gscatter(PetalLength,PetalWidth,ClusterGroup,'rbgk','xod^');

このプロットの左下にあるクラスター 1 は、他の 3 つのクラスターとは大きく異なっています。クラスター 1 には花弁の幅と長さが最も小さい花が含まれています。クラスター 4 は右上にあり、花弁の幅と長さが最も大きい花が含まれています。クラスター 2 とクラスター 3 はプロットの中央近くにあり、2 つの極値の間の中間的な大きさの花が含まれています。

参考文献

[1] Tibshirani, R., G. Walther, and T. Hastie. “Estimating the number of clusters in a data set via the gap statistic.” Journal of the Royal Statistical Society: Series B. Vol. 63, Part 2, 2001, pp. 411–423.

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