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

文章目录

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

听说点进蝈仔帖子的都喜欢点赞加关注~~
K-means,K-means++方法详解-机器学习分类问题常见算法_第1张图片
感谢知乎:
https://zhuanlan.zhihu.com/p/78798251

基本介绍

来自百度百科:

K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则。K-means算法以欧式距离作为相似度测度,它是求对应某一初始聚类中心向量V最优分类,使得评价指标J最小。算法采用误差平方和准则函数作为聚类准则函数。

K-means,K-means++方法详解-机器学习分类问题常见算法_第2张图片

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++方法详解-机器学习分类问题常见算法_第3张图片

伪代码

获取数据 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++方法详解-机器学习分类问题常见算法_第4张图片

K-means,K-means++方法详解-机器学习分类问题常见算法_第5张图片

算法优缺点

优点

容易理解,聚类效果不错,虽然是局部最优, 但往往局部最优就够了;
处理大数据集的时候,该算法可以保证较好的伸缩性;
当簇近似高斯分布的时候,效果非常不错;
算法复杂度低。

缺点

K 值需要人为设定,不同 K 值得到的结果不一样;
对初始的簇中心敏感,不同选取方式会得到不同结果;
对异常值敏感;
样本只能归为一类,不适合多分类任务;
不适合太离散的分类、样本类别不平衡的分类、非凸形状的分类。

K-means++

定义:k-means++是一种为k-means聚类算法选择初始值(或“种子”)的算法。它是NP-hard k-means问题的一种近似算法,它是一种避免标准k-means算法有时发现的较弱聚类的方法。

K-means与K-means++:原始K-means算法最开始随机选取数据集中K个点作为聚类中心,而K-means++按照如下的思想选取K个聚类中心:假设已经选取了n个初始聚类中心(0 K-means,K-means++方法详解-机器学习分类问题常见算法_第6张图片

你可能感兴趣的:(算法,Python相关,人工智能,算法,机器学习,kmeans)