Это правда, что кластеризация K-средних и PCA, по-видимому, имеют совершенно разные цели и на первый взгляд, похоже, не связаны между собой. Однако, как объяснено в статье D-& He 2004 г. Кластеризация K-средних с помощью анализа основных компонентов , между ними существует глубокая связь.
Интуиция заключается в том, что PCA стремится представить все векторов данных в виде линейных комбинаций небольшого числа собственных векторов и делает это для минимизации среднеквадратичной ошибки восстановления. Напротив, K-среднее стремится представлять все векторов данных через небольшое количество центроидов кластеров, то есть представлять их как линейные комбинации небольшого числа векторов центроидов кластеров, где веса линейных комбинаций должны быть равны нулю, за исключением одного . Это также сделано, чтобы минимизировать среднеквадратичную ошибку реконструкции.n 1nn1
Таким образом, K-средних можно рассматривать как супер разреженный PCA.
То, что делает бумага Ding & He, это сделать эту связь более точной.
К сожалению, статья Ding & He содержит неаккуратные формулировки (в лучшем случае) и может быть легко понята неправильно. Например, может показаться, что Ding & He утверждают, что доказали, что центроиды кластеров решения кластеризации K-средних лежат в -мерном подпространстве PCA:(K−1)
Теорема 3.3. Подпространство центроида кластера охватывает первые
основные направления [...].K−1
Для это будет означать, что проекции на оси PC1 обязательно будут отрицательными для одного кластера и положительными для другого кластера, то есть ось PC2 будет идеально разделять кластеры.K=2
Это либо ошибка, либо неаккуратное написание; в любом случае, буквально это конкретное утверждение является ложным.
Давайте начнем с рассмотрения некоторых игрушечных примеров в 2D для . Я сгенерировал несколько выборок из двух нормальных распределений с одной и той же ковариационной матрицей, но разными способами. Я тогда управлял и K-means и PCA. На следующем рисунке показан график разброса данных выше и те же данные, окрашенные в соответствии с решением K-средних, приведенным ниже. Я также показываю первое основное направление в виде черной линии и центроидов классов, найденных с помощью K-средних с черными крестами. Ось PC2 показана пунктирной черной линией. К-среднее было повторено раз со случайными семенами, чтобы обеспечить сходимость к глобальному оптимуму.100K=2100
Хорошо видно, что, хотя центроиды классов, как правило, довольно близки к первому направлению ПК, они точно не падают на него. Более того, даже несмотря на то, что ось PC2 прекрасно разделяет кластеры на участках 1 и 4, на участках 2 и 3 есть пара точек с обратной стороны.
Таким образом, соглашение между K-means и PCA довольно хорошее, но не точное.
Так что же доказали Дин и Он? Для простоты я рассмотрю только случай . Пусть количество точек, назначенных каждому кластеру, равно и а общее количество точек . Следуя Ding & He, давайте определим вектор индикатора кластера следующим образом: если точки принадлежат кластеру 1, и если он принадлежит кластеру 2. Вектор индикатора кластера имеет единичную длину и является "центрированным", то есть его элементы sum to zero .n 1 n 2 n = n 1 + n 2 q ∈ R n q i = √K=2n1n2n=n1+n2 q∈Rn iqi=-√qi=n2/nn1−−−−−−√iqi=−n1/nn2−−−−−−√∥q∥=1∑qi=0
Ding & He показывают, что функция потерь K-средних (этот алгоритм K-средних минимизирует) может быть эквивалентно переписана как , где - матрица Грама скалярных произведений между всеми точками: , где - матрица данных и - центрированная матрица данных.∑k∑i(xi−μk)2−q⊤GqGn×nG=X⊤cXcXn×2Xc
(Примечание: я использую обозначения и терминологию, которые немного отличаются от их статьи, но которые я нахожу более понятными).
Таким образом, решение K-средних - это центрированный единичный вектор, максимизирующий . Легко показать, что первый главный компонент (когда нормализовано иметь единичную сумму квадратов) является ведущим собственным вектором матрицы Грама, то есть он также является центрированным единичным вектором максимизирующим . Единственное отличие состоит в том, что дополнительно ограничен двумя разными значениями, тогда как не имеет этого ограничения.qq⊤Gqpp⊤Gpqp
Другими словами, K-средних и PCA максимизируют одну и ту же целевую функцию , с той лишь разницей, что у K-средних есть дополнительное «категориальное» ограничение.
Само собой разумеется, что в большинстве случаев решения K-средних (с ограничениями) и PCA (без ограничений) будут довольно близки друг к другу, как мы видели выше при моделировании, но не следует ожидать, что они будут идентичными. Принятие и установка всех его отрицательных элементов равными и всех его положительных элементов в обычно не дают точно .p−n1/nn2−−−−−−√n2/nn1−−−−−−√q
Дин и Он, кажется, хорошо это понимают, потому что они формулируют свою теорему следующим образом:
Теорема 2.2. Для кластеризации K-средних, где , непрерывное решение вектора индикатора кластера является [первым] главным компонентомK=2
Обратите внимание, что слова «непрерывное решение». После доказательства этой теоремы они дополнительно комментируют, что PCA может использоваться для инициализации итераций K-средних, что имеет полный смысл, учитывая, что мы ожидаем, что будет близко к . Но все же нужно выполнять итерации, потому что они не идентичны.qp
Тем не менее, Дин и Хэ продолжили разработку более общего подхода к и в итоге сформулировали теорему 3.3 какK>2
Теорема 3.3. Подпространство центроида кластера охватывает первые
основные направления [...].K−1
Я не проходил математику в разделе 3, но я полагаю, что эта теорема на самом деле также относится к «непрерывному решению» K-средних, то есть его утверждение должно читаться как «кластерное центроидное пространство непрерывного решения K-средних. натянутый [...] ".
Ding & He, однако, не делают эту важную квалификацию, и, кроме того, напишите в своем резюме, что
Здесь мы доказываем, что главными компонентами являются непрерывные решения индикаторов дискретности кластеров для K-средних. Эквивалентно, мы показываем, что подпространство, охватываемое центроидами кластера, задается спектральным расширением ковариационной матрицы данных, усеченной в терминах .K−1
Первое предложение абсолютно правильно, а второе - нет. Мне не ясно, является ли это (очень) неаккуратным письмом или подлинной ошибкой. Я очень вежливо послал по электронной почте обоим авторам, просящим разъяснения. (Обновление два месяца спустя: я никогда не получал ответ от них.)
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