evalclusters
クラスタリングの解の評価
説明
例
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 Properties, Methods
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 Properties, Methods
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 Properties, Methods
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
クラスタリング評価基準。次のいずれかとして指定します。
'silhouette' | シルエット値を含む SilhouetteEvaluation クラスター評価オブジェクトを作成します。詳細は、シルエット値とシルエット基準を参照してください。 |
'DaviesBouldin' | Davies-Bouldin インデックス値を含む DaviesBouldinEvaluation クラスター評価オブジェクトを作成します。詳細は、Davies-Bouldin 基準を参照してください。 |
'CalinskiHarabasz' | Calinski-Harabasz インデックス値を含む CalinskiHarabaszEvaluation クラスタリング評価オブジェクトを作成します。詳細は、Calinski-Harabasz 基準を参照してください。 |
'gap' | ギャップ基準値を含む GapEvaluation クラスター評価オブジェクトを作成します。詳細は、ギャップ値を参照してください。 |
クラスター評価手法の最適な選択肢はデータ セットの特性に応じて異なります。手法ごとに異なるアルゴリズムを使用して評価メトリクスが導出されます。
シルエット法 (Rouseeuw,1987) では、クラスターの各点のスコア (範囲は +1 ~ –1) を計算します。このスコアは、他のクラスターの点と比較して、ある点が自身のクラスター内の点にどの程度似ているかを示す尺度です。この手法では任意の距離計量を使用できます。平均シルエット スコアを数値メトリクスとして使用したり、
silhouette
プロットを作成して各クラスターの点のスコアを可視化したりできます。この手法ではクラスターの形状が凸であると仮定するため、シルエット メトリクスは不規則な形状のクラスターにはあまり適しません。Davies-Bouldin 法 (Davies and Bouldin,1979) では、クラスター内とクラスター間のユークリッド距離の比に基づく単一のインデックス値を計算します。シルエット法と異なり、この手法ではクラスターの形状に関する仮定は行いません。一般に、クラスター間の分離が大きく、クラスター内の分散が小さいほど、クラスタリングの解の Davies-Bouldin インデックス値が小さくなります (小さいほど良い)。
Calinski-Harabasz (CH) 法 (Calinski と Harabasz、1974 年) は、Davies-Bouldin 法に似ていますが、代わりに二乗ユークリッド距離と分散の統計量を使用します。CH インデックスは、自由度で正規化されたクラスター間の距離分散とクラスター内の距離分散の比に基づきます。この手法ではクラスターの形状に関する仮定は行いません。一般に、クラスター間の分離が大きく、クラスター内の分散が小さいほど、クラスタリングの解の CH インデックス値が大きくなります (大きいほど良い)。
ギャップ値法 (Tibshirani, Walther, and Hastie, 2001) では、クラスタリングの解を、入力点の特性をもつがクラスターがないシミュレーションされた参照分布と比較して、単一のメトリクス値を計算します。同じデータ セットに対する一連の与えられたクラスターの解 (クラスター数 k がそれぞれ異なる) のうち、ギャップ値が最も大きい解が最適解となります。この手法では任意の距離計量を使用できます。ギャップ値法では、クラスタリング アルゴリズムは推奨されるクラスタリングの解ごとに参照データを適用しなければならないため、他のクラスタリング評価手法よりも計算に時間がかかります。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: evalclusters(x,"kmeans","gap",KList=1:5,Distance="cityblock")
は、市街地距離計量を使用して、1、2、3、4 および 5 つのクラスターを検定するよう指定します。
すべての基準に対して
シルエットおよびギャップの場合
基準値の計算に使用する距離計量。'Distance'
と以下のいずれかで構成されるコンマ区切りのペアとして指定します。
'sqEuclidean' | 2 乗ユークリッド距離 |
'Euclidean' | ユークリッド距離。このオプションは、kmeans のクラスタリング アルゴリズムには使用できません。 |
'cityblock' | 差の絶対値の総和 |
'cosine' | 1 から、ベクトルとして扱われる点の間の夾角の余弦を引いた値 |
'correlation' | 1 から、値の系列として扱われる点の間の標本相関を引いた値 |
'Hamming' | 一致しない座標の比率。このオプションは、Silhouette 基準の場合のみ有効です。 |
'Jaccard' | ゼロ以外の一致しない座標の比率。このオプションは、Silhouette 基準の場合のみ有効です。 |
それぞれの距離計量の詳細は、関数 pdist
を参照してください。
関数ハンドルを使用して距離計量の関数を指定することもできます。距離関数の形式は d2 = distfun(XI,XJ)
でなければなりません。ここで、XI
は入力行列 X
の 1 つの行に対応する 1 行 n 列のベクトル、XJ
は X
の複数の行に対応する m2 行 n 列の行列です。distfun
は距離 d2
が含まれている m2 行 1 列のベクトルを返さなければなりません。このベクトルの k 番目の要素は XI
と XJ(k,:)
の間の距離です。
クラスタリング アルゴリズム clust
が距離計量として関数ハンドルを受け入れる場合のみ、Distance
は関数ハンドルを受け入れます。たとえば、kmeans
クラスタリング アルゴリズムは距離計量として関数ハンドルを受け入れません。したがって、kmeans
アルゴリズムを使用して Distance
の関数ハンドルを指定すると、エラーが発生します。
criterion
が'silhouette'
である場合、関数pdist
で作成される出力ベクトルとしてDistance
を指定することもできます。clust
が'kmeans'
または'gmdistribution'
である場合、evalclusters
はDistance
について指定された距離計量を使用してデータをクラスター化します。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' |
K はクラスター数、Gap(K) は K 個のクラスターに対するクラスタリングの解のギャップ値、GAPMAX は最大ギャップ値、SE(GAPMAX) は最大ギャップ値に対応する標準誤差です。 |
'firstMaxSE' |
K はクラスター数、Gap(K) は K 個のクラスターに対するクラスタリングの解のギャップ値、SE(K + 1) は K + 1 個のクラスターに対するクラスターの解の標準誤差です。 |
例: 'SearchMethod','globalMaxSE'
出力引数
クラスタリング評価データ。クラスタリング評価オブジェクトとして返されます。
参照
[1] Rouseeuw, P. J. “Silhouettes: a graphical aid to the interpretation and validation of cluster analysis.” Journal of Computational and Applied Mathematics. Vol. 20, No. 1, 1987, pp. 53–65.
[2] Davies, D. L., and D. W. Bouldin. “A Cluster Separation Measure.” IEEE Transactions on Pattern Analysis and Machine Intelligence. Vol. PAMI-1, No. 2, 1979, pp. 224–227.
[3] Calinski, T., and J. Harabasz. “A dendrite method for cluster analysis.” Communications in Statistics. Vol. 3, No. 1, 1974, pp. 1–27.
[4] 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.
バージョン履歴
R2013b で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)