【数据挖掘学习笔记】8.聚类基础
一、聚类分析基础
什么是聚类分析?
– 将物理或抽象对象的集合分成相似的对象类的过程称为聚类
– 在同一个聚类(簇)中的对象彼此相似
– 不同簇中的对象则相异
聚类分析的作用
– 分类是人类认知世界的重要活动
– 区分不同类依靠类的特征
– 找出标识分类的特征,以区分不同的类
典型应用
– Marketing
– 图像处理
– 生物学
– 交通
– 房地产
- 分析内容主题
- 识别群体
- 发现行为模式
无指导的学习:没有预定义的类编号
聚类分析的数据挖掘功能– 作为一个独立的工具来获得数据分布的情况
– 作为其他算法(如:特征和分类)的预处理步骤
一个好的聚类分析方法会产生高质量的聚类
– 高类内相似度
– 低类间相似度
聚类分析的研究主要是基于距离的聚类;一个高质量的聚类分析结果,将取决于所使用的聚类方法– 聚类方法的所使用的相似性度量和方法的实施
– 方法发现隐藏模式的能力
聚类要求
– 可扩展性(Scalability)• 大多数来自于机器学习和统计学领域的聚类算法在处理数百条数据时能表现出高效率
– 处理不同数据类型的能力
• 数字型;二元类型,分类型/标称型,序数型,比例标度型等等
– 发现任意形状的能力
• 基于距离的聚类算法往往发现的是球形的聚类,其实现实的聚类是任意形状的
– 用于决定输入参数的领域知识最小化
• 对于高维数据,参数很难决定,聚类的质量也很难控制
– 处理噪声数据的能力
• 对空缺值、离群点、数据噪声不敏感
– 对于输入数据的顺序不敏感
• 同一个数据集合,以不同的次序提交给同一个算法,应该产生相似的结果
– 高维性
• 高维的数据往往比较稀松,而且高度倾斜
– 基于约束的聚类
• 找到既满足约束条件,又具有良好聚类特性的数据分组
– 可解释性和可用性
• 聚类要和特定的语义解释和应用相联系
二、聚类分析基础
基于划分的聚类问题描述
– 划分准则:同一个聚类中的对象尽可能的接近或相关,不同聚类中的对象尽可能的原理或不同
– 给定一个n个对象或元组的数据库,一个划分方法构建数 据的k个划分,每个划分表示一个簇,并且k<=n。
• 每个组至少包含一个对象
• 每个对象属于且仅属于一个组
划分聚类的基本思想
– 由于不知道各个簇应该是什么,所以采用迭代方式
– 初始随机/基于某些方式设置
– 预先设置k个簇,然后将前k个对象作为k个簇
– 接下来各个对象依次分配到k个簇中
– 分配依据
– 迭代,重新再分配各个对象
– 达到终止条件或者没有变化后停止
K-均值算法(k-means)
– 分配依据:对象到簇的代表点距离– 簇的代表点是簇中对象的均值
– k均值算法流程1. 随机选择k个对象,每个对象代表一个簇的初始均值或中心
2. 对剩余的每个对象,根据它与簇均值的距离,将他指派到最相似的簇
3. 计算每个簇的新均值
4. 回到步骤2,循环,直到准则函数收敛
K均值算法关键
- K值选取
- 起始点选取
- 距离计算
K均值算法评价
– 可扩展性较好,算法复杂度为O(nkt),其中n为对象总数,k是簇的个数,t是迭代次数。– 经常终止于局部最优解
– 缺点
• 只有当簇均值有定义的情况下,k均值方法才能使用。(某些分类属性的均值可能没有定义)
• 用户必须首先给定簇数目
• 不适合发现非凸形状的簇,或者大小差别很大的簇
• 对噪声和离群点数据敏感
k均值算法变种
– 不同的初始k个均值的选择
– 不同的簇代表点的策略
– 不同的距离计算
k众数(mode)方法
– 用众数来替代簇的均值– 采用新的相异性度量处理分类对象
– 采用基于频率的方法更新簇的众数
– 可以集成k均值和k众数方法,对具有数值和分类值的数据进行聚类
K中心点方法
– k均值方法对于离群点敏感• 一个具有很大极端值的对象可能显著的扭曲数据的分布
• 平方误差函数将进一步严重恶化这种影响
– k中心点方法:采用簇的中心点,即最靠近中心的对象来代表簇
• 降低算法对离群点的敏感度
k均值方法与k中心点方法比较
– 当存在噪声和离群点时,k中心点方法比k均值方法更加鲁棒• 中心点较少的受离群点影响
– k中心点方法的执行代价比k均值方法要高
• k均值方法: O(nkt)
• k中心点方法:O(k(n-k)^2 )
– n与k较大时,k中心点方法的执行代价很高
– 两种方法都要用户指定簇的数目k
算法总结
– 预先设置k个簇,然后依次将每个对象分到各个组里去• 初期设置很重要(k值,初始簇的代表)
• 分到各组的依据(对象距离各簇的代表的远近)
– 簇的表示
• k-平均算法
– 由簇的平均值来代表整个簇
• K众数算法
– 由簇的众数来代表整个簇
• k中心点算法
– 由处于簇的中心区域的某个值代表整个簇
– 分组依据
• 实际上简化为到簇的代表的距离
• 到簇的距离和到簇的代表的距离是否是一回事?
三、层次聚类
层次聚类
– 对给定数据对象集合进行层次分解
• 自底向上方法(凝聚):开始将每个对象作为单独的一个组,然后相继的合并相近的对象或组,直到所有的组合并为一个,或者达到一个终止条件。
• 自顶向下方法(分裂):开始将所有的对象置于一个簇中,在迭代的每一步,一个簇被分裂为多个更小的簇,直到最终每个对象在一个单独的簇中,或达到一个终止条件
– 缺点:合并或分裂的步骤不能被撤销
- 凝聚层次聚类——自底向上
- 分裂层次聚类——自顶向下
– 基于贪心的思想
– 自底向上,每次找最近的合在一起
– 自顶向下,每次找最远的分开
– 关键问题:如何计算距离,判断最近/最远• 最初是点到点的距离,计算相对容易
• 点到类的距离
• 类到类的距离
• 划分聚类是用点到簇的代表的距离来替代点到类的距离
凝聚层次聚类
– 假设有N个待聚类的样本,对于层次聚类来说,基本步骤就是:- (初始化)把每个样本归为一类,计算每两个类之间的距离,也就是样本与样本之间的相似度;
- 寻找各个类之间最近的两个类,把他们归为一类(这样类的总数就少了一个);
- 重新计算新生成的这个类与各个旧类之间的相似度;
- 重复2和3直到所有样本点都归为一类,结束。
– 在建立的过程中可以在第二步上设置一个阈值,当最近的两个类的距离大于这个阈值时终止迭代
– 核心问题——距离计算
– 点-点距离计算
– 类-类距离计算
• Single Linkage:又叫做 nearest-neighbor ,取两个集合中距离最近的两个点的距离作为这两个集合的距离
• Complete Linkage:取两个集合中距离最远的两个点的距离作为两个集合的距离。
• Group Average:把两个集合中的点两两的距离全部放在一起求平均值。
• Group Average-middle:取两两距离的中值
距离计算:
单链优点:能处理非椭圆状聚类
单链缺点 :易受噪声影响
层次聚类
– 简单
– 距离计算影响合并/分裂点选择
– 距离是否是唯一的衡量因素
– 增加其他因素,比如类的大小或距离类代表的距离?
改进方式是与其他聚类方法组合使用
扩展
– BIRCH• 首先使用树结构对对象进行层次划分,形成微簇,然后再聚类
– ROCK
• 基于簇之间的关联性进行合并
– Chameleon(变色龙)
• 综合簇的互联性和近邻度
四、聚类评估
聚类评估
– 进行聚类的可行性和聚类效果的度量
聚类评估典型任务
– 估计聚类趋势– 预估数据集中的簇数
– 测定聚类结果质量
估计聚类趋势
– 评估数据集是否存在非随机结构– 判断数据集是否可以聚类
– 基于抽样统计,比如霍普金斯统计量
预估数据集中的簇数
– 抽样– 基于某种聚类方法进行聚类
– 基于某种评估方法进行评估
– 寻找类的个数与评估值的“拐点”
– 例如Elbow method(肘方法)
结果评估
- 有指导的校验评估
- 无指导的校验评估
有指导的校验评估
– 面向个体的校验– 准确率(查准率)Precision=TP/(TP+FP)
– 召回率(查全率)Recall=TP/(TP+FN)
– F值
– Fowlkes-Mallows scores
2. 正确否定(True Negative,TN):预测为假,实际为假
3. 错误肯定(False Positive,FP):预测为真,实际为假
4. 错误否定(False Negative,FN):预测为假,实际为真
– 基于抽样的检验
兰德系数(Rand index)
– 分子:属性一致的样本数,即同属于这一类或都不属于这一类。a是真实在同一类、预测也在同一类的样本数;b是真实在不同类、预测也在不同类的样本数
– 分母:任意两个样本为一类有多少种组合,是数据集中可以组成的总元素对数
有指导的校验评估
– 调整兰德系数(Adjusted rand index)ARI
– 互信息(Mutual Information)MI
– 调整互信息( Adjusted mutual information)AMI
– 同质性Homogeneity
– 完整性completeness
– 调和平均V-measure
无指导的校验评估
– 类内对象尽可能相似
– 类间对象尽可能不同
轮廓系数 Silhouette Coefficient
– b是与它距离最近不同类别中样本的平均距离
– 类内所有对象轮廓系数的平均值
其他思路
– 各种统计量,比如方差