silhouette
シルエット プロット
構文
説明
silhouette(
は、追加パラメーター値を受け入れるカスタム距離関数のハンドル X
,clust
,Distance
,DistParameter
)@
が distfun
Distance
に対して指定された場合に、1 つ以上の追加距離計量パラメーター値を受け入れます。
例
シルエット プロットの作成
さまざまな距離計量を使用して、クラスター化されたデータからシルエット プロットを作成します。
無作為標本データを生成します。
rng('default') % For reproducibility X = [randn(10,2)+3;randn(10,2)-3];
データの散布図を作成します。
scatter(X(:,1),X(:,2));
title('Randomly Generated Data');
散布図は、同じサイズの 2 つのクラスターにデータが分割されるようであることを示しています。
既定の 2 乗ユークリッド距離計量で kmeans
を使用して、データを 2 つのクラスターに分割します。
clust = kmeans(X,2);
clust
には、データのクラスター インデックスが格納されます。
既定の 2 乗ユークリッド距離計量を使用して、クラスター化されたデータからシルエット プロットを作成します。
silhouette(X,clust)
シルエット プロットは、同じサイズの 2 つのクラスターにデータが分割されることを示しています。2 つのクラスターのすべての点でシルエット値が大きい (0.8 以上) ので、クラスターが十分に分離されていることがわかります。
ユークリッド距離計量を使用して、クラスター化されたデータからシルエット プロットを作成します。
silhouette(X,clust,'Euclidean')
シルエット プロットは、同じサイズの 2 つのクラスターにデータが分割されることを示しています。2 つのクラスターのすべての点でシルエット値が大きい (0.6 以上) ので、クラスターが十分に分離されていることがわかります。
シルエット値の計算
クラスタリングしたデータからシルエット値を計算します。
無作為標本データを生成します。
rng('default') % For reproducibility X = [randn(10,2)+1;randn(10,2)-1];
kmeans
を使用して、距離の差の絶対値の総和に基づいて X
内のデータをクラスター化します。
clust = kmeans(X,2,'distance','cityblock');
clust
には、データのクラスター インデックスが格納されます。
クラスタリングしたデータからシルエット値を計算します。kmeans
のクラスタリングが差の絶対値の総和に基づくことを指示するため、距離計量として 'cityblock'
を指定します。
s = silhouette(X,clust,'cityblock')
s = 20×1
0.0816
0.5848
0.1906
0.2781
0.3954
0.4050
0.0897
0.5416
0.6203
0.6664
⋮
カスタム距離計量の使用によるシルエット値の計算
カスタムなカイ二乗距離計量を使用して、クラスター化されたデータからシルエット値を求めます。カイ二乗距離計量はユークリッド距離計量と同等ですが、オプションでスケーリング パラメーターを使用することを検証します。
無作為標本データを生成します。
rng('default'); % For reproducibility X = [randn(10,2)+3;randn(10,2)-3];
既定の 2 乗ユークリッド距離計量で kmeans
を使用して、X
内のデータをクラスター化します。
clust = kmeans(X,2);
ユークリッド距離計量を使用して、シルエット値を求め、クラスター化されたデータからシルエット プロットを作成します。
[s,h] = silhouette(X,clust,'Euclidean')
s = 20×1
0.6472
0.7241
0.5682
0.7658
0.7864
0.6397
0.7253
0.7783
0.7054
0.7442
⋮
h = Figure (1) with properties: Number: 1 Name: '' Color: [1 1 1] Position: [348 376 583 437] Units: 'pixels' Use GET to show all properties
J
次元の点 x と z の間のカイ二乗距離は、次のようになります。
ここで、 は次元 j に関連付けられている重みです。
各次元の重みを設定し、カイ二乗距離関数を指定します。距離関数は以下の手順を実行しなければなりません。
n 行 p 列の入力データ行列
X
、X
の 1 行 (たとえばx
)、およびスケーリング (重み) パラメーターw
を入力引数として受け入れる。x
からX
の各行までの距離を計算する。長さ n のベクトルを返す。ベクトルの各要素は、
x
に対応する観測値とX
の各行に対応する観測値の間の距離です。
w = [0.4; 0.6]; % Set arbitrary weights for illustration
chiSqrDist = @(x,Z,w)sqrt(((x-Z).^2)*w);
カスタムな距離計量 chiSqrDist
を使用して、クラスター化されたデータからシルエット値を求めます。
s1 = silhouette(X,clust,chiSqrDist,w)
s1 = 20×1
0.6288
0.7239
0.6244
0.7696
0.7957
0.6688
0.7386
0.7865
0.7223
0.7572
⋮
両方の次元の重みを 1 に設定して、chiSqrDist
をユークリッド距離計量として使用します。シルエット値を求め、s
の値と同じであることを確認します。
w2 = [1; 1]; s2 = silhouette(X,clust,chiSqrDist,w2); AreValuesEqual = isequal(s2,s)
AreValuesEqual = logical
1
シルエット値は s
と s2
で同じです。
入力引数
X
— 入力データ
数値行列
入力データ。n 行 p 列の数値行列を指定します。行は観測値に、列は座標に対応します。
データ型: single
| double
clust
— クラスター割り当て
カテゴリカル変数 | 数値ベクトル | 文字行列 | string 配列 | 文字ベクトルの cell 配列
クラスター割り当て。X
の各点のクラスター名が格納されているカテゴリカル変数、数値ベクトル、文字行列、string 配列、または文字ベクトルの cell 配列を指定します。
silhouette
は、clust
内の NaN
および空の値を欠損値として扱い、X
の対応する行を無視します。
データ型: single
| double
| char
| string
| cell
| categorical
Distance
— 距離計量
'sqEuclidean'
(既定値) | 'Euclidean'
| 'cityblock'
| 関数ハンドル | ペアワイズ距離のベクトル | ...
距離計量。次の表に記載されている文字ベクトル、string スカラーまたは関数ハンドルを指定します。
メトリクス | 説明 |
---|---|
'Euclidean' | ユークリッド距離 |
'sqEuclidean' | 2 乗ユークリッド距離 (既定の設定) |
'cityblock' | 差の絶対値の総和 |
'cosine' | 1 から、ベクトルとして扱われる点の間の夾角の余弦を引いた値 |
'correlation' | 1 から、値の系列として扱われる点の間の標本相関を引いた値 |
'Hamming' | 一致しない座標の比率 |
'Jaccard' | ゼロ以外の一致しない座標の比率 |
ベクトル | 関数 pdist が作成する形式の、ペアワイズ距離の数値行ベクトル。この場合の X は、使用されないので [] に設定しても問題はありません。 |
@ | カスタム距離関数のハンドル。距離関数の形式は次のようになります。 function D = distfun(X0,X,
|
詳細は、距離計量を参照してください。
例: 'cosine'
データ型: char
| string
| function_handle
| single
| double
DistParameter
— 距離計量のパラメーター値
正のスカラー | 数値ベクトル | 数値行列
距離計量のパラメーター値。正のスカラー、数値ベクトルまたは数値行列を指定します。この引数が有効なのは、入力パラメーター X0
および X
に加えて 1 つ以上のパラメーター値を受け入れるカスタム距離関数のハンドル @
を指定する場合だけです。distfun
例: silhouette(X,clust,distfun,p1,p2)
。p1
と p2
は、@
用の追加距離計量パラメーター値です。distfun
データ型: single
| double
出力引数
s
— シルエット値
–1
から 1
の範囲にある値が含まれている n 行 1
列のベクトル
シルエット値。–1
から 1
の範囲にある値が含まれている n 行 1
列のベクトルとして返されます。シルエット値は、他のクラスターの点と比較して、ある点が自身のクラスター内の点にどの程度似ているかを示す尺度です。値の範囲は、–1
~ 1
です。高いシルエット値は、点が自身のクラスターに十分に一致し、他のクラスターにはあまり一致しないことを示します。
データ型: single
| double
h
— Figure のハンドル
スカラー
Figure のハンドル。スカラーとして返されます。Figure のハンドルを使用して、Figure のプロパティのクエリと修正を行うことができます。詳細については、Figure のプロパティ を参照してください。
詳細
シルエット値
各点のシルエット値は、他のクラスターの点と比べて、その点が同じクラスター内の他の点にどれくらい相似しているかを示す尺度です。
i 番目の点のシルエット値 si は、次のように定義されます。
ここで ai は i 番目の点から i と同じクラスターの他の点までの平均距離で、bi は i 番目の点から別のクラスターの点までの最小平均距離です。i 番目の点がそのクラスター内の唯一の点である場合、シルエット値 si は 1 に設定されます。
シルエット値の範囲は –1 ~ 1 です。高いシルエット値は、点が自身のクラスターに十分に一致し、他のクラスターにはあまり一致しないことを示します。ほとんどの点のシルエット値が高い場合、クラスタリング ソリューションは適切です。多くの点のシルエット値が小さいか負である場合、クラスター化の解に含まれるクラスターの個数が多すぎるか少なすぎる可能性があります。シルエット値は、任意の距離計量によるクラスター化の評価基準として使用できます。
参照
[1] Kaufman L., and P. J. Rousseeuw. Finding Groups in Data: An Introduction to Cluster Analysis. Hoboken, NJ: John Wiley & Sons, Inc., 1990.
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)