聚类模型的建立

一.Kmeans聚类算法

        这一节我们来学习聚类模型。“物以类聚,人以群分”,所谓的聚类,就是将样本划分为由类似的对象组成的多个类的过程。聚类后,我们可以更加准确的在每个类中单独使用统计模型进行估计、分析或预测;也可以探究不同类之间的相关性和主要差异。

        在上次我们学习过了分类模型,我们需要识别分类模型与聚类模型之间的区别。它们的区别很简单,分类模型是已知类别的,比如我们知道需要把样本分为苹果和橙子两类,而聚类是未知的。

        我们直接来学习聚类模型涉及的第一个算法——K-means聚类算法。同样的,在这节课中,重要的是使用SPSS应用该算法对样本进行处理,而不要过度深入的去思考算法本身的内容。

        看文字描述可能比较模糊,可以使用图解直观的体现K-means聚类算法。

        在论文中可以设计流程图来更直观的体现K-means聚类算法的算法流程。

        在这里,我们可以发现K-means聚类算法的优缺点。优点是算法简单、快速,算法相对是高效率的。但相对的,缺点也十分明显。需要用户必须事先给出要生成的簇的数目K。在这里我们还是解释一下,这个簇的数目就是我们要求将样本分类的数目,所以该算法要求我们提前给出要将样本分成几类。第二是对初值敏感,这个很容易理解,该算法要求我们选择K个数据对象作为初始的聚类中心。可将K-means算法类比到一张充满很多离散点的图上,我们首先要选择几个中心,然后将离我们选择的中心最近的几个点分为一类。因此,该算法对初始化的K个聚类中心非常敏感,选择不同的聚类中心分类的情况就会大不相同。最后是对孤立点数据敏感。因为在算法的第四步骤中需要调整新类并且重新计算出新类的中心,其实就是选择该新类中各点的重心作为新类的中心,而如果该类中包含孤立点,就会对重心的选择产生很大影响,因为孤立点离的都比较远。

        可见K-means聚类算法还是有很大的缺点,我们可以选择K-means++算法就可以解决2和3这两个缺点了。

        在我们的K-means++算法中,不用再要求我们提前给出要生成的簇的数目K,而是交由算法自己选择要分类的数目。其次,对选择聚类中心的算法也作出了优化,那就是在聚类中心初始化的过程中聚类中心的位置不再是固定的,而是可以移动的。这样就尽可能的减少对初值和孤立点的敏感度,在之后,就跟K-means算法的步骤一样了。

        在SPSS中,我们默认使用的K-均值聚类算法就是K-means++算法。

        这里我们对K-means算法又做了一些讨论,首先,聚类的个数K值需要我们不断尝试去解释分析,重要的是,如果我们的样本数据的量纲不同,在进行聚类分析前先要对样本数据进行标准化以去除量纲。

二.系统层次聚类算法和聚类效果图的绘制

        这里我们介绍第二个聚类算法叫系统(层次)聚类。

        这便是系统(层次)聚类算法的流程,它的优势是最后可以生成聚类谱系图,以及不同我们指定分类的个数。

        这便是SPSS最后为我们生成的聚类谱系图。可见最后的结果其实是将所有的样本归为一类,而一开始我们每个的样本都各自为一类。它的优势是聚类的个数可以自己从图中决定。如在图中画一条竖线找截取即可。

        通常,我们是不知道我们需要将样本分成类的数目的个数的,因此,在聚类后,我们需要评判我们聚类算法的优劣性。其中,我们可以用图形去估计聚类的数量,依据与肘部法则:通过图形大致去估计出最优的聚类数量。

        在画图前,我们先对数据进行处理,在使用系统层次聚类算法后,SPSS会给出针对聚类的类别数K的不同的聚合系数,我们可将聚合系数的数据赋进excel中,使用excel画出聚合系数折线图。

        这里评判准则参考ppt即可。在我们确定好K后我们可通过确定聚类个数的方式重新进行聚类分析,保存聚类结果后画图。

三.基于密度的聚类算法DBSCAN算法

        看ppt的解释定义可能感觉很模糊,什么是基于密度的聚类方法,其实就可以用一句话来形容该聚类算法的原理:谁和我挨得近,我就是谁兄弟,兄弟的兄弟,也是我的兄弟。参考ppt中的图1,可以很明显的看出分成了三类,每一类中每个点都很近,我们具体理解这个密度,就是说有个点的个数的阈值,如果达到了阈值,就把这些点归为一类,如果点的个数不达标,则不归为一类。此聚类算法能有效的处理异常数据。

        在ppt中也给我们举出了一个DBSCAN聚类算法的例子以供我们更好的理解。这里给出一个DBSCAN算法可视化的网站,可以自己操作一下。

        至于DBSCAN算法是怎么运行的,维基百科给出了我们算法运行的伪代码。

        同时,在matlab中,我们也可以使用DBSCAN聚类算法。这里给出MATLAB官网上实现DBSCAN算法的代码。

        最后,再附上DBSCAN算法的优缺点以及对具体问题聚类算法的选择。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值