【机器学习二】梯度下降法KMeans

KMeans聚类的思想:
给定一个有M个对象的数据集,构建一个具有k个簇的模型,其中k<=M。满
足以下条件:
• 每个簇至少包含一个对象
• 每个对象属于且仅属于一个簇
• 将满足上述条件的k个簇成为一个合理的聚类划分
• 基本思想:对于给定的类别数目k,首先给定初始划分,通过迭代改变样本和
簇的隶属关系,使的每次处理后得到的划分方式比上一次的好(总的数据集之
间的距离和变小了)
K-means算法
K-means算法,也称为K-平均或者K-均值,是一种使用广泛的最基础的聚类
算法,一般作为掌握聚类算法的第一个算法
• 假设输入样本为T=X1,X2,…,Xm;则算法步骤为(使用欧几里得距离公式):
• 选择初始化的k个类别中心a1,a2,…ak;
• 对于每个样本Xi,将其标记位距离类别中心aj最近的类别j
• 更新每个类别的中心点aj为隶属该类别的所有样本的均值(为什么是所有样本的平均距离,下面解释)
• 重复上面两步操作,直到达到某个中止条件
• 中止条件:
• 迭代次数、最小平方误差MSE(样本到中心的距离平方和)、簇中心点变化率
根据K-means算法可以得到其具体是过程示意图:
在这里插入图片描述
图b中任意选取2个簇的中心点,图c是第一次迭代,迭代后分别得到2个簇的点。此时还不满足迭代终止条件,继续迭代。通过几次迭代会,最终得到图d,此时簇中心不再变化了,可认为完成了聚类。
K-means算法的Loss:
记K个簇中心分别为a1,a2,…ak;每个簇的样本数量为N1,N2,…,NK;
• 使用平方误差作为目标函数(使用欧几里得距离),公式为:
4
要获取最优解,也就是目标函数需要尽可能的小,对J函数求偏导数,可以得
到簇中心点a更新的公式为:
在这里插入图片描述

在这里插入图片描述
这也就解释了为啥K-means的簇中心为该簇的所有样本的均值。
K-means算法思考
K-means算法在迭代的过程中使用所有点的均值作为新的质点(中心点),如
果簇中存在异常点,将导致均值偏差比较严重
• 比如一个簇中有2、4、6、8、100五个数据,那么新的质点为24,显然这个质点离
绝大多数点都比较远;在当前情况下,使用中位数6可能比使用均值的想法更好,使
用中位数的聚类方式叫做K-Mediods聚类(K中值聚类)
• K-means算法是初值敏感(K值的给定和K个初始簇中心点的选择)的,选择不
同的初始值可能导致不同的簇划分规则
• 为了避免这种敏感性导致的最终结果异常性,可以采用初始化多套初始节点构造不
同的分类规则,然后选择最优的构造规则
K-means算法的初值敏感
在这里插入图片描述
K-means算法优缺点
• 缺点:
• K值是用户给定的,在进行数据处理前,K值是未知的,不同的K值得到的结果也不一样;
• 对初始簇中心点是敏感的
• 不适合发现非凸形状的簇或者大小差别较大的簇
• 特殊值(离群值)对模型的影响比较大
• 优点:
• 理解容易,聚类效果不错
• 处理大数据集的时候,该算法可以保证较好的伸缩性和高效率
• 当簇近似高斯分布的时候,效果非常不错

猜你喜欢

转载自blog.csdn.net/weixin_35389463/article/details/84471736