【机器学习算法推导】K均值(K-means)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hemk340200600/article/details/85466943

非监督算法是机器学习研究的一大领域,它适用于不带标签的样本数据,采取一定的算法,将样本分成自动分类成不同的簇。

K均值(K-meas)

  K均值算法接收两个输入,一个是K,表示簇的数量,另一个是不带标签的训练集{ x 1 , x 2 , . . x m x_1,x2,..x_m }。
  算法过程如下:

  1. 随机初始化K个聚类中心 μ 1 , μ 2 , . . . μ K \mu_1,\mu_2,...\mu_K
  2. 遍历每个样本,对于每个样本,计算其与K个聚类中心的距离,将样本划分到距离最短的中心的簇内。
  3. 遍历每个聚类中心 μ k \mu_k ,计算被划分到簇 μ k \mu_k 的样本的均值作为 μ k \mu_k 的新位置。

  令 c ( i ) c^{(i)} 表示样本i被划分到的簇的下标,则损失函数可以定义为:
J ( c ( i ) , . . . , c ( m ) , μ 1 , . . . , μ k ) = 1 m x ( i ) μ c ( i ) 2 . . . . . . . . ( 1 ) J(c^{(i)},...,c^{(m)},\mu_1,...,\mu_k)=\frac{1}{m}||x^{(i)}-\mu_{c^{(i)}}||^2........(1)
  我们的目标就是最小化(1),而算法步骤2和3的过程就是在最小化损失函数的过程。因此该算法是可行的。

距离的计算

  通常使用欧式距离 d = i = 1 m ( x ( i ) y ( i ) ) 2 d=\sqrt{\sum\limits_{i=1}^m(x^{(i)}-y^{(i)})^2}

聚类中心初始化

  方法:通常随机取K个样本作为初始聚类中心。

参数K的选择

  肘部原则:画出K从1开始的损失函数值的图像,一开始,图像会下降地比较快,然后趋于平缓,整个形状看起来像人的手肘,我们所要做的就是选取肘部对应的K作为我们的参数K。因为选取它前面的参数的话,损失函数值太高,选取它后面的参数的话,损失函数值变化的量又太少,因此肘部可能是一个合适的参数。然而画出来的图像不一定总是存在肘部,也有可能是平滑的,不过也是一种值得尝试的方法。
  另一种方法是根据后续的目的来决定K参数的取值。

总结

优点:易于实现,非常简单且使用广泛
缺点:可能收敛于局部最小值,在大规模数据下收敛慢,对初始聚类中心的位置较为敏感,参数K需要手动选择。

猜你喜欢

转载自blog.csdn.net/Hemk340200600/article/details/85466943
今日推荐