K-Means(无监督算法)

概述

K-Means是一种聚类算法,算法过程是以迭代的方式进行的。

详解

1. Input

  • K(从数据中聚类出的簇的个数)
  • Training set (drop x_0 = 1)

2. Process

Randomly initialize K cluster centroids μ1,μ2,.....,μk       %随机初始化聚类中心
Repeat{
	%簇分配:离哪一个聚类中心近,将其分配到其对应簇。(保持聚类中心不变的情况下,最小化 J)
	for i = 1 to m
		c^(i) := index (from 1 to K) of cluster centroid closest to x^(i)   %c^(i)表示x(i)对应的簇
	%移动聚类中心:计算不同簇的均值,作为新的聚类中心。(选择聚类中心 μ,来最小化 J)
	for k = 1 to K
		u_k := average (mean) of points assigned to cluster k
}

如果存在一个没有点的聚类中心,一般将其移除。

3. 优化目标函数
K-Means(无监督算法)_第1张图片

μ_c^(i) 表示 x^(i) 已经分配的聚类中心
目的:1.帮助我们对学习算法进行调试,,确保K-Means正确进行。
           2.帮助找到更好的簇,并避免局部最优解。

4. 随机初始化

  • K < m
  • K-Means(无监督算法)_第2张图片

5. 选择簇的个数 K

  • 肘部法则(Elbow method):如下左图;但不能解决所有情况,如右图。
    K-Means(无监督算法)_第3张图片
  • 结合实际情况,看哪个聚类数量能更好的应用于后续目的

你可能感兴趣的:(machine,learning)