K-均值聚类

聚类是一种包括数据点分组的机器学习技术。

聚类是一种无监督学习的方法,是一种在许多领域常用的统计数据分析技术。给定一组数据点,可以用聚类算法将每个数据点分到特定的组中。理论上,属于同一组的数据点应该有相似的属性或特征,而属于不同组的数据点应该有非常不同的属性或特征。

聚类算法有很多种,比如层次聚类,划分聚类,密度聚类等等。

K-means是最流行的“聚类”算法之一。K-means存储用于定义聚类的k个质心。如果一个点离哪个质心最接近,则该点被视为位于哪个聚类中。

K-means 通过交替进行下面两步来找到最佳质心:
1)根据当前质心将数据点划分到某聚类中;
2)根据当前数据点计算聚类的质心。
K-均值聚类_第1张图片
算法过程:
1)初始化:随机选择k个数据点作为每个聚类的质心;
2)数据点的分配:分配每个数据点到最近的聚类(质心);
3)更新质心:通过在聚类中的所有数据点重新计算质心位置;
4)重复2、3步骤直到停止改变质心;(或达到了设置的迭代次数)

必要知识:
1)欧氏距离:在欧几里得空间,点x=(x1,x2 … … xn)与点y=(y1,y2, … … yn)之间的欧氏距离为
在这里插入图片描述
它是一个纯数值。

2)数据的标准化:是将数据按比例缩放,使之落入一个小的特定空间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。
其中最典型的就是数据的归一化处理,即将数据统一映射到【0,1】区间上。这里只介绍一种归一化处理方法:min-max标准化。
K-均值聚类_第2张图片
经处理后,点x的坐标便会统一映射到【0,1】区间上。

算法分析
K-均值聚类_第3张图片
算法拓展
K-均值聚类_第4张图片
B站链接:
1.https://www.bilibili.com/video/BV16v4y1Z7xJ/?spm_id_from=333.999.0.0&vd_source=73ecbb55d9891ccde1d623688105133b
2.https://www.bilibili.com/video/BV1V44y1u7mJ/?spm_id_from=333.999.0.0

K-均值聚类中常用的K值寻找方法-手肘法
手肘法的核心指标是SSE(sum of the squared errors,误差平方和)
K-均值聚类_第5张图片
其中,Ci是第i个簇,p是Ci中的样本点,mi是Ci的质心(Ci中所有样本的均值),SSE是所有样本的聚类误差,代表了聚类效果的好坏。

手肘法的核心思想是:随着聚类数k的增大,样本划分会更加精细,每个簇的聚合程度会逐渐提高,那么误差平方和SSE自然会逐渐变小。并且,当k小于真实聚类数时,由于k的增大会大幅增加每个簇的聚合程度,故SSE的下降幅度会很大,而当k到达真实聚类数时,再增加k所得到的聚合程度回报会迅速变小,所以SSE的下降幅度会骤减,然后随着k值的继续增大而趋于平缓,也就是说SSE和k的关系图是一个手肘的形状,而这个肘部对应的k值就是数据的真实聚类数。当然,这也是该方法被称为手肘法的原因。

具体做法是让k从1开始取值直到取到你认为合适的上限(一般来说这个上限不会太大,这里我们选取上限为8),对每一个k值进行聚类并且记下对于的SSE,然后画出k和SSE的关系图(毫无疑问是手肘形),最后选取肘部对应的k作为我们的最佳聚类数。

K-均值聚类_第6张图片
参考CSDN链接:
https://blog.csdn.net/qq_40290810/article/details/112788973?ops_request_misc=&request_id=&biz_id=102&utm_term=%E8%82%98%E9%83%A8%E6%B3%95%E5%88%99%E7%A1%AE%E5%AE%9Ak%E5%80%BC&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-112788973.nonecase&spm=1018.2226.3001.4187

你可能感兴趣的:(机器学习)