K-Means 算法步骤
1、选择 K 个随机的点,称为聚类中心(cluster centroids)
2、把每个数据样本划分到最近的中心点那一簇;
D(xi)=argmin||xi−μr||22r=1,2,...kselected
样本到哪个簇距离最小,就属于哪个簇。
3、划分完后,更新每个簇的中心,即把该簇的所有数据点的坐标加起来去平均值。求中心点距离一般采用欧几里德算法计算。
4、每个簇的中心为新的聚类中心,重复第2,第3步骤,这样不断进行”划分—更新—划分—更新”,直到每个簇的中心不在移动为止。
第i个样本是哪一簇的,eg 第一个样本属于第二簇,
=2
第k个聚类中心 eg
=1 ,
=2 ,
=3 ,,,,, ,
=k
初始化
在运行 K-均值算法的之前,我们首先要随机初始化所有的聚类中心点,下面介绍怎样做:
1. 我们应该选择 K<m,即聚类中心点的个数要小于所有训练集实例的数量
2. 随机选择 K 个训练实例,然后令 K 个聚类中心分别与这 K 个训练实例相等
K-均值的一个问题在于,它有可能会停留在一个局部最小值处,而这取决于初始化的情况。
为了解决这个问题,我们通常需要多次运行 K-均值算法,每一次都重新进行随机初始化,最后再比较多次运行 K-均值的结果,选择代价函数最小的结果。这种方法在 K 较小的时候(2--10)还是可行的,但是如果 K 较大,这么做也可能不会有明显地改善。
优化目标
K-均值最小化问题,是要最小化所有的数据点与其所关联的聚类中心点之间的距离之和,因此 K-均值的代价函数(又称畸变函数 Distortion function)为:
K值选择---“肘部法则”。
画出选择不同K时,,成本函数或者计算畸变函数 J,的曲线
你会发现这种模式,它的畸变值会迅速下降,从 1 到 2,从 2 到 3 之后,你会在 3 的时候达到一个肘点。在此之后,畸变值就下降的非常慢,看起来就像使用 3 个聚类来进行聚类是正确的,这是因为那个点是曲线的肘点,畸变值下降得很快,K 等于 3 之后就下降得很慢,那么我们就选 K 等于 3。当你应用“肘部法则”的时候,如果你得到了一个像上面这样的图,那么这将是一种用来选择聚类个数的合理方法。
但是,K值的选择最好还是根据实际意义去选择。