欢迎关注哈希大数据微信公众号《哈希大数据》

接上篇

4.K-Means距离计算优化elkan K-Means

在传统的K-Means算法中,我们在每轮迭代时,要计算所有的样本点到所有的质心的距离,这样会比较的耗时。那么,对于距离的计算有没有能够简化的地方呢?elkan K-Means算法就是从这块入手加以改进。它的目标是减少不必要的距离的计算。那么哪些距离不需要计算呢?

elkan K-Means利用了两边之和大于等于第三边,以及两边之差小于第三边的三角形性质,来减少距离的计算。

第一种规律是对于一个样本点xx和两个质心μj1j2。如果我们预先计算出了这两个质心之间的距离D(j1,j2)D(j1,j2),则如果计算发现2D(x,j1)≤D(j1,j2),我们立即就可以知道D(x,j1)≤D(x,j2)。此时我们不需要再计算D(x,j2)D(x,j2),也就是说省了一步距离计算。

第二种规律是对于一个样本点x和两个质心μj1j2。我们可以得到D(x,j2)≥max{0,D(x,j1)−D(j1,j2)}。这个从三角形的性质也很容易得到。

利用上边的两个规律,elkan K-Means比起传统的K-Means迭代速度有很大的提高。但是如果我们的样本的特征是稀疏的,有缺失值的话,这个方法就不使用了,此时某些距离无法计算,则不能使用该算法。

5.大样本优化Mini Batch K-Means

在统的K-Means算法中,要计算所有的样本点到所有的质心的距离。如果样本量非常大,比如达到10万以上,特征有100以上,此时用传统的K-Means算法非常的耗时,就算加上elkan K-Means优化也依旧。在大数据时代,这样的场景越来越多。此时Mini Batch K-Means应运而生。

顾名思义,Mini Batch,也就是用样本集中的一部分的样本来做传统的K-Means,这样可以避免样本量太大时的计算难题,算法收敛速度大大加快。当然此时的代价就是我们的聚类的精确度也会有一些降低。一般来说这个降低的幅度在可以接受的范围之内。

在Mini Batch K-Means中,我们会选择一个合适的批样本大小batch size,我们仅仅用batch size个样本来做K-Means聚类。那么这batch size个样本怎么来的?一般是通过无放回的随机采样得到的。

为了增加算法的准确性,我们一般会多跑几次Mini Batch K-Means算法,用得到不同的随机采样集来得到聚类簇,选择其中最优的聚类簇。

6.K-Means与KNN

初学者很容易把K-Means和KNN搞混,两者其实差别还是很大的。

K-Means是无监督学习的聚类算法,没有样本输出;而KNN是监督学习的分类算法,有对应的类别输出。KNN基本不需要训练,对测试集里面的点,只需要找到在训练集中最近的k个点,用这最近的k个点的类别来决定测试点的类别。而K-Means则有明显的训练过程,找到k个类别的最佳质心,从而决定样本的簇类别。

当然,两者也有一些相似点,两个算法都包含一个过程,即找出和某一个点最近的点。两者都利用了最近邻(nearest neighbors)的思想。

7.K-Means小结

K-Means是个简单实用的聚类算法,这里对K-Means的优缺点做一个总结。

K-Means的主要优点有:

1)原理比较简单,实现也是很容易,收敛速度快。

2)聚类效果较优。

3)算法的可解释度比较强。

4)主要需要调参的参数仅仅是簇数k。

K-Means的主要缺点有:

1)K值的选取不好把握

2)对于不是凸的数据集比较难收敛

3)如果各隐含类别的数据不平衡,比如各隐含类别的数据量严重失衡,或者各隐含类别的方差不同,则聚类效

4) 采用迭代方法,得到的结果只是局部最优。

5) 对噪音和异常点比较的敏感。

