2016-01-26 3 views
0

Я работаю над проблемой clutering.Понимание использования 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-дивергенция).

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

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

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

«sqeuclidean» (по умолчанию) | 'cityblock' | 'косинус' | «корреляция» | «» Кривляется

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

+0

возможно изменить расстояние от MATLAB kmean, чтобы сравнить результаты? если да, то как? – gabboshow

+0

Позвольте мне повторить следующее: K-означает, что работает только с квадратичными евклидовыми расстояниями. –

+0

:) ОК спасибо. любой метод кластеризации, который обрабатывает KL-расходимость как метрику расстояния? – gabboshow