KMEANS

KMEANS

DBSCAN算法用于聚类(详见视频)

之前套路是找到目标函数,不断优化

 

现在是无监督问题,没有了标签。有标签情况下便于多种不同评估,基于预测值和真实值(即标签值)的差异来评估模型的,通过评估值也便于选择参数

聚类目标:将给定数据分成K个簇,并给出每个数据对应的簇中心

首先告诉机器需要把数据分成多少堆,即指定K值,k=3 表示将数据聚类成3个堆,在数据中随机生成3个点(也可以说是3个质心),K值的位置如果没有选择好,可能出现分堆错误的情况,如下图

错误分堆

正确分堆

初始点的位置选择很关键

计算样本点到簇心距离:分堆

更新质心:即取均值,用于之后的迭代。一堆数据怎么取质心?如二维,所有数据点横坐标的均值和纵坐标的均值就可求出质心(还是通过计算得出的质心,不是什么选中心点)

距离度量:遇到x值很小,y值很大情况需要将数据标准化。否则就会错误认为相似度主要由y来决定,x基本无影响

另一个需要考虑的是离群点的处理:离群点或者少量噪声数据对均值会产生较大影响,导致中心偏移

 

优化目标:又到了常规套路,所有点到簇心的距离越小越好。数据点到质心距离和最小/直到质心位置不再改变

 

图解工作流程:

注意c图中,蓝色的两个点本来应该属于红色簇,但是由于离蓝色中心点近原因被错误分到蓝色簇堆了

c图不同颜色代表不同簇,但期望的分队应该是a图的情况,所以现在需要更新质心重新计算了

所以每次更新质心都需要遍历样本的所有数据点

直到f图中的质心基本不再改变

 

视频中有一个网址可以自己体会一下流程是怎么改变的

 

能可视化展示,但是不知道数据标签,也就不知道数据应该分为多少堆,K值的选取很难(可以设置不同值的簇看下效果来决定)

适合常规数据集:眼睛都能看出分堆情况(如上图)

对于特殊形状的簇,很难用KMEANS处理,如下:

期望能分成里外两堆,实际情况无法做到

 

KMEANS可以用作图像压缩(压缩出来了能还原回去吗)

 

通过for k in range(2,20)多次试验结果选择出最合适的K值

书本推荐方法:手肘法,根据K值和误差平方和的曲线图确定出K

视频中提及到:模型的轮廓系数(用到后再具体看)

 

算法缺点:

人工确定初始K值

受初始值的位置和个数的影响较大

容易受到离群点和噪声点的影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值