文章目录
- 一、聚类综述
- 二、主要用到的聚类算法
- 三、K-means聚类算法
- 四、K-means++算法
- 五、对于K-means算法和K-means算法的讨论
- 六、系统(层次)聚类算法
- 七、DBSCAN算法
- 八、总结
一、聚类综述
聚类的主要目的就是将样本划分为由类似的对象组成的多个类的过程。进行聚类后,我们可以在每个类中使用统计模型进行数据分析或者在不同类之间进行相关性探究。
聚类模型和分类模型的区别:
- 聚类模型是未知类别的,目的是要确定类别来对样本数据进行分类;
- 分类模型的类别是已知的,只需将严格样本数据分类到对应的类别中即可。
二、主要用到的聚类算法
- K-means聚类算法
- K-means++聚类算法
- 系统(层次)聚类算法
- DBSCAN算法
三、K-means聚类算法
算法步骤:
- 指定需要划分的 KKK 个簇(即要划分成的类的个数)
- 随机选取 KKK 个数据对象作为初始的聚类中心**(注意:这里选取的聚类中心不一定是样本点)**
- 计算其余的各个数据对象到这 KKK 个初始聚类中心的距离,把数据对象划归到距离它最近的那个中心所在的簇中。
- 调整新类并且重新计算出新类的中心**(确定新类的中心的方法类似于求重心)**
- 重复三、四步,直到中心不再需要调整。若不再需要调整或者达到最大迭代次数则停止。
如下面的流程图:
K-means算法的优点:
(1)算法简单便捷;
(2)对于大数据集,该算法效率较高;
K-mean算法的缺点:
(1)必须实现给出需要分得的类的数目 KKK;
(2)对初始值非常敏感(初始分类中心不同,其分得的类也不同);
(3)对于孤立点的数据比较敏感;
因此,衍生出了K-means++算法来解决K-means算法带来的问题。
四、K-means++算法
算法步骤:(对聚类中心的选择进行了优化)
(1)随机选取一个样本作为第一个聚类中心;
(2)计算每个样本与最近的一个聚类中心的距离,这个值越大,表示被选取作为聚类中心的概率越大;最后,用轮盘法选取下一个聚类中心。
(3)重复第二步,直到选出 KKK 个聚类中心。
这些过程可以直接在SPSS中实现,并且SPSS使用的是K-means++算法。
五、对于K-means算法和K-means算法的讨论
(1)确定 KKK 的值
聚类的目的就是将样本数据分为 KKK 个可以解释其意义的类。因此最好的方法就是去几个不同的 KKK 值,选取其中最好解释的那个 KKK 值即可。
(2)量纲对于聚类的影响
为了排除量纲对于聚类的影响,可以首先进行去量纲处理(标准化)。标准化公式:zi=xi−xˉσxz_i = \frac{x_i - \bar{x}}{\sigma_x}zi=σxxi−xˉ 其中,xˉ\bar{x}xˉ 是样本的均值,σx\sigma_xσx 是样本的标准差。
六、系统(层次)聚类算法
- 算法核心
计算两类数据点之间的距离,对最为接近的两类数据进行合并,反复进行直到合成一类,最终生成聚类系谱图。 - 算法步骤:
- 将每个对象单独看作一类,计算两两之间的最小距离;
- 将距离最小的两个类合并成一类新类;
- 重新计算这个新类与所有类之间的距离;
- 重复第二步和第三步,直到所有类合并成一类;
算法流程图如下:
3. 解决问题
可以在SPSS中调用命令,可得结果为:
由图可得,具体的聚类个数可以从图中决定。
七、DBSCAN算法
- 算法简要叙述:
-
指定半径 EpsEpsEps 和 最小包围的点的数目 MinPtsMinPtsMinPts;
-
指定初始点 AAA,以 AAA 为圆心,EpsEpsEps 为半径作圆,在该圆内有不少于 MinPtsMinPtsMinPts 个点,则具有这样的特征的点是一个类;(注意:若有点在 AAA 圆内,但是以这个点作的圆不包围 MinPtsMinPtsMinPts 个点,它是不属于 AAA 类的哦~~~)
可以参考这个图:
-
- DBSCAN算法实现
DBSCAN算法可以由Matlab实现,可以去官网下载:https://ww2.mathworks.cn/matlabcentral/fileexchange/52905‐dbscan‐clustering‐algorithm
八、总结
- 确定指标数量;
- 做出散点图判断可以使用哪种算法;
建议:
(1)如果只有两个指标,而且这两个指标作出的散点图很有形状,那么可以使用DBSCAN进行聚类
(2)其他情况建议系统聚类(K-means算法可写的东西太少) - 根据算法进行聚类;
- 对得出的结果进行解释(一定要选取适当的便于解释的 KKK 值哦~~~)
如果有什么错误,请一定告诉我哈~~~