机器学习: K-means 聚类
今天介绍机器学习里常见的一种无监督聚类算法,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,那么我们可以定义如下的目标函数:
这个目标函数就是要求 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 的距离,选择距离最近的一个类即可:
而求 μk" role="presentation" style="position: relative;">μkμk 的时候,我们可以 让 rnk" role="presentation" style="position: relative;">rnkrnk 固定不动, 对目标函数 J" role="presentation" style="position: relative;">JJ 求导,
从而我们可以求得 μk" role="presentation" style="position: relative;">μkμk :
通过这样的反复迭代,直到所有的 rnk,μk" role="presentation" style="position: relative;">rnk,μkrnk,μk 都不再变化。
机器学习: K-means 聚类的更多相关文章
- 吴裕雄 python 机器学习——K均值聚类KMeans模型
import numpy as np import matplotlib.pyplot as plt from sklearn import cluster from sklearn.metrics ...
- 机器学习算法与Python实践之(五)k均值聚类(k-means)
机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...
- 机器学习算法与Python实践之(六)二分k均值聚类
http://blog.csdn.net/zouxy09/article/details/17590137 机器学习算法与Python实践之(六)二分k均值聚类 zouxy09@qq.com http ...
- 机器学习实战5:k-means聚类:二分k均值聚类+地理位置聚簇实例
k-均值聚类是非监督学习的一种,输入必须指定聚簇中心个数k.k均值是基于相似度的聚类,为没有标签的一簇实例分为一类. 一 经典的k-均值聚类 思路: 1 随机创建k个质心(k必须指定,二维的很容易确定 ...
- 机器学习之路:python k均值聚类 KMeans 手写数字
python3 学习使用api 使用了网上的数据集,我把他下载到了本地 可以到我的git中下载数据集: https://github.com/linyi0604/MachineLearning 代码: ...
- 机器学习之K均值聚类
聚类的核心概念是相似度或距离,有很多相似度或距离的方法,比如欧式距离.马氏距离.相关系数.余弦定理.层次聚类和K均值聚类等 1. K均值聚类思想 K均值聚类的基本思想是,通过迭代的方法寻找K个 ...
- 100天搞定机器学习|day44 k均值聚类数学推导与python实现
[如何正确使用「K均值聚类」? 1.k均值聚类模型 给定样本,每个样本都是m为特征向量,模型目标是将n个样本分到k个不停的类或簇中,每个样本到其所属类的中心的距离最小,每个样本只能属于一个类.用C表示 ...
- 机器学习实战---K均值聚类算法
一:一般K均值聚类算法实现 (一)导入数据 import numpy as np import matplotlib.pyplot as plt def loadDataSet(filename): ...
- 机器学习六--K-means聚类算法
机器学习六--K-means聚类算法 想想常见的分类算法有决策树.Logistic回归.SVM.贝叶斯等.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别 ...
- 机器学习理论与实战(十)K均值聚类和二分K均值聚类
接下来就要说下无监督机器学习方法,所谓无监督机器学习前面也说过,就是没有标签的情况,对样本数据进行聚类分析.关联性分析等.主要包括K均值聚类(K-means clustering)和关联分析,这两大类 ...
随机推荐
- 1004. Max Consecutive Ones III最大连续1的个数 III
网址:https://leetcode.com/problems/max-consecutive-ones-iii/ 参考:https://leetcode.com/problems/max-cons ...
- lucene 根据 id 获取索引内容(C# / .NET)
封装代码如下: public MakerArtiImodel GetIndexModelById(int id) { string indexPath = StrHelper.rootPath + & ...
- GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名 zhuan
1.gcc包含的c/c++编译器gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,(没有看太明白前面这半句是什么意思:))一般c程序就用gcc编译,c++程序就用g++编译 ...
- Java Web(十) 分页功能
分页 分页的使用非常普遍,现在一步步的把分页功能实现出来,先看看已经写好的效果: 该页面的所有数据都存放在一个javaBean对象(PageBean)里,每次访问该页面时,Serlvet就会把page ...
- Win10系列:C#应用控件基础3
CheckBox控件 在应用程序的开发过程中开发者经常使用一组CheckBox控件来显示多个复选框,让用户从中选择一个或多个.当用户勾选复选框后,被选中的复选框会被标记为勾选状态,再次点击此复选框可取 ...
- java string字符拼接符"+"的研究
程序: public class Test { public static void main(String args[]) { String s1 = "abc"; String ...
- ppt点击文字出现图片,再次点击消失
实现效果:在PPT一个页面的任意位置,单击左键,出现图片:在图片上,单击左键,图片消失 实现思路:给图片做两个动画,一个进入,文字作触发器,另一个退出,图片本身为触发器. 实现方法: 1.选中图片…… ...
- C语言转义字符'\'
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- 图的邻接矩阵存储实现,C++描述
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- log4net 2.0.8 不支持core 数据库记录日志
经过反编译log4net 标准库的代码,原本有的数据库链接AdoNetAppender 在core里面引用的,没有掉了. 可能新版本会有.