【算法周】人以类聚咋个聚!K-means了解一下~(下篇)相关推荐

  1. 【算法周】人以类聚咋个聚!K-means了解一下~(上篇)

    欢迎关注哈希大数据微信公众号<哈希大数据> 上一周我们给大家讲了四篇机器学习的扫盲篇,把机器学习需要的一些常识以及需要的计算机环境理了一遍,这一周我们的系列名称是[算法周]!!毕竟算法是机 ...

  2. 我有一个梦想,希望每一位提到算法的人,不再立即紧皱眉头

    点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书--异步小编 多年来,我有一个梦想,希望每一位提到算法的人,不再立即紧皱眉头,脑海闪现枯燥 ...

  3. 《创业算法 - 技术人创业的认知升级》

    <创业算法 - 技术人创业的认知升级> 在最近热门的关于人工智能之父,认知心理学的创始人赫伯特西蒙的认知一书中讲到,人类的思维认知过程可以借鉴计算机的运算过程.这种跨学科的做法诞生了改变世 ...

  4. 牛客算法周周练2 B Music Problem(DP,抽屉原理,二进制拆分)

    链接:https://ac.nowcoder.com/acm/contest/5203/B 来源:牛客网 题目描述 Listening to the music is relax, but for o ...

  5. 测试算法(性能)的工具类

    记录几个测试算法性能的工具类,方便以后测试算法. Stopwatch类:可以得到算法的执行时间(单位:s,小数点后3位) 1: public class Stopwatch { 2: private ...

  6. 重庆市计算机专业高考试题,今年重庆高校毕业生达21.1万人 计算机类专业需求大...

    记者24日从重庆市教委获悉,2016年全市普通高校毕业生21.1万人,比2015年增加1万人.对于熟悉和精通计算机.信息技术的大学毕业生将面临更多的工作机会,市场营销.法学.管理.财会等文科类专业的需 ...

  7. 9月第1周国内搜索类网站频道:百度覆盖数创新高

    根据国际统计机构Alexa公布的最新数据显示,9月第1周(2013-09-02至2013-09-08),国内搜索类网站/频道排行榜中,百度以130300的周均用户覆盖数居于榜首,排行第二的是覆盖数为2 ...

  8. java 类数组_Java常用类-字符串、日期类、算法及数组工具类等

    大家好,乐字节的小乐又和大家见面了.这次要给大家讲述的是Java常用类. 主要有以下知识点: Ø 字符串相关类(String .StringBuffer.StringBuilder) Ø 算法及数组工 ...

  9. 第二周 Linux文件管理类命令及bash基本特性

    第二周 Linux文件管理类命令及bash基本特性 摘要 1.描述Linux上的文件管理类命令并详解. 2.描述Bash的工作特性. 3.描述文件的元数据信息详解. 4.描述命令别名的使用. 5.详解 ...

最新文章

  1. linux 源码目录结构 文件系统目录结构
  2. 【Android 应用开发】Paint 图形组合 Xfermod 之 合成模式表示方法 ( Xfermod 使用步骤 | 透明度 颜色值 公式表示方法 | 老版本表示方法 | 合成区域分块 )
  3. 【CSDN】Markdown 如何画分界线
  4. 11寸笔记本电脑推荐_3000-20000元高性价比笔记本电脑推荐 含CPU天梯图、显卡天梯图 2020年11月更新...
  5. 【iOS-Cocos2d游戏开发之六】对触屏事件追加讲解,解决无法触发ccTouchMoved事件[重要!]...
  6. PSD分层素材模板,快速设计美妆类海报
  7. Fixchart图表组件——仪表盘,纳尼?
  8. (转)Scala中的Some和Option
  9. NNIE-lite 为算法工程师而生
  10. 使用Blocs For Mac发布网站的方法
  11. .NETReflector的破解
  12. IP地址、子网掩码与划分方法
  13. 浅谈人脸识别在公共安全领域的应用
  14. 多种方式带你玩转 javascript 实现关闭浏览器页签
  15. DICOM协议学习笔记(二)
  16. 电大计算机画图程序属性,电大计算机绘图(本)复习大全.doc
  17. CSS3-数据可视化
  18. Orin平台GMSL camera CHANSEL_NOMATCH问题分析
  19. 瞧,他的代码,他的内裤
  20. Android缓冲进度条或加载进度条

热门文章

  1. 磨刀霍霍向STL::distance
  2. spss数据分析--信度效度分析
  3. Echarts类似航班选座如何做一个实时监测设备状态的案例
  4. 【模板】批量下载视频到指定文件脚本
  5. Jenkins的corn表达式
  6. 网页设计中的全色系颜色表
  7. 54岁 Switch 最强破解团队成员提前释放,仍要还任天堂 1450 万美元 !
  8. linux reiserfs文件系统损坏后的数据恢复过程记录
  9. 区块链/以太坊/读书笔记/精通以太坊思维导图
  10. 重逢1小时!为与逝去女友幽灵一起开车,痴情男子玩到赛车游戏崩溃