【机器学习】——Kmeans算法
k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,由James MacQueen在1967年提出,是聚类方法中最著名,最具代表性的算法之一在提到Kmeans之前稍微介绍下聚类和分类的区别聚类分类核心将数据分成多个组,探索各个组的数据是否有关联从已经分组的数据中去学习,把新数据放到已经分好的组中去学习类型无监督学习算法,不需要标签进行训练有监督学
简介
k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,由James MacQueen 在1967年提出,是聚类方法中最著名,最具代表性的算法之一
在提到Kmeans之前稍微介绍下聚类和分类的区别
聚类 | 分类 | |
---|---|---|
核心 | 将数据分成多个组,探索各个组的数据是否有关联 | 从已经分组的数据中去学习,把新数据放到已经分好的组中去 |
学习类型 | 无监督学习算法,不需要标签进行训练 | 有监督学习算法,需要标签进行训练 |
典型算法 | K-Means、DBSCAN、层次聚类等 | K近邻 (KNN)、决策树、朴素贝叶斯、逻辑回归、支持向量机、随机森林等 |
算法输出 | 无需预设类别,类别数不确定,类别在学习中生成 | 预设类别,类别数不变,适合类别或分类体系已经确定的场合 |
原理
从字面上看,就是将N个样本划分成K个类别,通过均值(Mean)的方法,其原理是根据已知初始中心点,计算所有样本距中心点距离并将该点划分为距离最小的类中,并根据得到的类计算新的中心点,若该过程收敛,中心点会随着迭代逐渐趋近于最终点。
步骤
-
确定初始中心点:主要是确定初始点个数,初始点的位置对会影响迭代快慢。
-
计算样本距中心点位置,并划分至最小距离对应类别。
-
通过计算类内均值得到新的中心点。
-
重复第2、3步,直至满足终止条件
- 没有样本被重新分配
- 没有中心点发生变化
- 误差平方和局部最小
时间复杂度: O ( t k n m ) O(tknm) O(tknm),其中,t 为迭代次数,k 为簇的数目,n 为样本点数,m 为样本点维度。
空间复杂度: O ( m ( n + k ) ) O(m(n+k)) O(m(n+k)),其中,k 为簇的数目,m 为样本点维度,n 为样本点数。
优缺点
优点:
- 容易理解,聚类效果不错,虽然是局部最优, 但往往局部最优就够了;
- 处理大数据集的时候,该算法可以保证较好的伸缩性;
- 当簇近似高斯分布的时候,效果非常不错;
- 算法复杂度低。
缺点: - K 值需要人为设定,不同 K 值得到的结果不一样;
- 对初始的簇中心敏感,不同选取方式会得到不同结果;
- 对异常值敏感;样本只能归为一类,不适合多分类任务;
- 不适合太离散的分类、样本类别不平衡的分类、非凸形状的分类(对噪声、异常点敏感)。
一点思考
&emps;&emps;作为最经典的算法,其改进的方向还是很多的
1、K值在选取过程中是人为的,可以改为自适应的
2、K值在选取之后是固定的,明显这不是合理的操作
3、在距离、均值、误差等计算上根据实际问题也可改进
改进算法
- 核Kmeans算法
- Kmeans++算法
- ISODATA算法
待补充
更多推荐
所有评论(0)