0%

Machine Learning | K-Means

K均值聚类

K-Means

  • 无监督学习
  • $K$值无法自动获取
  • 初始聚类中心随机选择
  • 迭代(iterative)算法

算法

输入

  • 类的个数:$K$
  • 训练集:${ x^{(1)}, x^{(2)}, \cdots, x^{(n)} }$(其中,$x^{(i)}\in \mathbb{R}^{n}$)

训练

  1. 随机初始化$K$个簇(cluster)的质心(centroid):$\mu_1, \mu_2, \cdots, \mu_K \in \mathbb{R}^n$;
  2. 对于每个训练样本$x^{(i)}$($i=1,2,\cdots,n$) ,用 $c^{(i)}$ 表示最接近 $x^{(i)}$ 的簇的质心(簇分配步骤);其中,$c^{(i)} \in { 1,2,\cdots,K }$
    $$c^{(i)} := \arg{\min_j || x^{(i)} - \mu_j ||}$$
  3. 对于每个簇$j$($j=1,2,\cdots,K$),更新簇的质心$\mu_j$(簇中所有点的坐标均值)
    $$\mu_j := \frac{\sum_{i=1}^n 1 { c^{(i)} = j } x^{(i)} }{\sum_{i=1}^n 1 { c^{(i)} = j } } $$
  4. 重复步骤2和3,直到收敛

输出

收敛 converge


$$\mu_{c^{(i)} } = \mbox{样本} x^{(i)} \mbox{被分配的簇的质心} $$

畸变函数/失真函数(distortion function):
$$J(c, \mu)=\sum_{i=1}^n || x^{(i)} - \mu_{c^{(i)} } ||^2 $$

目标函数(optimization objective)/ 代价函数(cost function)为:
$$J \left( c^{(1)}, \cdots, c^{(n)}; \mu_1, \cdots, \mu_K \right) = \frac{1}{n}\sum_{i=1}^n || x^{(i)} - \mu_{c^{(i)} } ||^2 $$
$$\min_{ c^{(1)}, \cdots, c^{(n)} \atop \mu_1, \cdots, \mu_K } J \left( c^{(1)}, \cdots, c^{n}; \mu_1, \cdots, \mu_K \right) $$

K-means聚类的内循环(inner loop,步骤2和3)重复最小化$J$

  • 固定$c$,$J$针对

确定K的方法

按需选择

根据建模的需求和目的来选择聚类的个数

观察法

直接看数据的散点图,看数据点大致聚成几堆

  • 原始数据维数要低,一般是两维或三维,否则无法通过散点图观察
  • 对于高维数据,可以先利用PCA(主成分分析法)降维,然后进行观察

肘部法

肘部法(Elbow Method),以聚类的数量为x轴,以WSS为y轴,绘制折线图,拐弯最明显的点对应的值就是比较合适的k值。

  • x轴为聚类的数量
  • y轴为WSS(within cluster sum of squares),即各个点到cluster(簇)中心的距离的平方和

Gap Statistics方法

对比

优点

  • 原理简单
  • 容易实现
  • 对大数据集有较高的学习效率,且具有可伸缩性

缺点

  • 收敛速度较慢
  • 算法的时间复杂度较高$O(nKt)$
  • $n$:样本点个数
  • $K$:聚类类别数
  • $t$:迭代次数
  • 不能发现非凸形状的簇
  • 对噪声和离群点敏感
  • 结果不一定是全局最优,只能保证局部最优

K-Means vs K-Medoids

  • 二者的区别主要在于:质心的选择
K-Means K-Medoids
质心的选择 样本点均值 从样本点中选取
计算质心的时间复杂度 $O(n^2)$
运行速度较慢
对噪声 敏感 相对较不敏感,比较稳健(robust)

K-Means vs KNN

K-Means KNN
分类 聚类算法 分类/回归算法
监督 无监督学习 有监督学习
训练集 无标签数据 有标签数据
无序变有序
相似点 都包含——给定一个点,在数据集中找离它最近的点——的过程;即,二者都使用了NN(Nearest Neighbor)算法,一般用KD树实现NN

K-Means vs DBSCAN

K-Means DBSCAN
聚类类型 基于划分 基于密度
对象 都是将每个对象指派到单个簇的划分聚类算法
一般聚类所有对象 丢弃被它识别为噪声的对象
很难处理非球形的簇和不同大小的簇;
可以发现不是明显分离的簇
可以处理不同大小或形状的簇;
会合并有重叠的簇
噪声/离群点 不太受噪声和离群点的影响
时间复杂度 $O(n)$ $O(n^2)$
结果可重复性 通常随机初始化质心,不会产生相同结果 多次运行产生相同的结果
稀疏数据 可用于稀疏的高维数据 在稀疏的高维数据上的表现很差

其中:

  • $n$是样本点个数
  • 聚类可分为基于划分、层次、密度、图形和模型五大类

参考资料

Thank you for your approval.

欢迎关注我的其它发布渠道