Kmeans聚类算法:K均值聚类
聚类:给事物打标签,寻找同一个组内的个体之间的一些潜在的相似模式。力图找到数据的自然分组Kmeans。
聚类是一种无监督的机器学习任务,他可以自动将数据划分成类cluster。因此聚类分组不需要提前被告知所划分的组应该是什么样的。因为我们甚至可能都不知道我们寻找什么。所以聚类是用于只是发现而不是预测。
列入下图。
我们可以直观的感觉把图分为三类:
聚类原则是一个组内的记录彼此必须非常的相似,而与改组之外的记录截然的不同。所有的聚类做的就是遍历所有的数据然后找到这些相似性。
算法的思想:
--以空间中K个点为中心进行聚类,对最靠近他们的对象归类,通过迭代的方法逐次更新各聚类中心的值,直到得到最好的聚类结果。
算法流程总结:
--1.适当的选择k个类的初始中心
--2.在第k次迭代中,对任意一个样本,求其到k个中心的距离,将该样本归到距离最短的中心点所在的类
--3.利用均值等方法更新该类的中心点
--4.对于多个k个聚类的中心点,如果利用2,3的迭代方法更新后,中心点的值保持不变了,则迭代结束。该分类就是最终的分类。否则继续迭代2,3。
其中的距离算法有很多,例如:欧式距离测度(kmeans算法使用),平方欧式距离测度,曼哈顿距离测度,余弦距离测度,谷本距离测度,加权距离测度,肘部法等等。
缺陷:
聚类中心的个数k需要事先给定,但在实际中这个k值的选定时非常难以估计的,很多时候事先并不知道给定的数据集应该分成多少个类别才是最合适的。kmeans需要人为的确定初始聚类中心,不同的初始聚类中心可能导致完全不同的聚类结果。所以可以使用kmeans++算法来解决。
kmeans++算法:
--1. 从输入的数据点集合中随机选择一个点作为第一个聚类中心点值
--2. 对于数据集中的每一个点x,计算他与最近聚类中心(指已选择的聚类中心值)的距离D(x)
--3. 选择一个新的数据点作为新的聚类中心点,选择的原则是:D(x)较大的点,被选取为聚类中心的概率较大
--4. 重复2和3知道k个聚类中心被选出来
--5. 利用这个k个初始的聚类中心来运行标准的kmeans算法