kmeans用于数据挖掘,是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大
主要步骤如下:
1.从一群点中任意选择K个点,且叫他中心点,K值就是将这群点分的类别数目
2.对余下的每一个点,分别计算它与每一个中心点的距离,得到K个距离,比较这K个距离,选择其中最小的距离,将点与这个中心点归为一类。
3.当所有的点都归类后,对每一个类别重新计算其中心点,再次得到K个中心点,然后重复2步骤。
然后,开始解决以下问题:
1.只有把现实世界的物体的属性抽象成向量或坐标,就可以用K-Means算法来归类了。如何把一个实体文件抽象为一个点。在这里,用到了中文分词和坐标、维度概念。比如说有100篇文章,对每一篇均进行分词,从中提取关键字。将100篇文章的关键字整合并进行去重复操作,假如最终得到1000个关键字,暂时标记为整合关键字。此外,这1000个关键字还可抽象为1000个维度。然后将每一篇文章的关键字与整合关键字进行比对。若某个整合关键字在文章中出现了,则此篇文章在这个关键字处,即这个维度上可以计作1,若没有出现则计作0,当一片文章中的关键字被比对完之后,一篇文章就被抽象为一个点,且这个点由1000个坐标组成。点的坐标除了1和0外,还可以是其他整数。由此,抽象一篇文章可以有两种思路
(1)某个整合关键字只要在文章中出现了,就计作1,而不管这个整合关键字在这片文章中出现了几次。因此,这种思路下的点的坐标仅由1和0组成。
(2)我们不仅要考虑某个整合关键字是否文章中出现了,还要考虑他到底出现了几次。即出现几次,就计作几,这种思路下坐标,除了1和0,还有其他整数。
2.在划分类别的时候,是如何判断两点之间的距离的。首先一个点由两个坐标组成,计作(x,y),就像在二维平面中,求两点之间的距离,d=。这种方法是最简答,也是我们最容易想到的。
3.如何计算中心点,最简单的,使用各个点的X/Y坐标的平均值。
4.在Kmeans算法中,需要重复计算中心点,那么具体要重复多少次才停止呢?
停止的条件有两种
(1) 每次重复计算的中心点,与上一次计算的中心点之间总有一定的浮动范围。因此, 我们提前给定一个中心点的浮动范围,在两次中心点之间的差值在这个浮动范围里时, 我们就认定中心点已经固定,重复计算就此结束。
(2)不论重复计算多少次,我们可以确定一点,重复计算次数越多,中心点就越精确,即每一个类别里点之间的关系就越亲密。当然我们不可能进行无数次的重复计算。因此,我们根据实际情况,选择一个合适的次数进行重复计算即可。当重复计算了限定次数的时候,就固定当前所分类的情况。
(3)其实还有第三种,就是将浮动范围和限定次数相结合,作为两个限定条件,只要满足其中一个条件,重复即可停止。
5.其实,kmeans也是有缺点的,很重要的一点就是K 是事先给定的,这个 K 值的选定是非常难以估计的。很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适。此时,我们就需借助其他算法来确定K值