聚类算法
“物以类聚,人以群分”,所谓的聚类,就是将样本划分为由类似的对象组成的多个类的过程。对于数据集的类别未知。
算法名称 | 是否需要给定K值 | 聚类依据 | 使用范围 |
---|
K-means | 是 | 距离 | 低 | K-means++ | 是 | 距离 | 中 | 系统(层次)聚类 | 否 | 距离 | 高 | DBSCAN算法 | 否 | 密度 | 散点图明显具有DBSCAN特征时使用 |
K-means(K均值)聚类算法
算法描述:
- 给定类的个数K值。
- 选定K个初始数据中心。
- 其余点求对数据中心的距离,每个点与哪个数据中心最近,就和哪个数据中心分为一类。
- 将数据中心更新为类的重心。
- 重复3、4的操作,每一次重复算一次迭代。
优点:
- 算法简单、快速。
- 对处理大数据集,该算法是相对高效率的。
缺点:
- 需要给定生成簇的数目K。
- 对初值敏感。
- 对于孤立点数据敏感。
注意:
K-means++算法
对K-means算法 选取初始数据中心 作了新的算法规定,使得初始数据中心之间距离保持最远,其余步骤和K-means算法相同。
选取初始数据中心算法描述
-
随机选取一个样本作为第一个聚类中心; -
计算其他样本点与当前已有聚类中心的最短距离(即为与最近的聚类中心之间的距离),根据距离大小给样本点赋概率(距离越长,成为聚类中心的概率越大),用轮盘法(依据概率大小来进行抽选)选 出下一个聚类中心; -
重复步骤二,直到选出K个聚类中心。
SPSS操作
注:
- 消除量纲:标准化处理。
? 使用SPSS标准化得到的就是如上公式所描述的 z型 标准化变量。
系统(层次)聚类
聚类前不需要给定K值,由聚类后的谱系图自行判断所需分成的类数。
算法流程
- 将每一个对象看成一个类,计算两两之间的最小距离;
- 将距离最小的两个类合并成一个类;
- 计算新类与各个类之间的距离;
- 重复2、3步,直到所有类均合成到一个类中;
- 结束。
SPSS操作
- 统计:一般不用管。
- 图:谱系图即为分类的流程图,需要勾选。
- 方法:聚类方法——类与类之间距离的定义方法;转化值——标准化(Z得分即为Z标准化方法)
- 保存:如果确定了K值,可以填入“聚类数”中(一般K≤5,方便解释)。
肘部法则——用图形估计聚类的数量
肘部法则(Elbow Method): 通过图形大致的估计出最优的聚类数量。
使用步骤
- 将SPSS中各阶段的系数复制到Excel中,按照降序排序(双击SPSS中生成的表格,就可以进行复制)。
- 插入 —> 推荐的图表 —> 散点图。
- 一般选择转折处的K值作为最终的分类数,当然还要兼顾方便对分类进行解释。
确定K值后保存聚类结果并画图
可以使用SPSS对聚类结果图形化,但是变量只能是2个或3个。
可以直接双击生成的图表,对其中参数进行修改,从而起到对图标美化的效果。
DBSCAN算法
DBSCAN算法是一种基于密度的聚类方法,聚类前不需要预先指定聚类的个数,生成的簇的个数不定(和数据有关)。
简言之,就是随便选取基准点,再根据要求(半径 Eps 、类中最少点数 MinPts )将周围点,以及周围点的周围点一个一个圈起来,形成最后分组的过程。
数据点分类
数据点 | 特点 | 是否属于某个类 |
---|
核心点 | 在半径 Eps 内含有不少于 MinPts 数目的点 | 是 | 边界点 | 在半径 Eps 内点的数量小于 MinPts,但是落在核心点的邻域内 | 是 | 噪音点 | 既不是核心点也不是边界点的点 | 否 |
代码实现
可以下载Matlab官网推荐的代码使用。
优点
-
基于密度定义,不需要聚类个数K值; -
可以发现异常点(噪音点);
缺点
-
对输入参数ε(半径 Eps )和 Minpts 敏感,确定参数困难; -
由于DBSCAN算法中,变量 ε 和 Minpts 是全局唯一的,当聚类的密度不均匀时,聚类距离相差很大时,聚类质量差; -
当数据量大时,计算密度单元的计算复杂度大。
图形化预测结果展示
|