【问题标题】:K-Means Algorithm with Arbitrary Distance Function MATLAB (Chebyshev Distance)具有任意距离函数 MATLAB(切比雪夫距离)的 K-Means 算法
【发布时间】:2012-04-09 04:39:54
【问题描述】:

有没有办法在 K-means 中设置另一个距离而不是实现的那五个 在 Matlab 中,例如 Chebyshev 距离:

D=max(abs(xj-xi))

谢谢。

最好的,

帕夫洛斯

【问题讨论】:

    标签: matlab k-means


    【解决方案1】:

    这可能会对你有所帮助。

    http://www.purplemath.com/modules/distform.htm

    http://www.mathwarehouse.com/algebra/distance_formula/index.php

    另外,还有一个计算两点距离的概念,叫做“City Block Distance”,类似于两点的绝对距离。示例:

    距离,d = |x2-x1| + |y2-y1| 或 d = |x1-x2| + |y1-y2|(结果是绝对的,任何形式都可以) 请检查并尝试。

    【讨论】:

    • 你告诉他与他想做的完全相反的事情。他想要 L\inf,而你告诉他使用 L1。
    【解决方案2】:

    切比雪夫距离等于无穷大norm。这应该有助于您在 Matlab 文档中进行搜索。

    我在 Matlab 中通读了 K-means 的 documentation,并没有提到用额外的距离规范来扩展函数。所以,你可能应该自己实现它。

    另一种选择是查找从 Linf 到 L2 的映射,但这不存在。对不起。

    【讨论】:

      【解决方案3】:

      如果您没有使用 K-means 的任何特定原因,并且可以处理 Hierarchical Agglomerative Clustering,则可以使用 clusterdata 函数。它也适用于切比雪夫距离。

      【讨论】:

        【解决方案4】:

        我认为层次聚类可能更符合您的要求,因为您可以轻松指定距离函数。

        但是,如果您真的想使用 k-means,您可以使用您喜欢的任何函数创建一个距离矩阵,然后使用 SVD 将您的距离矩阵分解为一个特征空间。然后,对由 SVD 的分数表示的新特征空间执行 k-means。

        我不知道 K-means 会与其他距离指标收敛。

        【讨论】:

          【解决方案5】:

          我为非常简单的 K-Means 创建了一个 MATLAB 代码,它接受任意距离函数。

          您可以在GitHub Repository获取代码。

          以下是 3 种不同距离指标的结果:

          【讨论】:

            猜你喜欢
            • 2017-09-15
            • 2013-04-22
            • 2013-09-12
            • 2011-10-18
            • 2013-02-02
            • 2018-08-16
            • 2012-08-21
            • 2018-04-06
            • 2014-02-14
            相关资源
            最近更新 更多