1. K-Means原理解析

2. K-Means的优化

3. sklearn的K-Means的使用

4. K-Means和K-Means++实现

1. 前言

我们在一开始的时候应该就说过,机器学习按照有无标签可以分为“监督学习”和“非监督学习”。

监督学习里面的代表算法就是:SVM、逻辑回归、决策树、各种集成算法等等。

非监督学习主要的任务就是通过一定的规则,把相似的数据聚集到一起,简称聚类。我们今天讲的K-Means算法是在非监督学习比较容易理解的一个算法,也是聚类算法中最著名的算法。

2. K-Means原理

K-Means是典型的聚类算法,K-Means算法中的k表示的是聚类为k个簇,means代表取每一个聚类中数据值的均值作为该簇的中心,或者称为质心,即用每一个的类的质心对该簇进行描述。

2.1 K-Means步骤

  1. 创建k个点作为起始质心。
  2. 计算每一个数据点到k个质心的距离。把这个点归到距离最近的哪个质心。
  3. 根据每个质心所聚集的点,重新更新质心的位置。
  4. 重复2,3,直到前后两次质心的位置的变化小于一个阈值。

整个变化的过程如果用图呈现出来会形象很多,下面的图就是k=2的K-Means的过程:

2.2 K值的确定

K-Means算法一般都只有一个超参数,就是K。那我们拿到一个数据后,要吧数据分成几类呢?我们就来讨论下这个问题。

  1. 首先一个具体的问题肯定有它的具体的业务场景,K值需要根据业务场景来定义。
  2. 如果业务场景无法确定K值,我们也有技术手段来找一个合适的K。这个方法就是手肘法。

2.3 手肘法

K-Means算法中每一步都可以计算出loss值又称为SSE。loss值的计算方式就是每个聚类的点到它们质心的距离的平方。

\[
SSE = \sum\limits_{i=1}^k\sum\limits_{x \in C_i} |x-\mu_i|^2
\]

指定一个Max值,即可能的最大类簇数。然后将类簇数K从1开始递增,一直到Max,计算出Max个SSE。根据数据的潜在模式,当设定的类簇数不断逼近真实类簇数时,SSE呈现快速下降态势,而当设定类簇数超过真实类簇数时,SSE也会继续下降,当下降会迅速趋于缓慢。通过画出K-SSE曲线,找出下降途中的拐点,即可较好的确定K值。

这样手肘图的拐点应该是k=4的时候,所以我们可以定k=4的时候聚类效果比较好。

3. K-Means与KNN

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

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

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

4. 总结

K-Means的原理是很简单,但是我们仔细想想我们处理K-Means的思想好想和别的方法不太一样。我们是先去猜想我们想要的结果,然后根据这个猜想去优化损失函数,再重新调整我们的猜想,一直重复这两个过程。

其实这个猜想就是我们要求出的隐藏变量,优化损失函数的过程,就是最大化释然函数的过程。K-Means的算法就是一个EM算法的过程。

