2-3 经典机器学习算法-Kmeans原理-优缺点-如何分布式实现

1、简述kmeans流程,并且简述使用场景?
2、简述K-means对异常值是否敏感?
3、如何评估聚类效果?超参数k如何选择?
4、如何用mapreduce分布式实现K-means算法?
5、kmeans算法的优缺点,如何改进K均值算法?
6、证明Kmeans的收敛性


1、简述kmeans流程,并且简述使用场景?

Kmeans适用于无监督聚类场景

(1)数据预处理、离群点处理,聚类中心个数K设定

(2)设定K个聚类簇的中小点

(3)定义代价函数:各个样本对应簇中心点的距离和

(4)对于每个样本点,计算与之距离最近的簇中心,并赋予簇标签,计算代价函数;然后重新计算每个簇的中心点

(5)直到训练停止,及每个样本对应簇不改变,代价函数收敛,达到迭代最大次数等条件


2、简述K-means对异常值是否敏感?

是的,异常值会导致簇中心点偏移,导致均值所计算出来的中心位置不能够 反映真实的类中心。


3、如何评估聚类效果?超参数k如何选择?

通过设定聚类效果的metric如代价函数误差平方和,通过尝试不同的K或者经验选择,选择代价函数最小的情况下的K取值

聚类效果的评估metric:各种聚类评估指标,类内距离近类间距离远

超参数K的选择:手肘法经验尝试,Gap Statistic适用于批量化作业


4、如何用mapreduce分布式实现K-means算法?

(1)根据原始文件生成随机聚类中心向量(需指定聚类中心向量个数 k),指定循环次数;
(2)在 map 阶段,setup 函数读取并初始化聚类中心向量;在 map 函数中读取每个记录,计算当前记录到各个聚类中心向量的距离,根据到聚类中心向量最小的聚类中心 id 判断该记录属于哪个类别,输出所属聚类中心 id 和当前记录;
(3) 在 reduce 阶段,reduce 函数接收相同聚类中心 id 的数据;把这些数据的每列进行求和,并记录每列的个数;计算新的聚类中心向量(每列的和除以每列的个数),然后输出聚类中心 id 和新的聚类中心向量;
(4) 判断前后两次聚类中心向量之间的误差是否小于某阈值;如果小于,则跳转到步骤 5),否则跳转到步骤 2);
(5) 针对最后一次生成的聚类中心向量对原始数据进行分类,得到每个记录的类别。


5、kmeans算法的优缺点,如何改进K均值算法?

缺点:

(1)需要人工定义初始值K,且该值与真实分布未必契合

(2)K均值只能收敛到局部最优,而非全局最优

(3)已受到噪声点的影响

(4)样本点只能被划分到单一的类别中

优点:

(1)方法简单直接

(2)对于大数据集,局部最优基本能够达到较好效果

(3)复杂度接近线性O(NKt) N为数据样本量 K为聚类中心数 t为迭代轮数

改进K均值算法

(1)Kmeans++选取初始值的时候,有更高概率选择已选簇中心更远的点

(2)ISODATA算法,存在分裂和合并的操作,合并类别内样本太少的情况;分裂类别内方差太大的情况


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值