聚类分析
来源:互联网 发布:techmark数据分析模型 编辑:程序博客网 时间:2024/04/28 09:26
概要:
- 聚类分析仅根据在数据中发现的描述对象及其关系的信息,将数据对象分组。其目标是,组内的对象相互之间是相似的(相关的),而不同组中的对象是不同的(不相关的)。组内的相似性(同质性)越大,组间差别越大,聚类就越好。
应用场景:
聚类。
聚类分析的3种大类和其代表技术:
- 划分聚类法。K均值。是基于原型的、划分的聚类技术。它试图发现用户指定个数K的簇(由质心代表)。
- 层次聚类。凝聚的层次聚类。开始,每个点作为一个单点簇;然后,重复地合并两个最靠近的簇,直到产生单个的、包含所有点的簇。
- 基于密度的聚类。DBSCAN。是一种产生划分聚类的基于密度的聚类算法,簇的个数由算法自动地确定。低密度区域中的点被视为噪声而忽略,因此DBSCAN不产生完全聚类。
层次聚类的优缺点:
优点:
- 距离和规则的相似度容易定义,限制少;
- 不需要预先指定聚类数;
- 可以发现类的层次关系;
- 可以聚类成其他形状。
缺点:
- 计算复杂度太高;
- 奇异值也能产生很大影响;
- 算法很可能聚类成链状。
DBSCAN的优缺点:
优点:
- 不需要事先知道要形成的簇的数量。
- 可以发现任意形状的簇类。
- 对噪声点不敏感。
- 对样本点的顺序不敏感。
缺点:
- 簇的密度变化太大时,DBSCAN会有麻烦。
- 对于高维数据,密度定义困难,DBSCAN也有问题。
Note:
- K均值对于圆形区域聚类的效果很好,DBSCAN基于密度,对于集中区域效果很好。
- 对于不规则形状,K均值完全无法使用。DBSCAN可以起到很好的效果。
K均值的优缺点:
优点:
- 简单,易于理解和实现。
- 时间复杂度低。
缺点:
- 要手工输入K值,对初始值的设置很敏感。
- 对噪声和离群点很敏感。
- 只用于数值型数据,不适用于categorical类型的数据。
- 不能解决非凸数据。
- 主要发现圆形或者球形簇,不能识别非球形的簇。
K均值
K-Means算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把待分类样本点分到各个簇。然后按平均法重新计算各个簇的质心(这个点可以不是样本点),从而确定新的簇心。一直迭代,直到簇心的移动距离小于某个给定的值。
K-Means聚类算法主要分为4个步骤:
(1)选择K个初始质心,其中K是用户指定的参数,即所期望的簇的个数。
(2)每个点指派到最近的质心,而指派到一个质心的点集为一个簇。
(3)根据指派到簇的点,更新每个簇的质心。
(4)重复指派和更新步骤,直到簇不发生变化,或等价地,直到质心不发生变化。
下图展示了对n个样本点进行K-means聚类的效果,这里k取2:
(a)未聚类的初始点集
(b)随机选取两个点作为聚类中心
(c)计算每个点到聚类中心的距离,并聚类到离该点最近的聚类中去
(d)计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心
(e)重复(c),计算每个点到聚类中心的距离,并聚类到离该点最近的聚类中去
(f)重复(d),计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心
k均值常用的邻近度,质心和目标函数的选择:
邻近度函数:曼哈顿距离。质心:中位数。目标函数:最小化对象到其簇质心的距离和。
邻近度函数:平方欧几里德距离。质心:均值。目标函数:最小化对象到其簇质心的距离的平方和。
邻近度函数:余弦。质心:均值。最大化对象与其质心的余弦相似度和。
邻近度函数:Bregman散度。质心:均值。目标函数:最小化对象到其簇质心的Bregman散度和。
基本K均值算法:
- 选择K个点作为初始质心。
- repeat
- 将每个点指派到最近的质心,形成K个簇。
- 重新计算每个簇的质心。
- until 质心不发生变化。
由于基本K均值算法采取随机地选取初始质心的办法,导致最后形成的簇的质量常常很糟糕。在此基础上引出了基本K均值算法的扩充:二分K均值算法。二分K均值算法不太受初始化问题的影响。
算法主要分为以下步骤,一开始是把所有数据初始化为一个cluster,第二步从所有cluster中选其中一个出来用基本k-means算法(k设为2)再划分成两个cluster(初始时只有一个cluster),然后是一直重复第二步的划分(选一个cluster划成两个)直到得到k个cluster算法停止。
每次划分都是用基本K均值算法,可问题是从已有的cluster种应该选哪个cluster出来进行划分呢? 选取cluster有两种策略:
- 每次选的时候,都对已有的cluster计算误差和SSE,然后选一个SSE最大的一个cluster来进行划分。
- 每次都挑数据最多的那个cluster来进行划分。
一般都采取第一种策略。
二分K均值算法:
- 把所有数据作为一个cluster加入cluster list
- repeat
- 从cluster list中挑选出一个SSE最大的cluster来进行划分
- for i=1 to预设的循环次数
- 用基本K均值算法把挑选出来的cluster划分成两个子cluster
- 计算两个子cluster的SSE和。
- end for
- 把for循环中SSE和最小的那两个子cluster加入cluster list
- until cluster list拥有K个cluster
除此以外,每次划分不止执行一次基本K均值算法,而是预先设置一个ITER值,然后对这个cluster进行ITER次执行基本K均值运算。因为基本K均值每次一开始都是随机选K个质心来执行,所以i一般来说ITER次执行基本K均值,每次都会得到不同的两个cluster。那么应该选哪对cluster来作为划分以后的cluster呢?答案就是在每次循环中,每次都计算当次基本K均值划分出来的两个cluster的SSE和,最后就选SSE和最小的那对cluster作为划分以后的cluster。
层次聚类:
有两种产生层次聚类的基本方法:
- 凝聚的。从点作为个体簇开始,每一步合并两个最接近的簇。这需要定义簇的临近性概念。凝聚层次聚类技术最常见。
- 分裂的。从包含所有点的某个簇开始,每一步分裂一个簇,直到仅剩下单点簇。在这种情况下,我们需要确定每一步分裂哪个簇,以及如何分裂。
基本凝聚层次聚类算法:
- 如果需要,计算临近度矩阵
- repeat
- 合并最接近的两个簇
- 更新临近度矩阵,以反映新的簇与原来的簇之间的临近性。
- until 仅剩下一个簇
簇之间的临近性有3种定义方式:
- MIN(单链)。不同簇中的两个最近的点之间的距离作为临近度。
- MAX(全链)。不同簇中的两个最远的点之间的距离作为临近度。
- GROUP(组平均)。取自不同簇的所有点对距离的平均值作为临近度。
Note:
- 簇与簇合并的原则永远是dist最小。
- 但在计算dist值的时候,可以采用MIN, MAX, GROUP AVG 3中方式得出dist的值。
DBSCAN
基于密度的聚类寻找被低密度区域分离的高密度区域。DBSCAN是一种简单、有效的基于密度的聚类算法。
DBSCAN算法:
- 将所有点标记为核心点、边界点或噪声点。
- 删除噪声点。
- 为距离在Eps之内的所有核心点之间连线。
- 每组连通的核心点形成一个簇。
- 将每个边界点指派到一个与之关联的核心点的簇中。
DBSCAN算法阐释:
- 算法需要用户输入2个参数: 半径Eps; 最小(少)点值MinPts。
- 确定Eps和MinPts需要用到K-距离的概念。K-距离就是“到第K近的点的距离”,按经验一般取值为4。并且,一般取K的值为MinPts参数的值。
- 首先计算每个点到所有其余点的欧式距离,升序排序后,选出每个点的“K距离”。
- 所有点的K距离形成一个集合D。对D进行升序排序,依此可以形成一个样本数据的K距离图。
- 图中急剧变化处的值,即为Eps。
- 根据Eps和MinPts,计算出所有的核心点。
- 给核心点到小于Eps的另一个核心点赋予一个连线,到核心点的距离等于Eps的点被识别为边界点。最后,核心点、边界点之外的点都是噪声点。
- 将能够连线的点和与之关联的边界点都放到一起,形成了一个簇。
- 聚类分析
- 聚类分析
- 聚类分析
- 聚类分析
- 聚类分析
- 聚类分析
- 聚类分析
- 聚类分析
- 聚类分析
- 聚类分析
- 聚类分析
- 聚类分析
- 聚类分析
- 聚类分析
- 聚类分析
- 聚类分析
- 聚类分析
- 聚类分析
- ambari-agent节点掉线问题总结
- 数据是如何分类的—MySQL数据存储
- 文章标题
- ReentrantLock--synchronized和ReentrantLock区别及使用
- 百度语音集成
- 聚类分析
- bzoj 1030 文本生成器 AC自动机+DP
- jquery表单验证插件:Validform常用的验证规则
- vue组件中点击按钮后修改输入框的状态
- 用电脑怎么知道对方的ip地址
- json数据去重
- List<T>转换为DataTable
- SSH+MySql+BootStrap实现简单用户管理
- 使用Java实现面向对象编程-->多态