K-meansクラスタリングとPCAが非常に異なる目標を持っているように見え、一見関連していないようです。しかし、Ding&He 2004のK-means Clustering by Principal Component Analysisで説明されているように、それらの間には深いつながりがあります。
直感では、PCAはすべてのデータベクトルを少数の固有ベクトルの線形結合として表現しようとし、平均二乗再構成エラーを最小化することを目指しています。対照的に、K-meansは、少数のクラスター重心を介してすべてのデータベクトルを表す、つまり、を除いて線形結合の重みがすべてゼロでなければならない少数のクラスター重心ベクトルの線形結合として表すことを目指します。これは、平均二乗再構成誤差を最小化するためにも行われます。n 1nn1
したがって、K-meansは超疎PCAと見なすことができます。
Ding&Heの論文は、この接続をより正確にするためのものです。
残念ながら、Ding&Heの論文にはいくつかのずさんな処方が含まれており(よくても)誤解されやすい。たとえば、Ding&Heは、K平均クラスタリングソリューションのクラスター重心が次元PCA部分空間にあることを証明したと主張しているように見えるかもしれません。(K−1)
定理3.3。クラスター重心部分空間は、最初の主方向[...]にまたがってい
ます。K−1
以下のためにこれは、PC1軸上の突起は、必ずしもすなわちPC2軸が完全にクラスタを分離する、別のクラスタのための1つのクラスタの陰性および陽性になることを暗示します。K=2
これは間違いか、いくつかのずさんな文章です。いずれにせよ、文字通り、この特定の主張は間違っています。
2Dのおもちゃの例を見てみましょう。同じ共分散行列で平均が異なる2つの正規分布からいくつかのサンプルを生成しました。その後、K-meansとPCAの両方を実行しました。次の図は、上のデータの散布図と、下のK-meansソリューションに従って色付けされた同じデータを示しています。また、最初の主な方向を黒い線で示し、K手段で見つかったクラスの重心を黒い十字で示します。PC2軸は黒い破線で示されています。グローバル平均への収束を保証するために、ランダムなシードを使用してK平均が回繰り返されました。100K=2100
クラスの重心が最初のPC方向にかなり近い傾向がある場合でも、正確にそれには該当しないことがはっきりとわかります。さらに、PC2軸はサブプロット1と4でクラスターを完全に分離しますが、サブプロット2と3でその反対側にいくつかの点があります。
したがって、K-meansとPCAの一致は非常に良好ですが、正確ではありません。
それで、Ding&彼は何を証明しましたか?簡単にするために、場合のみを検討します。各クラスターに割り当てられたポイントの数をと に、ポイントの総数をます。丁&Heを以下、の定義でき、クラスタインジケータベクトル 次のように場合ポイントを番目の1クラスタに属し、がクラスター2に属する場合。クラスターインジケーターベクトルの単位長はであり、「中央揃え」です。つまり、その要素の合計はゼロになります。、N 1 、N 2、N = N 1つの + N 2 のq ∈ R、N 、Q 、I = √K=2n1n2n=n1+n2 q∈Rn IQI=-√qi=n2/nn1−−−−−−√i ‖Q‖=1qi=−n1/nn2−−−−−−√∥q∥=1∑qi=0
Ding&Heは、K-means損失関数(K-meansアルゴリズムが最小化する)は、、ここではすべての点間のスカラー積のグラム行列です:、ここではデータ行列で、は中心データ行列です。∑k∑i(xi−μk)2−q⊤GqGn×nG=X⊤cXcXn×2Xc
(注:私は彼らの論文とわずかに異なる記法と用語を使用していますが、より明確だと思います)。
したがって、K-means解は、最大化する中心単位ベクトルです。最初の主成分(単位の平方和を持つように正規化された場合)がGram行列の先頭の固有ベクトルであることを示すのは簡単です。つまり、中心単位のベクトル、。唯一の違いは、はこの制約がないのに対して、は2つの異なる値のみが追加で制約されることです。qq⊤Gqpp⊤Gpqp
つまり、K-meansとPCA は同じ目的関数を最大化しますが、唯一の違いはK-meansに追加の「カテゴリ」制約があることです。
上記のシミュレーションで見たように、ほとんどの場合、K-means(制約付き)とPCA(非制約付き)のソリューションは互いに非常に近いと考えられますが、それらが同一であることを期待すべきではありません。を取り、そのすべての負の要素を等しく設定し、すべての正の要素をすると、通常、正確に得られ ません。p−n1/nn2−−−−−−√n2/nn1−−−−−−√q
Dingと彼は、定理を次のように定式化しているため、これをよく理解しているようです。
定理2.2。平均クラスタリングの場合、クラスター指標ベクトルの連続解は[最初の]主成分ですK=2
「継続的解決」という言葉に注意してください。この定理を証明した後、彼らはさらに、PCAを使用してK-meansの繰り返しを初期化することができるとコメントしています。これは、が近いと予想されることを考えると意味があります。しかし、同一ではないため、反復を実行する必要があります。qp
しかし、Ding&Heはより一般的な治療法を開発し、定理3.3を次のように定式化します。K>2
定理3.3。クラスター重心部分空間は、最初の主方向[...]にまたがってい
ます。K−1
私はセクション3の数学を経験しませんでしたが、この定理は実際にはK平均の「連続解」にも言及していると思います。つまり、その文は「K平均の連続解のクラスター重心空間はスパンド[...]」。
しかし、Ding&Heは、この重要な資格を与えず、さらに、
ここでは、主成分がK平均クラスタリングの離散クラスターメンバーシップインジケーターの連続解であることを証明します。同様に、クラスター重心がまたがる部分空間は、項で切り捨てられたデータ共分散行列のスペクトル展開によって与えられることを示します。K−1
最初の文は完全に正しいですが、2番目の文は正しくありません。これが(非常に)ずさんな文章なのか、本物の間違いなのかははっきりしません。両方の著者に、明確化を求めて非常に丁寧にメールを送りました。(2か月後の更新:私は彼らから返事を聞いたことがない。)
MATLABシミュレーションコード
figure('Position', [100 100 1200 600])
n = 50;
Sigma = [2 1.8; 1.8 2];
for i=1:4
means = [0 0; i*2 0];
rng(42)
X = [bsxfun(@plus, means(1,:), randn(n,2) * chol(Sigma)); ...
bsxfun(@plus, means(2,:), randn(n,2) * chol(Sigma))];
X = bsxfun(@minus, X, mean(X));
[U,S,V] = svd(X,0);
[ind, centroids] = kmeans(X,2, 'Replicates', 100);
subplot(2,4,i)
scatter(X(:,1), X(:,2), [], [0 0 0])
subplot(2,4,i+4)
hold on
scatter(X(ind==1,1), X(ind==1,2), [], [1 0 0])
scatter(X(ind==2,1), X(ind==2,2), [], [0 0 1])
plot([-1 1]*10*V(1,1), [-1 1]*10*V(2,1), 'k', 'LineWidth', 2)
plot(centroids(1,1), centroids(1,2), 'w+', 'MarkerSize', 15, 'LineWidth', 4)
plot(centroids(1,1), centroids(1,2), 'k+', 'MarkerSize', 10, 'LineWidth', 2)
plot(centroids(2,1), centroids(2,2), 'w+', 'MarkerSize', 15, 'LineWidth', 4)
plot(centroids(2,1), centroids(2,2), 'k+', 'MarkerSize', 10, 'LineWidth', 2)
plot([-1 1]*5*V(1,2), [-1 1]*5*V(2,2), 'k--')
end
for i=1:8
subplot(2,4,i)
axis([-8 8 -8 8])
axis square
set(gca,'xtick',[],'ytick',[])
end