【问题标题】:Understanding the use of pdist in combination with mdscale了解 pdist 与 mdscale 结合使用
【发布时间】:2016-05-03 02:56:22
【问题描述】:

我正在解决一个混乱的问题。

我有一组 100 个observatons。每个观察由 3 个特征描述。 我必须将这些观察结果分成两组(每个观察结果都有一个标签)。

在对观察结果进行聚类之前,我首先计算观察结果之间的pdist,然后使用 MATLAB 中的 mdscale 函数返回到 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');

【问题讨论】:

    标签: matlab scale cluster-analysis pdist


    【解决方案1】:

    pdist 计算成对距离(使用 KL-Divergence)。

    mdscale(多维缩放)现在将尝试将距离嵌入到 欧几里得向量空间中,以便最好地保留它们。

    K-means适用于平方欧几里得距离(以及一些其他 Bregman 散度)。

    所以在我看来,Matlab 允许您使用其他一些距离是一个错误:

    'sqeuclidean' (默认) | '城市街区' | '余弦' | '相关性' | '汉明'

    如果 KL-Divergence 适合您的数据集,这并不奇怪,因为这种结构允许在 KL-Divergence(近似值)上使用 k-means。

    【讨论】:

    • 是否可以更改 MATLAB kmean 中的距离来比较结果?如果是怎么办?
    • 让我重复一遍:K-means 仅适用于平方欧几里得距离。
    • :) 好的,谢谢。任何将KL散度处理为距离度量的聚类方法?
    • 任何基于距离的聚类。例如层次聚类和 DBSCAN。
    • 嗨@Anony-Mousse,你有时间和我聊聊吗?我真的很感激!
    猜你喜欢
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 2018-08-08
    • 1970-01-01
    • 2012-01-21
    相关资源
    最近更新 更多