K-Means算法
K-means是无监督学习算法。
- K-Mean算法步骤:
- 首先随机选定k个样本点作为初始簇中心;
- 计算所有样本点到簇中心的距离;
- 每个样本点选择与它距离最近的簇中心作为这个样本点的簇;
- 更新簇中心;
- 重复2,3,4步,直到聚类结果保持不变。
注:这个k就是聚类的类别数,它是我们自己定的,没有定的标准,主要看经验
评价指标
- 最小化平方误差
E = ∑ i = 1 k ∑ x ∈ C i ∣ ∣ x − μ i ∣ ∣ 2 2 E=\sum_{i=1}^k\sum_{x\in C_i}||x-\mu_i||{^2_2} E=i=1∑kx∈Ci∑∣∣x−μi∣∣22
μ i = 1 ∣ C i ∣ ∑ x ∈ C i x \mu_i=\frac{1}{|C_i|}\sum_{x\in C_i}x μi=∣Ci∣1∑x∈Cix
其中k是自定义的聚类类别数, C i C_i Ci是第i个簇, μ i \mu_i μi是簇 C i C_i Ci的均值向量。
(1)式刻画了簇内样本围绕簇均值向量的紧密程度,E越小,簇内样本相似度越高。
算法改进
- K-Means++算法思想:
-
首先自定义k的大小
-
随机选择一个样本点作为簇中心
-
计算所有样本点到这个簇中心的距离
-
选择这些样本点中距离这个簇中心的最远的样本点作为下一个簇中心
-
重复3,4步,直到选出第k个簇中心
- k-means和k-means++的区别:
k-means在一开始就首先随机选定了k个样本点作为k个簇中心;
k-means++是一个一个给出簇中心,先随机选定一个样本点作为簇中心,然后计算出下一个簇中心。它使得初始的簇中心点尽可能地远,有效避免选择聚类中心的盲目性,稳定性和收敛速度都得到提高。
算法优缺点
- 优点
- 算法简单快速;
- 在处理大数据集时,算法保持可伸缩性和高效性。
- 缺点
- k值选定困难;
- 对初始聚类中心敏感。随机选择初始聚类中心会导致算法的不稳定性,有可能陷入局部最优;
- 对噪声和孤立点敏感。在计算簇均值时,那些噪声和孤立点会对结果产生极大影响,导致结果不稳定;
- 通常只能发现数据分布均匀的球状簇,因为它主要使用欧式距离函数度量数据对象间的相似度。