NLP之K-means聚类算法
基本概念:
- 聚类是一种无监督的学习,它将相似的对象归到一个簇中。
- 相似这一概念取决于所选择的相似度计算方法。
- 聚类与分类算法的最大区别在于,分类的目标类别已知,而聚类的目标类别是未知的。
算法介绍:
1.是一种基本的已知聚类类别数的划分算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。
2.该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。
3.它是使用欧氏距离度量的(简单理解就是两点间直线距离,欧氏距离只是将这个距离定义更加规范化,扩展到N维而已)。
4.它可以处理大数据集,且高效。它的输入是数据集和类别数。聚类结果是划分为k类的k个数据集。
5根据聚类结果的表达方式又可以分为硬 k-means(HCM)算法、模糊k-means算法(FCM)和概率k-means算法(PCM)。
基本思想:
基于给定的聚类目标函数,算法采用迭代更新的方法,每一次迭代过程都是向目标函数减小的方向进行,最终聚类结果使得目标函数取得极小值,达到较好的分类效果。
基本步骤:
1.从数据集中随机取k个对象,作为k个簇的初始聚类中心。
2.计算剩下的对象到k个簇中心的相似度,将这些对象分别划分到相似度最高的簇。
3.根据聚类结果,更新k个簇的中心,计算方法是取簇中所有对象各自维度的算术平均值。
4.将数据集中全部元素按照新的中心重新聚类。
5.达到算法停止条件,转至步骤6;否则转至步骤3。
6.输出聚类结果。
补充:算法停止条件
1.设定迭代次数;
2.聚类中心不再变化;
3.前后两次聚类结果的目标函数变化很小。
算法优缺点:
- 优点:易于实现
- 缺点:可能收敛到局部最小值,在大规模数据集上收敛较慢。
注意:
使用数据类型:数值型数据
k-means开发流程:
1.收集数据:使用任意方法。
2.准备数据:需要数值型数据类计算距离,也可以将标准型数据映射为二值型数据再用于距离计算。
3.分析数据:使用任意方法。
4.训练算法:此步骤不适用于此算法。
5.测试算法:应用聚类算法、观察结果,可以使用量化的误差指标如误差平方和来评估算法的结果。
6.使用算法:可以用于所希望的任何应用。通常情况下,簇质心可以代表整个簇的数据来做决策。
注意:
误差平方和准则f(目标函数)值:
伪代码表示:
1.创建k个点作为起始质心(通常是随机选择)
2.当任意一个点的簇分配结果发生改变时
对数据集中的每个数据点
对每个质心
计算质心与数据点直接的距离
对每一个簇,计算簇中所有点的均值并将均值作为质心
流程图表示:
学习以及代码参考链接
2.https://www.bilibili.com/video/BV1cx411x7xu
K-means 的应用
1.https://www.jianshu.com/p/06894372a1ad
2.https://www.cnblogs.com/leoo2sk/archive/2010/09/20/k-means.html
3.https://www.cnblogs.com/hqczsh/p/11772243.html