算法|K-means,K-means++方法详解-机器学习分类问题常见算法


文章目录

  • 基本介绍
  • 算法步骤
  • 伪代码
  • 距离计算方法
  • 算法优缺点
    • 优点
    • 缺点
  • K-means++

听说点进蝈仔帖子的都喜欢点赞加关注~~
算法|K-means,K-means++方法详解-机器学习分类问题常见算法
文章图片

感谢知乎:
https://zhuanlan.zhihu.com/p/78798251
基本介绍 来自百度百科:
K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则。K-means算法以欧式距离作为相似度测度,它是求对应某一初始聚类中心向量V最优分类,使得评价指标J最小。算法采用误差平方和准则函数作为聚类准则函数。
算法|K-means,K-means++方法详解-机器学习分类问题常见算法
文章图片

Simply speaking, K-Means clustering is an algorithm to classify or to group your objects based on attributes/features, into K number of groups. K is a positive integer number. The grouping is done by minimizing the sum of squares of distances between data and the corresponding cluster centroid. Thus, the purpose of K-means clustering is to classify the data.
算法步骤 算法步骤:
(1) 首先我们选择一些类/组,并随机初始化它们各自的中心点。中心点是与每个数据点向量长度相同的位置。这需要我们提前预知类的数量(即中心点的数量)。
(2) 计算每个数据点到中心点的距离,数据点距离哪个中心点最近就划分到哪一类中。
(3) 计算每一类中中心点作为新的中心点。
(4) 重复以上步骤,直到每一类中心在每次迭代后变化不大为止。也可以多次随机初始化中心点,然后选择运行结果最好的一个。
直观展示一个结果
算法|K-means,K-means++方法详解-机器学习分类问题常见算法
文章图片

伪代码
获取数据 n 个 m 维的数据 随机生成 K 个 m 维的点 while(t) for(int i=0; i < n; i++) for(int j=0; j < k; j++) 计算点 i 到类 j 的距离 for(int i=0; i < k; i++) 1. 找出所有属于自己这一类的所有数据点 2. 把自己的坐标修改为这些数据点的中心点坐标 end

距离计算方法 算法|K-means,K-means++方法详解-机器学习分类问题常见算法
文章图片

算法|K-means,K-means++方法详解-机器学习分类问题常见算法
文章图片

算法优缺点 优点 容易理解,聚类效果不错,虽然是局部最优, 但往往局部最优就够了;
处理大数据集的时候,该算法可以保证较好的伸缩性;
当簇近似高斯分布的时候,效果非常不错;
算法复杂度低。
缺点 K 值需要人为设定,不同 K 值得到的结果不一样;
对初始的簇中心敏感,不同选取方式会得到不同结果;
对异常值敏感;
样本只能归为一类,不适合多分类任务;
不适合太离散的分类、样本类别不平衡的分类、非凸形状的分类。
K-means++ 定义:k-means++是一种为k-means聚类算法选择初始值(或“种子”)的算法。它是NP-hard k-means问题的一种近似算法,它是一种避免标准k-means算法有时发现的较弱聚类的方法。
【算法|K-means,K-means++方法详解-机器学习分类问题常见算法】K-means与K-means++:原始K-means算法最开始随机选取数据集中K个点作为聚类中心,而K-means++按照如下的思想选取K个聚类中心:假设已经选取了n个初始聚类中心(0 算法|K-means,K-means++方法详解-机器学习分类问题常见算法
文章图片

    推荐阅读