从零开始学Python【28】--K均值聚类(理论部分)

浏览: 1999

往期经典回顾

从零开始学Python【20】--线性回归(理论部分)

从零开始学Python【21】--线性回归(实战部分)

从零开始学Python【22】--线性回归诊断(第一部分)

从零开始学Python【23】--线性回归诊断(第二部分)

从零开始学Python【24】--岭回归及LASSO回归(理论部分)

从零开始学Python【25】--岭回归及LASSO回归(实战部分)

从零开始学Python【26】--Logistic回归(理论部分)

从零开始学Python【27】--Logistic回归(实战部分)

前言


      聚类是一种无监督的挖掘算法,其目的就是将N个样本按照特定的变量划分为K个簇(K,而这个簇所表现的特征是:簇内样本相似度高(方差小),而簇间的相似度低(方差大)。关于聚类算法有很多,如K均值聚类、K中心聚类、密度聚类、谱系聚类、最大期望聚类等。本文我们介绍的是K均值聚类,它是公认的十大挖掘算法之一,其优点是计算速度快、原理易于理解及聚类效果理想。

原理说明


      K均值算法是通过样本间的距离来衡量它们之间的相似度,如果两个样本聚类越远,则相似度越低,否则相似度越高。一般,相似度S可以是距离的倒数或距离平方的倒数,它们之间是成反比的。最常用的距离计算方法是曼哈顿距离和欧氏距离,它们的公式分别如下所示:

image.png

      不妨我们就以欧氏距离为例,来看看K均值算法是如何完成聚类任务的,其聚类步骤如下:

  • 在n个观测中随机挑选K个观测,每个观测代表一个簇;

  • 计算剩余的每个对象到各个簇的欧式距离,将他们分配到最相近的簇中,并计算新簇的均值

  • 使用新的均值作为新簇的中心,再重新分配所有对象,计算簇均值

  • 重复第二步和第三步,直到分配稳定,形成最终的k个类。

具体实现过程可以如下图所示:

image.png

    从刚刚上面说明的几个步骤中,你是否有一些疑问呢?例如初始的K值如何确定,即聚类之前我必须清楚我应该聚为几类;什么叫分配稳定,即在聚类的迭代过程中,什么时候算完。为了解答这两个问题,接下来我们详细的说明一番。

      设想,如果我们能够非常合理的将N个观测聚为K类(簇),根据前面提到的簇内样本相似度高(方差小)这个思想,我们可以构造一个目标函数,来说明聚类效果能够使各个簇内离差平方和之和达到最小。首先来看一下各个簇内离差平方和之和的表达式:

image.png

  其实,我们就是要求这个和的最小值。你可能会问,当簇的个数与样本个数一致(每个样本都代表一个类,簇中样本与其均值相等)时,不就可以得到最小值0了嘛,好吧,那就不是聚类了。所以,为了实现聚类,如何求得这个目标函数的最小值呢?仍然通过微分(对簇的个数j求导)的方法来实现,具体推导如下:

image.png

哎?是不是很好玩,这个最优化的结果就是计算簇的均值哎!这不就正好和K均值聚类算法的簇中心不言而合了嘛。

      第二个问题,迭代啥时候算个完呢?一般如下两种情况时,将会停止聚类的迭代过程:

  • 达到预定的迭代次数(为了防止进入死循环,会设置迭代的最大次数);

  • 簇中心变化率小于某个阈值(在最大迭代范围内,如果簇中心mu趋于稳定,发生收敛);


      尽管K均值聚类算法具有计算速度快、原理易于理解及聚类效果理想这些优点,但他还是存在一些缺点的,如:

  • 需要事先指定生成的k个簇,前提是比较熟悉所分析的数据对象。一般可以通过交叉验证确定最佳的K值;

  • 不适合发现非球形状的簇或大小差别很大的簇;

  • 对噪声数据或离群点数据敏感,因为少量的异常数据对均值的产生极大的影响。


      最后,如果你使用K均值聚类时,一定要注意如下两点

  • 模型的输入数据为数值型数据(如果是离散变量,需要作哑变量处理);

  • 算法基于距离计算,需要将原始数据作标准化处理(防止不同量纲对聚类产生影响)

结语


      OK,关于K均值聚类算法的理论部分我们就分享到这里,下一期,我将针对K均值聚类使用Python和R语言做一个实战性的案例。如果你有任何问题,欢迎在公众号的留言区域表达你的疑问。同时,也欢迎各位朋友继续转发与分享文中的内容,让更多的人学习和进步。

关注“每天进步一点点2015”,与小编一同进步!

推荐 2
本文由 每天进步一点点2015 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册