メインコンテンツ

cophenet

コーフェン相関係数

説明

c = cophenet(Z,Y) は、Z で表される階層クラスター ツリーのコーフェン相関係数を計算します。ここで、Y には Z の作成に使用された距離 (非類似度) が格納されます。

[c,D] = cophenet(Z,Y) は、コーフェン相関距離 DY と同じ下三角距離ベクトルの形式で追加で返します。

すべて折りたたむ

examgrades データ セットを読み込みます。

load examgrades

linkage 関数を使用して階層クラスター ツリーを作成します。average 法と指数が 3 のミンコフスキー距離計量を指定します。

Z = linkage(grades,"average",{"minkowski",3});

pdist 関数を使用して観測値ペア間の距離を計算します。

Y = pdist(grades);

コーフェン相関係数を計算します。

c = cophenet(Z,Y)
c = 
0.6308

相関係数が適度に高く、階層的クラスタリング ツリーによって観測値間の距離のある程度適切な表現が得られることを示しています。

3 つの標準一様分布から無作為に生成したデータが含まれている標本データ セットを作成します。

rng(0,"twister");  % For reproducibility
X = [gallery("uniformdata",[10 3],12); ...
    gallery("uniformdata",[10 3],13)+1.2; ...
    gallery("uniformdata",[10 3],14)+2.5];
c = [ones(10,1);2*(ones(10,1));3*(ones(10,1))]; % Actual classes

データの散布図を作成します。

scatter3(X(:,1),X(:,2),X(:,3),100,c,"filled")

Figure contains an axes object. The axes object contains an object of type scatter.

linkage 関数を使用して階層クラスター ツリーを作成します。weighted 法と標準化されたユークリッド距離計量を指定します。

Z = linkage(X,"weighted","seuclidean");

pdist 関数を使用して観測値ペア間の距離を計算し、デンドログラム プロットを表示します。

Y = pdist(X);
dendrogram(Z)

Figure contains an axes object. The axes object contains 29 objects of type line.

コーフェン相関係数とコーフェン距離を返します。

[c,D] = cophenet(Z,Y)
c = 
0.8179
D = 1×435

    0.8203    0.8203    0.8203    0.4604    0.8203    0.8203    0.7150    0.8203    0.8203    1.8599    1.8599    1.8599    1.8599    1.8599    1.8599    1.8599    1.8599    1.8599    1.8599    3.2866    3.2866    3.2866    3.2866    3.2866    3.2866    3.2866    3.2866    3.2866    3.2866    0.2213    0.7024    0.8203    0.3286    0.7024    0.8203    0.7024    0.4772    1.8599    1.8599    1.8599    1.8599    1.8599    1.8599    1.8599    1.8599    1.8599    1.8599    3.2866    3.2866    3.2866

相関係数が高く、デンドログラムによってペアワイズ距離 Y の適切な表現が得られることを示しています。

各クラスター内のオブジェクト間の最大距離を計算する complete 法を使用して 2 つ目の階層クラスター ツリーを作成します。

ZZ = linkage(X,"complete","seuclidean");

観測値ペア間の距離を計算します。コーフェン相関係数とコーフェン距離を返します。

YY = pdist(X);
[cc,DD] = cophenet(ZZ,YY)
cc = 
0.8202
DD = 1×435

    1.2044    1.2044    1.2044    0.4604    1.2044    1.2044    1.2044    1.2044    1.2044    2.9605    2.9605    2.9605    2.9605    2.9605    2.9605    2.9605    2.9605    2.9605    2.9605    5.0417    5.0417    5.0417    5.0417    5.0417    5.0417    5.0417    5.0417    5.0417    5.0417    0.2213    0.8986    1.2044    0.3696    0.8986    0.8595    0.8986    0.5287    2.9605    2.9605    2.9605    2.9605    2.9605    2.9605    2.9605    2.9605    2.9605    2.9605    5.0417    5.0417    5.0417

2 つのクラスター ツリーのペアワイズ距離とコーフェン距離の散布図を作成します。

scatter(D,Y)
hold on
scatter(DD,YY,"x")
plot([0,max(Y)],[0,max(Y)],"b:",LineWidth=2); % Plot the 1:1 line
xlabel("Cophenetic Distance");
ylabel("Pairwise Distance")
legend("Weighted","Complete","1:1 line",Location="northwest")
hold off

Figure contains an axes object. The axes object with xlabel Cophenetic Distance, ylabel Pairwise Distance contains 3 objects of type scatter, line. These objects represent Weighted, Complete, 1:1 line.

クラスター ツリーのコーフェン相関係数は同程度ですが、complete 法で作成したツリーのコーフェン距離は対応するペアワイズ距離より体系的に大きくなっています。

入力引数

すべて折りたたむ

階層クラスター ツリー。linkage 関数によって返される数値行列として指定します。Z のサイズは (m – 1) 行 3 列です。ここで、m はクラスター ツリーの作成に使用された観測値の数です。Z の 3 列目にはリンク距離が格納されます。詳細については、凝集型の階層クラスター ツリーを参照してください。

データ型: single | double

Z の作成に使用された距離 (非類似度)。pdist 関数によって返される数値行ベクトルとして指定します。Y の長さは m*(m – 1)/2 です。ここで、m はクラスター ツリーの作成に使用された観測値の数です。

データ型: single | double

出力引数

すべて折りたたむ

コーフェン相関係数。数値スカラーとして返されます。クラスター ツリーのコーフェン相関は、ツリーから得たコーフェン距離とそのツリーを作成するときに使用された元の距離 (非類似度) との間の線形相関係数です。つまり、コーフェン相関係数は、ツリーが観測値間の非類似度をどれだけ忠実に表しているかの尺度になります。コーフェン相関係数の大きさが 1 に近ければ、精度の高い解であることを示します。この尺度は、さまざまなアルゴリズムを使用して得た別のクラスターの解を比較するときに使用できます。

Z(:,3)Y の間のコーフェン相関係数は次のように定義されます。

c=i<j(Yijy)(Zijz)i<j(Yijy)2i<j(Zijz)2

ここで

  • Yij は、Y に含まれているオブジェクト i とオブジェクト j の距離です。

  • Zij は、Z(:,3) から得られるオブジェクト i とオブジェクト j のコーフェン距離です。

  • yz はそれぞれ YZ(:,3) の平均です。

コーフェン距離。Y と同じ長さの数値行ベクトルとして返されます。2 つの観測値間のコーフェン距離は、デンドログラムでは 2 つの観測値が最初に結合されたときのリンクの高さで表されます。この高さは、リンクでマージされた 2 つのサブクラスター間の距離です。

バージョン履歴

R2006a より前に導入