今天介绍机器学习里常见的一种无监督聚类算法,K-means。我们先来考虑在一个高维空间的一组数据集,S={x1,x2,...,xN}" role="presentation" style="position: relative;">S={x1,x2,...,xN}S={x1,x2,...,xN}, x∈RD" role="presentation" style="position: relative;">x∈RDx∈RD,假设我们需要把这组数据聚集长 K" role="presentation" style="position: relative;">KK 类,不失一般性,我们可以假设每个聚好的类都有一个中心 μk" role="presentation" style="position: relative;">μkμk,如果聚类完成的话,那么数据集中的每一个点 x" role="presentation" style="position: relative;">xx 会有一个中心 μk" role="presentation" style="position: relative;">μkμk 离这个点的距离最近。可以构造一个变量 rnk={0,1}" role="presentation" style="position: relative;">rnk={0,1}rnk={0,1} 表示变量 x" role="presentation" style="position: relative;">xx 离第 k" role="presentation" style="position: relative;">kk 类最近 rnk=1" role="presentation" style="position: relative;">rnk=1rnk=1,离其他的类更远 rnj=0,j≠k" role="presentation" style="position: relative;">rnj=0,j≠krnj=0,j≠k,那么我们可以定义如下的目标函数:

J=∑n=1N∑k=1Krnk||xn−μk||2" role="presentation">J=∑n=1N∑k=1Krnk||xn−μk||2J=∑n=1N∑k=1Krnk||xn−μk||2

这个目标函数就是要求 rnk,μk" role="presentation" style="position: relative;">rnk,μkrnk,μk,使得目标函数 J" role="presentation" style="position: relative;">JJ 的值最小。

为了解决上面这个问题,因为要同时求 rnk,μk" role="presentation" style="position: relative;">rnk,μkrnk,μk 两个变量,所以我们会采取分步迭代的方法,当我们求 rnk" role="presentation" style="position: relative;">rnkrnk 可以让 μk" role="presentation" style="position: relative;">μkμk 固定不动,当我们求 μk" role="presentation" style="position: relative;">μkμk 的时候,可以让 rnk" role="presentation" style="position: relative;">rnkrnk 固定不动。

很显然,当我们求 rnk" role="presentation" style="position: relative;">rnkrnk,只有比较每一个 xn" role="presentation" style="position: relative;">xnxn 与 μk" role="presentation" style="position: relative;">μkμk 的距离,选择距离最近的一个类即可:

rnk=1if=arg⁡minj||xn−μj||2" role="presentation">rnk=1if=argminj||xn−μj||2rnk=1if=arg⁡minj||xn−μj||2

而求 μk" role="presentation" style="position: relative;">μkμk 的时候,我们可以 让 rnk" role="presentation" style="position: relative;">rnkrnk 固定不动, 对目标函数 J" role="presentation" style="position: relative;">JJ 求导,

2∑n=1Nrnk(xn−μk)=0" role="presentation">2∑n=1Nrnk(xn−μk)=02∑n=1Nrnk(xn−μk)=0

从而我们可以求得 μk" role="presentation" style="position: relative;">μkμk :

μk=∑nrnkxn∑nrnk" role="presentation">μk=∑nrnkxn∑nrnkμk=∑nrnkxn∑nrnk

通过这样的反复迭代,直到所有的 rnk,μk" role="presentation" style="position: relative;">rnk,μkrnk,μk 都不再变化。