1. K-Means原理解析的更多相关文章

  1. 【算法】(查找你附近的人) GeoHash核心原理解析及代码实现

    本文地址 原文地址 分享提纲: 0. 引子 1. 感性认识GeoHash 2. GeoHash算法的步骤 3. GeoHash Base32编码长度与精度 4. GeoHash算法 5. 使用注意点( ...

  2. Skinned Mesh原理解析和一个最简单的实现示例

    Skinned Mesh 原理解析和一个最简单的实现示例   作者:n5 Email: happyfirecn##yahoo.com.cn Blog: http://blog.csdn.net/n5 ...

  3. (转)HashMap深入原理解析

    [HashMap]深入原理解析 分类: 数据结构 自考 equals与“==”(可以参考自己的另一篇博文) 1,基本数据类型(byte,short,char,int,long,float,double ...

  4. 2. Attention Is All You Need(Transformer)算法原理解析

    1. 语言模型 2. Attention Is All You Need(Transformer)算法原理解析 3. ELMo算法原理解析 4. OpenAI GPT算法原理解析 5. BERT算法原 ...

  5. 3. ELMo算法原理解析

    1. 语言模型 2. Attention Is All You Need(Transformer)算法原理解析 3. ELMo算法原理解析 4. OpenAI GPT算法原理解析 5. BERT算法原 ...

  6. 【转】C# URL短地址压缩算法及短网址原理解析

    这篇文章主要介绍了C# URL短地址压缩算法及短网址原理解析,本文重点给出了算法代码,需要的朋友可以参考下 短网址应用已经在全国各大微博上开始流行了起来.例如QQ微博的url.cn,新郎的sinaur ...

  7. 基于OpenCV进行图像拼接原理解析和编码实现(提纲 代码和具体内容在课件中)

    一.背景 1.1概念定义 我们这里想要实现的图像拼接,既不是如题图1和2这样的"图片艺术拼接",也不是如图3这样的"显示拼接",而是实现类似"BaiD ...

  8. ThreadLocal系列(一)-ThreadLocal的使用及原理解析

    ThreadLocal系列之ThreadLocal(源码基于java8) 项目中我们如果想要某个对象在程序运行中的任意位置获取到,就需要借助ThreadLocal来实现,这个对象称作线程的本地变量,下 ...

  9. (转)Apache和Nginx运行原理解析

    Apache和Nginx运行原理解析 原文:https://www.server110.com/nginx/201402/6543.html Web服务器 Web服务器也称为WWW(WORLD WID ...

随机推荐

  1. Fastjson是一个Java语言编写的高性能功能完善的JSON库。

    简介 Fastjson是一个Java语言编写的高性能功能完善的JSON库. 高性能 fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson. ...

  2. Android Notification 的声音和震动

    我们在Android系统发送一条Notification的时候,经常需要通过震动或声音来提醒用户.如何为Notification设置声音和震动了.大致思路有: - AndroidNotificatio ...

  3. SharePoint下在Feature中动态Register/Remove HttpModule

    在SharePoint开发时,你会遇到这样一个问题,Global.asax去哪儿?怎样添加一个Global.asax?怎样在Application_Start这个事件处理程序里设置初始化?似乎在Vis ...

  4. CentOS安装OpenResty(Nginx+Lua)开发环境

    一.简介 OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库.第三方模块以及大多数的依赖项.用于方便地搭建能够处理超高并发.扩展性极高 ...

  5. java时区转化相关工具方法

    import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java. ...

  6. 转 部署Zipkin分布式性能追踪日志系统的操作记录

    2017年02月27日 11:01:29 https://blog.csdn.net/konglongaa/article/details/58016398 阅读数:7631 Zipkin是Twitt ...

  7. JavaScript语言精粹--replace()与正则

    今天有人问我repalce(),他那个题目很有意思.我也不会做,于是我就去查,结果发现就是最基础的知识的延伸. 所以啊最基础的知识才是很重要的,千万不能忽略,抓起JS就写代码完全不知到所以然,只知道写 ...

  8. Ubuntu下设置开机后自动运行命令(转)

    从道理上来讲,Ubuntu开机应该是能够设置执行一些脚本的,事实上确实如此,网上给出了很多解决的方案,基本上是分为两种, 第一种是编辑/etc/下的rc.local脚本, 然后把对应的需要执行的脚本写 ...

  9. 安装CDH5时出错 5.68.168.192.in-addr.arpa domain name pointer bogon.

    这个是因为使用的DNS是联通的server,联通会将所有保留的网络地址RFC1918( http://tools.ietf.org/html/rfc1918)都指向"bogon" ...

  10. win7重命名文件时 提示 “指定的设备名无效”的解决办法

    同事从mac上传一个文件夹到win7上,但是少了一张图片con.jpg.查了半天发现将备份文件改名为con.jpg时提示 “指定的设备名无效”. 谷歌了下,发现了问题所在.坑爹的win7. 从不同的系 ...