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

上一周我们给大家讲了四篇机器学习的扫盲篇,把机器学习需要的一些常识以及需要的计算机环境理了一遍,这一周我们的系列名称是【算法周】!!毕竟算法是机器学习的灵魂嘛~~

今天我们给大家介绍算法的Chaper1——K-means~ 由于篇幅较长本次介绍分为上下两篇

K-Means算法是无监督的聚类算法,它实现起来比较简单,聚类效果也不错,因此应用很广泛。K-Means算法有大量的变体,本文就从最传统的K-Means算法讲起,在其基础上讲述K-Means的优化变体方法。包括初始化优化K-Means++, 距离计算优化elkan K-Means算法和大数据情况下的优化Mini Batch K-Means算法。
 1.K-Means原理初探

K-Means算法的思想很简单,对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。

如果用数据表达式表示,假设簇划分为(C1,C2,...Ck),则我们的目标是最小化平方误差E

其中μi是簇Ci的均值向量,有时也称为质心,表达式为:

如果我们想直接求上式的最小值并不容易,这是一个NP难的问题,因此只能采用启发式的迭代方法。K-Means采用的启发式方式很简单,用下面一组图就可以形象的描述。

上图a表达了初始的数据集,假设k=2。

在图b中,我们随机选择了两个k类所对应的类别质心,即图中的红色质心和蓝色质心,然后分别求样本中所有点到这两个质心的距离,并标记每个样本的类别为和该样本距离最小的质心的类别。

如图c所示,经过计算样本和红色质心和蓝色质心的距离,我们得到了所有样本点的第一轮迭代后的类别。此时我们对我们当前标记为红色和蓝色的点分别求其新的质心,如图4所示,新的红色质心和蓝色质心的位置已经发生了变动。图e和图f重复了我们在图c和图d的过程,即将所有点的类别标记为距离最近的质心的类别并求新的质心。最终我们得到的两个类别如图f。

当然在实际K-Mean算法中,我们一般会多次运行图c和图d,才能达到最终的比较优的类别。


2.传统K-Means算法流程

在上一节我们对K-Means的原理做了初步的探讨,这里我们对K-Means的算法做一个总结。

首先我们看看K-Means算法的一些要点。

1)对于K-Means算法,首先要注意的是k值的选择,一般来说,我们会根据对数据的先验经验选择一个合适的k值,如果没有什么先验知识,则可以通过交叉验证选择一个合适的k值。

2)在确定了k的个数后,我们需要选择k个初始化的质心,就像上图b中的随机质心。由于我们是启发式方法,k个初始化的质心的位置选择对最后的聚类结果和运行时间都有很大的影响,因此需要选择合适的k个质心,最好这些质心不能太近。

好了,现在我们来总结下传统的K-Means算法流程。

输入是样本集D={x1,x2,...xm},聚类的簇树k,最大迭代次数N

输出是簇划分C={C1,C2,...Ck} 

1) 从数据集D中随机选择k个样本作为初始的k个质心向量: {μ12,...,μk}

2)对于n=1,2,...,N

a) 将簇划分初始化为Ct=∅     t=1,2...k

b) 对于i=1,2...m,计算样本xixi和各个质心向量μj(j=1,2,...k)的距离:

dij=||xi−μj||,将xi标记最小的为dij所对应的类别λi。此时更新Cλi=Cλi∪{xi}Cλi=Cλi∪{xi}

对于j=1,2,...,k,对Cj中所有的样本点重新计算新的质心:

 e) 如果所有的k个质心向量都没有发生变化,则转到步骤 3)

3) 输出簇划分C={C1,C2,...Ck}

3.K-Means初始化优化K-Means++

在上节我们提到,k个初始化的质心的位置选择对最后的聚类结果和运行时间都有很大的影响,因此需要选择合适的k个质心。如果仅仅是完全随机的选择,有可能导致算法收敛很慢。K-Means++算法就是对K-Means随机初始化质心的方法的优化。

K-Means++的对于初始化质心的优化策略也很简单,如下:

a)  从输入的数据点集合中随机选择一个点作为第一个聚类中心μ1μ1

b) 对于数据集中的每一个点xixi,计算它与已选择的聚类中心中最近聚类中心的距离

c) 选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)D(x)较大的点,被选取作为聚类中心的概率较大

d) 重复b和c直到选择出k个聚类质心

e) 利用这k个质心来作为初始化质心去运行标准的K-Means算法

未完待续。。。欢迎关注下期内容

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

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

    欢迎关注哈希大数据微信公众号<哈希大数据> 接上篇 4.K-Means距离计算优化elkan K-Means 在传统的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. OpenMP 编程实例(蒙特卡罗算法)
  2. setInterval setTimeout clearInterval
  3. 按月拆分数据库表--oracle
  4. C# 值类型 引用类型 作为参数传递区别
  5. QT次线程连接数据库
  6. 【IDEA】Command line is too long. Shorten command ... or also for Application default configuration
  7. osx jni 开发 1
  8. ASP.NET WEB介绍
  9. 语法长难句-----状语与状语从句
  10. 字符型变量ch的值为英文字母 的c语言表达式
  11. 2019版颱風24、48小時警戒綫(附帶2010版)
  12. 使用 python 给 PDF 添加目录书签
  13. Vscode 快速打开setting.json
  14. 通过PC控制、操作andriod 手机-androidscreencast
  15. 维护计算机网络教室的常见问题及解决方案
  16. [当人工智能遇上安全] 5.基于机器学习算法的主机恶意代码识别研究
  17. EDID是什么,跟显示器有什么关系?
  18. maven--入门使用及环境变量配置
  19. 电脑wifi可以登录qq,但是不可以上网,怎么办?
  20. 图形处理之 OpenGL

热门文章

  1. 论文笔记008:[CVPR2016]Deep Relative Distance Learning: Tell the Difference Between Similar Vehicles
  2. 手把手教你搭建在线教育平台
  3. Tomcat启动一直停在 Stating Apache Tomcat @localhost 100%
  4. jsp中插入图片无法显示
  5. Docker是什么?(转载)
  6. 大学毕业的工作第一天6月3号
  7. 生物期刊最新即时IF发布!
  8. 洛谷p2006赵神牛的游戏 入门 模拟
  9. 数据库系统概念 Relational Model
  10. [IE编程] 多页面基于IE内核浏览器的代码示例