机器学习: K-means 聚类的更多相关文章

  1. 吴裕雄 python 机器学习——K均值聚类KMeans模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import cluster from sklearn.metrics ...

  2. 机器学习算法与Python实践之(五)k均值聚类(k-means)

    机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...

  3. 机器学习算法与Python实践之(六)二分k均值聚类

    http://blog.csdn.net/zouxy09/article/details/17590137 机器学习算法与Python实践之(六)二分k均值聚类 zouxy09@qq.com http ...

  4. 机器学习实战5:k-means聚类:二分k均值聚类+地理位置聚簇实例

    k-均值聚类是非监督学习的一种,输入必须指定聚簇中心个数k.k均值是基于相似度的聚类,为没有标签的一簇实例分为一类. 一 经典的k-均值聚类 思路: 1 随机创建k个质心(k必须指定,二维的很容易确定 ...

  5. 机器学习之路:python k均值聚类 KMeans 手写数字

    python3 学习使用api 使用了网上的数据集,我把他下载到了本地 可以到我的git中下载数据集: https://github.com/linyi0604/MachineLearning 代码: ...

  6. 机器学习之K均值聚类

      聚类的核心概念是相似度或距离,有很多相似度或距离的方法,比如欧式距离.马氏距离.相关系数.余弦定理.层次聚类和K均值聚类等 1. K均值聚类思想   K均值聚类的基本思想是,通过迭代的方法寻找K个 ...

  7. 100天搞定机器学习|day44 k均值聚类数学推导与python实现

    [如何正确使用「K均值聚类」? 1.k均值聚类模型 给定样本,每个样本都是m为特征向量,模型目标是将n个样本分到k个不停的类或簇中,每个样本到其所属类的中心的距离最小,每个样本只能属于一个类.用C表示 ...

  8. 机器学习实战---K均值聚类算法

    一:一般K均值聚类算法实现 (一)导入数据 import numpy as np import matplotlib.pyplot as plt def loadDataSet(filename): ...

  9. 机器学习六--K-means聚类算法

    机器学习六--K-means聚类算法 想想常见的分类算法有决策树.Logistic回归.SVM.贝叶斯等.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别 ...

  10. 机器学习理论与实战(十)K均值聚类和二分K均值聚类

    接下来就要说下无监督机器学习方法,所谓无监督机器学习前面也说过,就是没有标签的情况,对样本数据进行聚类分析.关联性分析等.主要包括K均值聚类(K-means clustering)和关联分析,这两大类 ...

随机推荐

  1. 关于ORA-06508 , ORA-04068异常的详细说明

    参考:程序包调用报ORA-06508: PL/SQL: 无法找到正在调用的程序单元 出现这种情况的原因是因为,对于全局变量,每一个session会生成一个本地copy,如果程序重新编译的话,就会因程序 ...

  2. CSS知识点(二)

    七.CSS的继承性和层叠性 继承性 面向对象语言都会存在继承的概念,在面向对象语言中,继承的特点:继承了父类的属性和方法.那么我们现在主要研究css,css就是在设置属性的.不会牵扯到方法的层面. 继 ...

  3. 接口测试--postman简介

    一.什么是接口测试 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑 ...

  4. [luogu P3216] [HNOI2011]数学作业

    [luogu P3216] [HNOI2011]数学作业 题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 N 和 M,要求计算 Concatenate (1 ...

  5. NOIP2012国王游戏(60分题解)

    题目描述 恰逢 H国国庆,国王邀请n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王站在队伍的最前面 ...

  6. 巧用call,appl有 根据对象某一属性求最大值

    查找对象数组中某属性的最大最小值的快捷方法 例如要查找array数组中对象的value属性的最大值 var array=[ { "index_id": 119, "are ...

  7. Mac使用crontab来实现定时任务

    crontab 定时执行 配置文件都在/etc/crontab下,如果没有就创建 语法: crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [ ...

  8. hash与平衡二叉树的区别

    哈希表的定义:哈希表是一种根据关键码去寻找值的数据映射结构,该结构通过把关键码映射的位置去寻找存放值的地方 https://blog.csdn.net/duan19920101/article/det ...

  9. Win10系列:UWP界面布局进阶6

    在Windows 10的"个性化设置"中,用户可以更改计算机在锁屏状态下的背景图片,除此之外,也可以通过Windows应用商店应用程序将喜欢的图片设置为锁屏背景,下面通过一个示例来 ...

  10. Linux系统默默改变了人类世界的生活方式

    你知道操作系统都有些什么吗?Windows啊.这是我在上大学之前的问答,我当时认为只一种叫做Windows的操作系统,可是我错了,当我上大学以后,作为计算机专业的一名学生的时候我第一次接触到了除Win ...