样本集合
,
为样本个数。
,
为每个样本的特征个数。
要把这些样本分为
类,
个类别的样本集合分别为
。
得到的
个类别要使得下式取得最小值:
![D = \sum_{k=1}^{K}\sum_{i=1}^{nk}dis(X_{ki},Ckc)](https://camo.githubusercontent.com/76e55c79d04a3b833a609c843be1cbf60f12e701847a61c2de13bb944ecf0885/687474703a2f2f6c617465782e636f6465636f67732e636f6d2f6769662e6c617465783f442673706163653b3d2673706163653b5c73756d5f7b6b3d317d5e7b4b7d5c73756d5f7b693d317d5e7b6e6b7d64697328585f7b6b697d2c436b6329)
其中
表示第
个类别的样本集合中样本的个数;
表示第
个类别的中心;
表示第
个类别的样本集合中的第
个样本。
表示第
个类别的样本集合中的样本与该类别中心的距离。
根据样本特征选择不同的距离公式,本算例采用欧几里得距离。
-
Kmeans 聚类步骤
-
随机选择
个类别中心
;
-
对每一个样本计算和
个类别中心的距离,找到距离最小的
,
然后将该样本添加到样本集合
中;
-
计算得到的
个类别的样本集合中样本的均值,作为新的
个类别中心;
-
满足迭代次数或者类别
个类别中心不再变化,则停止。
Kmeans聚类算法的结果会因为初始的类别中心的不同差异很大,为了避免这个缺点,下面介绍对初始类别中心的选择进行了优化的Kmeans++聚类算法。
-
Kmeans++聚类步骤
-
从样本集合中随机选择一个样本作为第1个类别中心;
-
对于样本集合中的每一个样本
,计算其与上一个刚被选择成为
类别中心的样本之间的距离
;
-
较大的样本,被选取作为类别中心的概率较大;
-
重复步骤
和
直到
个初始的类别中心被选出;
-
进行Kmeans算法。