聚类算法
聚类算法的核心思想:物以类聚,人以群分
推荐学习视频:B站清华大学深圳研究生院 数据挖掘 聚类算法视频
距离:由用户自行定义。
聚类方法的评价:
聚类效果:对于聚类所形成的簇或者类,簇与簇之间的距离越大、簇内的对象与对象之间距离越小,则聚类的效果越好。
数据的分布类型:数据的分布类型有很多种,不同的聚类算法面向的数据分布类型可能不同。
对噪音数据的敏感性:聚类算法对噪音数据敏感性越低越好,或者能够筛选并剔除噪音数据。
聚类算法的类型:基于数值的聚类方法、基于模型的聚类方法、基于密度的计算方法、基于层次的计算方法。
基于数值的聚类方法:K-means算法(K-均值算法)
流程:
① 选择K个中心点
② 两两中心点做垂直平分线,利用垂直平分线将所有数据点分成K个区域(簇)
③ 重新计算每个区域的中心点
④ 重复第二、 三步,直至中心点不变或者变化小于一定范围
优点:对于简单的数据分布类型(球形数据),效果很好,速度快,5、6步内就能收敛
缺点:K不方便取值(毕竟不能一开始就知道要分几个簇);K个初始点不好取,不同的 初始点可能带来不同的结果;由于使用的是均值,对噪音数据非常的敏感。
在该算法中,K个中心点为模型参数,需要求解,算法初始随机选择了K个中心点,利用这些中心点和垂直平分线的性质求出了隐藏参数K个区域(即簇),再利用K个区域重新求中心点,即利用隐藏参数求解模型参数。
抽象出来,则是隐藏参数与模型参数利用数据集和一定规则不断训练求解的算法思想。
考虑B站清华深圳研究生院聚类分析视频中的硬币问题,该问题假设A与B硬币的正反面概率(模型参数),利用贝叶斯公式求出事件E是由A硬币掷出的概率与事件E是由B硬币掷出的概率(即P(E|A)与P(E|B))(隐藏参数),再使用概率均摊期望的方法,计算出新的模型参数,不断训练求解,直至变化小于一定范围。
这里的贝叶斯公式就相当于K-means算法中的垂直平分线,其中P(A)与P(B)应该均为0.5,第一个A B的概率我计算出来是0.55与0.45
Sequential Leader算法
流程:
① 选定划分新簇的距离d,即点与点之间的距离若大于d,则将该点化为新的簇
② 计算下一个点与每一个簇的中心点的距离,都大于d,则另立门户(成为新的簇的中心点),如果存在距离小于d的簇,则将该点放入距离最近的那一个簇
③ 重复第二步至所有节点放入
基于模型的聚类:
利用模型去逼近数据的分布,实际上是在训练模型或者说训练模型的参数,模型可以不止有一个,可以通过设置权重来保留每个模型的特性。
基于密度的聚类算法:
在该算法中,点分为三类:
核心点:在距离d内有k个点的点
边缘点:不是核心点,但是在核心点范围内的点
噪音点:既不是核心点又不是边缘点的点
如果难以理解,可以带入连通的思想
算法思想:去除噪音点,将所有相连通的点划分为一个簇
基于层次的聚类算法:
一个不知名的自下而上的算法:
流程:
① 将每一个点划分为一个簇
② 迭代计算每两个簇之间的距离,形成距离矩阵
③ 选取距离矩阵中最小的距离,将那两个簇划分为新簇,新簇到其他簇距离根据用户给定的原则更新(最远原则、最近原则、平均原则等)
④ 循环直至所有的数据形成一个簇
聚类算法的评估:Silhouette值,等于1,效果好,小于零,效果不好