机器学习十大经典算法-KMeans

K-means是一种基于欧式距离的常用聚类算法,通过迭代寻找类簇中心。初始中心点可随机选取,也可通过层次聚类等方法预处理。距离最近原则通常指欧氏距离,但也可选择其他距离度量。簇类中心更新通过计算所有点的均值,收敛条件是中心点不再变化或达到预设阈值。该算法在大数据集上有良好伸缩性,适合高斯分布的类簇,但也存在对初始值和异常值敏感、需手动设置K值等问题。
摘要由CSDN通过智能技术生成

K-means 是我们最常用的基于欧式距离的聚类算法,其认为两个目标的距离越近,相似度越大。其算法步骤为:

1.选择初始化的  个样本作为初始聚类中心2.针对数据集中每个样本  计算它到  个聚类中心的距离并将其分到距离最小的聚类中心所对应的类中3.针对每个类别  ,重新计算它的聚类中心 (即属于该类的所有样本的质心)4.重复上面 2、3 两步操作,直到达到某个中止条件(迭代次数、最小误差变化等)
那么这里就会引现出几个问题,

初始簇类中心如何选择
值的选择
距离最近原则具体指什么
怎么更新簇类中心
判断簇类收敛到不再改变的条件是什么?

初始簇类中心如何选择
选择初始类簇中心点对于聚类效果的好坏有很大的影响,那么我们该如何去确定簇类中心呢?
1.随机选取
随机选取是最简单的方法,但是也是有技巧的,我们通过对数据的预估来进行观察,从而确定初始的K值,比如说二维平面上的点,我们可以通过将其可视化到二维平面进行肉眼的判断,从而确定k值;比如说对于一些利用特征值进行聚类的数据,我们依旧可以将其进行量化到二维或者三维空间中,当然对于高维数据,首先可以进行降维操作,继而进行可视化。

2.初始聚类

选用层次聚类或者Canopy算法进行初始聚类,然后利用这些类簇的中心点作为KMeans算法初始类簇中心点。

常用的层次聚类算法有BIRCH,ROCK,Canopy算法。

层次聚类的思想是:一层一层地进行聚类,可以从下而上地把小的cluster合并聚集,也可以从上而下地将大的cluster进行分割。似乎一般用得比较多的是从下而上地聚集,这里我们说下自下而上的聚类。所谓从下而上地合并cluster,具体而言,就是每次找到距离最短的两个cluster,然后进行合并成一个大的cluster,直到全部合并为一个cluster。整个过程就是建立一个树结构,类似于下图。
3.平均质心距离的加权平均值

首先随机选出一个点,然后选取离这个点距离最大的点作为第二个点,再选出离这两个点距离最小值最大的点作为第三个点,以此类推选出 个点

** 值的选择**
这里我们需要调试 值对于结果进行评测,从而判断最优 值,并将其应用到实际的模型中。
给定一个合适的类簇指标,比如平均半径或直径,只要我们假设的类簇的数目等于或者高于真实的类簇的数目时,该指标上升会很缓慢,而一旦试图得到少于真实数目的类簇时,该指标会急剧上升。
距离最近原则具体指什么
欧氏距离
曼哈顿距离
切比雪夫距离
马氏距离
夹角余弦
汉明距离
杰卡德距离
相关系数
信息熵
https://blog.csdn.net/gamer_gyt/article/details/75165842
** 怎么更新簇类中心**
求平均值,需要说明一点的是这里的平均值并不一定是实实在在存在的数据,很大程度上就是虚拟的一个数据,比如说我们对二维平面上的点进行聚类时,更新簇类中心就不是原数据中的某个点,同样对于用户对item进行评分时的数据聚类,更新簇类中心后的item也并不是一个真正的item,而是虚拟出的一个。
判断簇类收敛到不再改变的条件是什么?
一般情况下判断聚类stop的条件是 聚类结果不再发生变化,但是对于始终无法停止的聚类的数据,就要额外的添加一些约束条件来迫使停止聚类,比如说更新簇类中心前后的新旧簇类中心相似度大于90%,距离小于10%等
优缺点
优点
容易理解,聚类效果不错,虽然是局部最优, 但往往局部最优就够了
处理大数据集的时候,该算法可以保证较好的伸缩性
当簇近似高斯分布的时候,效果非常不错
算法复杂度低
缺点
值需要人为设定,不同 值得到的结果不一样
对初始的簇中心敏感,不同选取方式会得到不同结果
对异常值敏感
样本只能归为一类,不适合多分类任务
不适合太离散的分类、样本类别不平衡的分类、非凸形状的分类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值