简述k-means算法基本原理,并针对如何自适应确定k值

简介: 简述k-means算法基本原理,并针对如何自适应确定k值

k-means算法基本原理:


(1) 随机选取k个中心点;


(2) 在第j次迭代中,对于每个样本点,选取最近的中心点,归为该类;


(3) 更新中心点为每类的均值;


(4) j<-j+1 ,重复(2)(3)迭代更新,直至误差小到某个值或者到达一定的迭代步数,误差不变.


空间复杂度o(N)   时间复杂度o(I*K*N)


其中N为样本点个数,K为中心点个数,I为迭代次数


手肘法

Elbow method就是“肘”方法,对于n 个点的数据集,迭代计算k from 1 to n,每次聚类完成后计算每个点到其所属的簇中心的距离的平方和,可以想象到这个平方和是会逐渐变小的,直到k==n 时平方和为0,因为每个点都是它所在的簇中心本身。但是在这个平方和变化过程中,会出现一个拐点也即“肘”点,下图可以看到下降率突然变缓时即认为是最佳的k值。

   我们知道K-means是以最小化样本与质点平方误差作为目标函数,将每个簇的质点与簇内样本点的平方距离误差和称为畸变程度(distortions),那么,对于一个簇,它的畸变程度越低,代表簇内成员越紧密,畸变程度越高,代表簇内结构越松散。 畸变程度会随着类别的增加而降低,但对于有一定区分度的数据,在达到某个临界点时畸变程度会得到极大改善,之后缓慢下降,这个临界点就可以考虑为聚类性能较好的点。


轮廓系数法


轮廓系数(Silhouette Coefficient)结合了聚类的凝聚度(Cohesion)和分离度(Separation),用于评估聚类的效果。该值处于-1~1 之间,值越大,表示聚类效果越好。具体计算方法如下:

对于每个样本点i ,计算点i 与其同一个簇内的所有其他元素距离的平均值,记作a(i) ,用于量化簇内的凝聚度。

选取i 外的一个簇b ,计算i 与b 中所有点的平均距离,遍历所有其他簇,找到最近的这个平均距离,记作b(i) ,即为i 的邻居类,用于量化簇之间分离度。

对于样本点i ,轮廓系数s(i) = (b(i)–a(i))/max{a(i),b(i)} 。计算所有i 的轮廓系数,求出平均值即为当前聚类的整体轮廓系数,度量数据聚类的紧密程度。从上面的公式,不难发现若s(i) 小于0,说明i 与其簇内元素的平均距离小于最近的其他簇,表示聚类效果不好。如果a(i) 趋于0,或者b(i) 足够大,即a(i)<<b(i) ,那么s(i) 趋近与1,说明聚类效果比较好。


  • Calinski-Harabasz准则
  • e12f5f29964441c2ac1acfc0c573cac4.png
  • 其中SSB是类间方差,
  • cf50a147d5bd4d4cb5182d55feea3a91.png
  • m为所有点的中心点,mi为某类的中心点;SSW是类内方差,8b442d6015d845e98b4a0cfcb2ccfc40.png
  • ;(N-k)/(k-1)是复杂度;

  • 48726af760e34fd4a541585fc4ed918a.png比率越大,数据分离度越大.
目录
相关文章
|
11天前
|
机器学习/深度学习 算法 数据可视化
算法金 | 再见!!!K-means
**k-means 算法的简要总结:** - **k-means** 是一种非监督学习的聚类算法,用于将数据分为 k 个类别。 - **工作流程** 包括初始化 k 个中心点,分配数据点到最近的中心,更新中心点,然后迭代直到中心点稳定或达到最大迭代次数。 - **优点** 包括简单易懂、计算效率高,适合大规模数据,结果直观。 - **缺点** 包括需要预设 k 值,对初始中心点敏感,假设簇是凸形,受异常值影响大。
16 2
算法金 | 再见!!!K-means
|
5天前
|
机器学习/深度学习 算法 BI
机器学习笔记(一) 感知机算法 之 原理篇
机器学习笔记(一) 感知机算法 之 原理篇
|
4天前
|
机器学习/深度学习 数据采集 算法
KNN算法原理及应用(一)
**KNN算法**是一种监督学习的分类算法,适用于解决分类问题。它基于实例学习,无需训练过程,当新样本到来时,通过计算新样本与已有训练样本之间的距离,找到最近的K个邻居,然后根据邻居的类别进行多数表决(或加权表决)来预测新样本的类别。K值的选择、距离度量方式和分类决策规则是KNN的关键要素。KNN简单易懂,但计算复杂度随样本量增加而增加,适用于小规模数据集。在鸢尾花数据集等经典问题上表现良好,同时能处理多分类任务,并可应用于回归和数据预处理中的缺失值填充。
KNN算法原理及应用(一)
|
8天前
|
机器学习/深度学习 算法 Python
【算法】深入浅出爬山算法:原理、实现与应用
【算法】深入浅出爬山算法:原理、实现与应用
16 3
|
1天前
|
机器学习/深度学习 算法 搜索推荐
KNN算法(k近邻算法)原理及总结
KNN算法(k近邻算法)原理及总结
|
4天前
|
算法
KNN算法原理及应用(二)
不能将所有数据集全部用于训练,为了能够评估模型的泛化能力,可以通过实验测试对学习器的泛化能力进行评估,进而做出选择。因此需要使用一个测试集来测试学习器对新样本的判别能力。
|
6天前
|
机器学习/深度学习 算法 数据可视化
决策树算法:从原理到实践的深度解析
决策树算法:从原理到实践的深度解析
11 0
|
6天前
|
机器学习/深度学习 算法 数据可视化
K-means聚类算法:原理、实例与代码分析
K-means聚类算法:原理、实例与代码分析
18 0
|
11天前
|
机器学习/深度学习 存储 算法
【机器学习】深入探索机器学习:线性回归算法的原理与应用
【机器学习】深入探索机器学习:线性回归算法的原理与应用
23 0
|
11天前
|
存储 缓存 算法
LRU(Least Recently Used)算法原理
LRU(Least Recently Used)算法原理
9 0