【机器学习小笔记】k-means聚类

2018-07-24  本文已影响0人  吕子吕子吕秀才

k-means聚类

一、概括x

算法对原型进行初始化,然后对原型迭代更新求解。

二、补充

Andrew Ng

三、具体过程

输入:样本集D = {x1,x2,x3,...,xm},聚类簇数k

过程:

从D中随机选择k个样本作为初始均值向量,即簇心向量{μ1, μ2,...,μk}
repeat:
令C{_i} = ɸ(1<= i <= k)
  for x in 样本D:
    计算样本与各簇心{μ1, μ2,...,μk}的距离
    x离哪个簇心近则将其划分到哪个簇({C1, C2, ...,Ck })
  计算新的均值向量(簇心向量)
  更新簇新{μ1, μ2,...,μk}
直到簇心向量未更新,或已最小化平方误差

输出:簇划分(簇标签与簇成员)

四、举个例子

输入:

聚类数k = 3,西瓜样本D如下图:

编号 西瓜密度 西瓜含糖率
1 0.697 0.460
2 0.774 0.376
3 0.634 0.264
.. ... ...
30 0.446 0.459

过程:

  1. 从D中随机选择3个样本作为初始均值向量{μ1, μ2, μ3 }
    假设随机选取的样本为前三个样本,则μ_1 =(0.697, 0.460), μ_2 = (0.774, 0.376), μ_3= (0.634, 0.264)
  2. 计算样本与各簇心{μ1, μ2,...,μk}的距离
    例如:第30个样本据簇心的欧式距离分别为:d_{(30,1)} = \sqrt [] { (0.446 - 0.697)^2 + (0.459 - 0.460)^2}=0.251d_{(30,2)}~ =\sqrt [] { (0.446 - 0.774)^2 + (0.459 - 0.376)^2}=0.338d_{(30,3)}~ =\sqrt [] { (0.446 - 0.634)^2 + (0.459 - 0.264)^2}=0.271
  3. x离哪个簇心近则将其划分到哪个簇({C1, C2, ...,Ck })
    例如:d(30,2)最大,故将第30个样本划分到C2簇。
       簇划分的结果为:C_1={\{x_3, x_5, x_6, x_7, x_8, x_9, x_{10}, x_{13}, x_{14}, x_{17}, x_{18}, x_{19}, x_{20}, x_{23}}\} C_2={\{ x_{11}, x_{12}, x_{16}, x_{20} }\} C_3={\{x_1, x_2, x_4, x_{15}, x_{21}x_{22}, x_{24}, x_{25}, x_{26}, x_{27}, x_{28}, x_{29}}\}
  4. 将样本都划分到3个簇后,计算新的均值向量,更新簇新{μ1, μ2,...,μk}
    例如:μ_{1new} =(0.493, 0.208), μ_{2new }= (0.396, 0.076), μ_{3new}= (0.602, 0.395)
  5. 重复2-3步,直到簇心向量未更新,或已最小化平方误差:min E = \sum_{i=1}^k\sum_{x∈C_i}{||x-μ_i||_2^2}

参考资料
《机器学习》 周志华
《machine learning》 Andrew Ng

上一篇 下一篇

猜你喜欢

热点阅读