查看原文
其他

第10.7节 加权Kmeans聚类算法

空字符 月来客栈 2024-01-21

各位朋友大家好,欢迎来到月来客栈,我是掌柜空字符。

本期推送内容目录如下,如果本期内容对你有所帮助,欢迎点赞、转发支持掌柜!

  • 10.7 加权-means聚类算法
    • 10.7.1 引例
    • 10.7.2 加权-means聚类算法思想
    • 10.7.3 加权-means聚类算法原理
    • 10.7.4 加权-means聚类算法迭代公式
    • 10.7.5 从零实现加权-means聚类算法
    • 10.7.6 参数求解
    • 10.7.7 小结
  • 引用

10.7 加权-means聚类算法

在前面几节内容中,笔者首先介绍了-means聚类算法的原理,然后介绍了一种基于-means进行改进的-means++聚类算法,该算法的改进点在于依次初始化k个簇中心,最大程度上使不同的簇中心彼此之间相距较远,从而避免了各个簇中心出现在同一簇中的情况。接下来,笔者将继续介绍另外一种基于-means改进的聚类算法——加权-means聚类算法。它的改进点又在哪儿呢?

10.7.1 引例

想象一下这样一个场景,假设现在手中有一个数据集,里面包含3个特征维度,但是,对于簇结构起决定性作用的只有其中2个维度,也就是说其中有一个维度是噪声维度。在这种情况下采用-means聚类算法进行聚类会产生什么样的结果呢? 现在我们人为地来构造一个数据集,其一共包含3个明显的簇结构,可视化后的结果如图10-10所示。

图 10-10 不含有噪声维度的样本
进一步,在图10-10所示的数据集中再加入一个噪声维度,这样便得到了另外一个新的数据集,其可视化结果如图10-11所示,其中左右两边为不同视角下的结果。

图 10-11 含有噪声维度的样本
此时,对于图10-11中的结果,人眼几乎已经无法分辨其中所存在的簇结构。如果此时通过聚类对其进行聚类会出现什么样的结果呢?在通过-means算法对其进行聚类后发现,此时的ARI结果已经从0.912骤然降到了0.721(完整示例代码可参见       `Book/Chapter10/05_visualization_wkmeans.py` 文件)。为什么混入噪声维度后-means聚类算法就不怎么管用了呢?

假如现在有两个簇中心,样本点。在这种情况下大于,因此样本点应该被划入簇中,但如果此时加入一列噪声维度,变成,样本点变成。那么在这样的情况下就会小于,此时就会被错误地划分到簇中。

可以发现,正是由于噪声维度的出现,使-means聚类算法在计算样本间的距离时把噪声维度所在的距离也一并地考虑到了结果中,最终导致聚类精度下降。有没有什么好的办法解决这个问题,使在聚类过程中尽量忽略噪声维度的影响呢?当然有,答案就是给每个特征维度赋予一个权重。

10.7.2 加权-means聚类算法思想

加权-means聚类算法出自于2005年的一篇论文[1] 。这篇论文的核心思想就是给每个特征维度初始化一个权重值,等到目标函数收敛时噪声维度所对应的权重就会趋于0,从而使在计算样本间的距离时能够尽可能地忽略噪声维度的影响。

在上面的例子中,如果给算法

这样一个特征权重,并且在计算样本间距离的时候考虑的是加权距离,则有


此时可以发现,在特征权重的作用下,加权后的距离仍旧大于依然会被划分到簇中,因此也就避免了被划分错误的情况。

10.7.3 加权-means聚类算法原理

讲了这么多,那么加权-means聚类算法是如何实现这个想法的呢?具体地,加权-means聚类算法的目标函数为

服从于约束条件

从目标函数(10-23)可以发现,相较于原始的-means聚类算法,加权-means聚类算法仅仅在目标函数中增加了一个权重参数。它的作用在于,在最小化整个簇内距离时计算的是每个维度的加权距离和,即通过不同的权重值来调节每个维度对聚类结果的影响,并且,当时,目标函数式(10.23)也就退化到了-means聚类算法的目标函数。

为你认可的知识付费,欢迎订阅本专栏阅读更多优质内容!

10.7.4 加权-means聚类算法迭代公式

根据目标函数式(10.23)可知,其一共包含3个需要求解的参数。在这里,笔者先直接给出每个参数的迭代计算公式,具体的求解过程将在10.7.6节中进行介绍。

继续滑动看下一个

第10.7节 加权Kmeans聚类算法

空字符 月来客栈
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存