一、概念
1.聚类分析:仅根据在数据中发现的描述对象及其关系的信息将数据分组。目标是组内的对象相互之间是相似的,而不同组中的对象是不同的。
2.聚类方法Clustering
- 划分聚类:将数据划分为互不重叠的子集,一个点只属于某一类
- 层次聚类:将嵌套的类簇以层次树的形式构建
- 重叠聚类
- 模糊聚类
- 完全聚类
2.簇类型Clusters
- 明显分离的
- 基于中心的
- 基于近邻的
- 基于密度的
- 概念簇
- 目标函数
二、KNN(K-近邻)
计算待分类物体与其他物体之间的距离,对于K个最近的邻居,所占数量最多的类别,预测为该分类对象的类别。
1.算法过程
- 计算已知类别数据集中的点与当前点之间的距离(欧氏距离、曼哈顿距离或者余弦夹角等各种距离)
- 按照距离递增次序排序
- 选取与当前点距离最小的k个点
- 确定前k个点所在类别的出现频率
- 返回前k个点出现频率最高的类别作为当前点的预测分类
2.欧氏距离
- 二维平面上两点A(x1,y1)与B(x2,y2)间的欧氏距离:
- 三维空间两点A(x1,y1,z1)与B(x2,y2,z2)间的欧氏距离:
- n维空间两点的欧式距离以此类推
(算法详解)
三、K-means
无监督学习,生成指定K个类,把每个对象分配给距离最近的聚类中心。
1.算法流程
- 选择K个点作为分类中心点
- 将每个店分配到最近的类,形成K个类
- 重新计算每一个类的中心点(类簇的质心)。例如取平均值
- 直到K个质心不再改变
2.目标函数和评估效果
- 误差平方和(度量聚类质量的目标函数):在K较小时寻找尽可能小的SSE。
- 欧氏距离、余弦
(算法详解)
3.算法评价
(1)优点:实现简单,运行迅速
(2)缺点:
- 需要指定K以及初始化参数
- 初始化的情况对算法结果影响很大
- 异常点对于算法结果影响很大
- 难以处理多尺寸、多密度、非球状的类簇聚类问题
四、算法改进-二分K-means
- 初始化类簇列表,其中仅有一个包含全部节点的类簇
- repeat
- 从类簇列表中选择一个类簇
- repeat(iter_num)
- 执行K-means算法基础版本,将选中的类簇二分
- 选择SSE最小的一种二分类簇加入到类簇列表中
until 类簇列表中包含K个类簇
五、层次聚类
层次聚类(hierarchical clustering)算法极为简单:有N多节点,最开始认为每个节点为一类,然后找到距离最近的节点“两两合并”,合并后的两个节点的平均值作为新的节点,继续两两合并的过程,直到最后都合并成一类。
1.聚类方法
- 聚集式(凝聚)Agglomerative(从底向上归并)
- 分裂式Divisive(自顶向下切分)
2.类簇相似性/距离的衡量
(1)MIN/Single Link(单链):两个簇的邻近度定义为两个不同簇中任意两点之间的最短距离。
1) 将每个对象看作一类,计算两两之间的最小距离;
2) 将距离最小的两个类合并成一个新类;
3) 重新计算新类与所有类之间的距离;
4) 重复2)、3),直到所有类最后合并成一类。
- 可处理非椭圆类簇
- 对噪声和异常值很敏感
(2)MAX/Complete Link(全链):两个簇的邻近度定义为两个不同簇中任意两点之间的最长距离。
- 倾向于球形类簇
- 会破坏大尺寸类簇
- 对噪声和异常值不太敏感
(3)Group Average(组平均):两个簇的邻近度定义为不同簇的多有点对邻近度的平均值。
- 两个簇的邻近度:(mi,mj为两个簇的大小)
- 倾向于球形类簇
- 对噪声和异常值不太敏感
(上述三个工作过程详解教材323~324 nb338)
- Ward方法和质心方法
3.聚集式-算法流程
- 令每个数据点单独成为一个类簇
- repeat
- 计算类簇之间的距离矩阵Proximity Matrix
- 归并两个最近的类簇
until 仅剩下一个类簇
六、DBSCAN
1.核心概念
- 密度:该点半径内点的个数
- 核心点(高密度点):在其半径Eps内有多于阈值MinPts个数的点
- 边界点(核心区低密度点):非核心点且处于某一核心点半径内
- 噪声点(非核心区低密度点):除核心点和边界点之外的点
- 直接密度可达DDR:p点在核心点q的半径内
- 密度可大DR:p点,q点之间存在一个传递链,链上相邻点都直接密度可达
- 密度相连DC:存在中间点o,是的o点与p点和q点都密度可达
2.算法流程
- 设定参数Eps,MinPts
- 将所有点标记为核心点、边界点。噪声点、并删除噪声点
- 在距离在Eps内的所有核心点之间赋予一条边
- 每组连通的核心点形成一个类簇,将边界点指派到一个与之关联的核心点的类簇中
3.算法评价
(1)优点
- 对噪声不敏感
- 能处理不同形状、尺寸的类簇
(2)缺点:难以处理多密度类簇、高维数据
4.聚类效果衡量
- 外部指标:用于在由外部类型标签的情况下评估聚类效果
- 内部指标:用于在没有外部信息的情况下评估聚类效果
- 相对指标:用于比较多个聚类方法