Понимание использования pdist в сочетании с mdscale

Я работаю над проблемой скопления.

У меня есть набор из 100 observatons, Каждое наблюдение описывается тремя особенностями. Я должен объединить эти наблюдения в 2 группы (у меня есть метка для каждого наблюдения).

Перед объединением наблюдений я сначала вычислил pdist между наблюдениями, а затем я использовал функцию mdscale в MATLAB, чтобы вернуться к 3 измерениям. Я использовал transformed_observation как ввод алгоритма кластеризации kmean для получения лучших результатов кластеризации (т. е. кластеры совпадают с метками) по сравнению с использованием исходных наблюдений. Кто-нибудь может объяснить мне, почему??? Я только что попробовал...

Здесь вы можете найти мои шаги...

% select the dimensions of my features
dimensions = 3;

% generate an example data set
observations = rand(100,dimensions);

% if yes use the combination of pdist + mdscale
use_dissimilarity = 'yes';

if strcmp(use_dissimilarity,'yes')
  %compute pdist between features
  dissimilarity = pdist(observations,@kullback_leibler_divergence);
  %re-transform features in 3 dimensions                             
  transformed_observations = mdscale(dissimilarity,dimensions);
else
  transformed_observations = observations;
end

%cluster observations 
numbercluster = 2;
[IDX, clustercentroids] = kmeans(transformed_observations, numbercluster,...
                    'emptyaction','singleton',...
                    'replicates',11,'display','off');

1 ответ

Решение

pdist вычисляет попарные расстояния (используя KL-Divergence).

mdscale (Многомерное масштабирование) теперь будет пытаться встроить расстояния в евклидово векторное пространство так, чтобы они лучше сохранялись.

К-среднее работает только с квадратами евклидовых расстояний (и несколькими другими расхождениями Брегмана).

Так что, на мой взгляд, ошибка в том, что Matlab позволяет вам несколько других расстояний:

'sqeuclidean' (по умолчанию) | 'городской блок' | 'косинус' | "корреляция" | "Кривляется"

Неудивительно, что это сработало лучше, если KL-Divergence подходит для вашего набора данных, потому что эта конструкция позволяет использовать k-средства на (приближение) KL-Divergence.

Другие вопросы по тегам