Andrew Ng 机器学习笔记 12 :聚类

原创 2018年04月15日 17:10:56

在监督式学习中,我们针对一组标记的训练数据提出一个适当的假设。相比之下,在无监督学习案例中,我们面对的是一组无标记的训练数据,使用算法分析出数据的结构。

K均值 (K-means)算法

在聚类问题中,我们有未加标签的数据。我们希望有一个算法能够自动的把这些数据分成有紧密关系的子集,或是簇。K均值 (K-means)算法是现在最为广泛使用的聚类方法。

K均值是一个迭代方法,它要做两件事情:

  1. 簇分配。
  2. 移动聚类中心。

K-Means 第1步:簇分配:

  • 遍历所有的样本。
  • 计算每一个点最接近的中心,将其分配到最近的聚类中心。

K-Means 第2步:移动聚类中心:

  • 找出属于每个聚类中心的点,计算出它们的均值位置。
  • 把聚类中心移动到当前的均值位置。

K-Means 第3步:重复执行上面两步

  • 一直迭代下去,聚类中心和样本簇不再改变时,K均值方法就收敛了。

K-Means的规范化描述

K均值算法接受两个输入:

  • 参数K:从数据中聚类出的簇的个数。
  • 训练集:x(1),x(2),,x(m)

因为这是非监督学习,我们的数据集中不需要y,同时在非监督学习的 K均值算法里,我们约定x(i)是一个n维向量,这就是“训练样本是n维而不是n+1维”的原因(按照惯例,排除x0=1这一项)。

K均值算法:

第一步:随机初始化K个聚类中心,记作μ1,μ2一直到μk

第二步:

K均值内部循环执行以下步骤:

  • 簇分配

    首先对于每个训练样本,我们用变量c(i)表示K个聚类中心中最接近x(i)的那个中心的下标(具体的类别),这就是簇分配。

    大写的K表示所有聚类中心的个数,小写的k则表示某个聚类中心的下标。

    我们希望的是:在所有K个中心中,找到一个k使得xiμk的距离是x(i)到所有的聚类中心的距离中最小的那个,这就是计算c(i)的方法。

    这里还有另外的表示c(i)的方法:我用范数的形式||x(i)μk||来表示,这是第i个训练样本到聚类中心μk的距离。

    接下来我要做的是找出k的值,让这个式子||x(i)μk||最小,然后将 c(i) 赋值为k

    出于惯例,人们更喜欢用距离的平方||x(i)μk||2来表示x(i)距聚类中心μk的距离。

  • 移动聚类中心

    对于每个聚类中心:k从1循环到K,将μk赋值为这个簇的均值。

异常情况

如果存在一个没有点分配给它的聚类中心,通常在这种情况下,我们就直接移除那个聚类中心,并重新随机找一个聚类中心。(但是直接移除那个中心,是更为常见的方法。不过在实际过程中,这个问题不会经常出现。)

K均值的代价函数

以下便是K均值算法需要最小化的代价函数:

J(c(1),,c(m),μ1,,μK)=1mi=1m||x(i)μc(i)||2

K均值的目标就是要最小化代价函数:

minc(1),,c(m),μ1,,μKJ(c(1),,c(m),μ1,,μK)

在K均值算法中,有时候也叫做失真代价函数(distortion cost function)。

随机初始化

  • 确保 K<m

    当运行K均值方法时,你需要有一个聚类中心数值KK值要比训练样本的数量m小,即K<m

  • 随机初始化

    随机挑选K个训练样本,然后我要做的是设定μ1,,μk让它们等于这K个样本。

运行K均值方法,你可能会得到这样的聚类结果:

但是如果你运气特别不好,随机初始化K均值方法也可能会卡在不同的局部最优上面:

我们能做的是:初始化K均值很多次,并运行K均值方法很多次,通过多次尝试来保证我们最终能得到一个足够好的结果。一个尽可能局部或全局最优的结果。

  • 如果你运行K均值方法时,所用的聚类数相当小。比如聚类数是从2~10之间的任何数的话,做多次的随机初始化,通常能够保证你能有一个较好的局部最优解,保证你能找到更好的聚类数据。
  • 但是如果K非常大的话,比如K比10大很多,就不太可能会有太大的影响。事实上,这种情况下有可能你的第一次随机初始化就会给你相当好的结果。

肘部法则 (Elbow Method)

对于肘部法则,我们所需要做的是改变K的值(也就是聚类类别的总数)。

我们用K值为1~N 来运行K-均值聚类算法。这就意味着所有的数据会分到1~N个类里。然后分别计算他们的代价函数(或者说计算畸变)J

在这里,你会发现这样一种模式:K从1变化到2、再从2到3时,畸变值迅速下降;然后在3的时候,到达一个肘点。此后畸变值就下降得非常慢。这样看起来,也许使用3个类是聚类数目的正确选择。这是因为那个点是曲线的肘点。就是说畸变值快速地下降,直到K=3这个点,在这之后就下降得非常慢,那么我们就选K=3。

简单小结一下肘部法则:它是一个值得尝试的方法,但事实证明肘部法则并不那么常用,其中一个原因是如果你把这种方法用到一个聚类问题上,事实上你最后得到的曲线通常看起来是更加模棱两可的。

Coursera上的Andrew Ng《机器学习》学习笔记Week1

Coursera上的Andrew Ng《机器学习》学习笔记Week1 作者:雨水/家辉,日期:2017-01-17,CSDN博客:http://blog.csdn.net/gobitan 注:本课...
  • gobitan
  • gobitan
  • 2017-01-17 17:27:53
  • 992

Andrew NG 机器学习 笔记-week5-神经网络的学习(Neural Networks:Learning)

一、代价函数(Cost Function)首先引入一些便于稍后讨论的新标记方法:假设神经网络的训练样本有 m 个,每个包含一组输入 x 和一组输出信号 y L =神经网络总层数 sls_l = ll...
  • zxm1306192988
  • zxm1306192988
  • 2017-09-30 09:18:15
  • 431

Andrew Ng机器学习笔记(一)

第一篇博客,很有纪念意义,献给让人激动人心的ML,也感谢吴恩达老师的精彩讲解。1.机器学习的定义 假设用P来评估计算机程序在某任务类T上的性能,若一个程序通过利用经验E在T中任务上获得了性能改善,...
  • YUNFEIYAHG
  • YUNFEIYAHG
  • 2017-09-02 12:31:12
  • 696

监督学习之生成学习算法——Andrew Ng机器学习笔记(四)

内容提要这篇博客的主要讲生成学习算法,主要包括两个算法: - 高斯判别分析(Gaussian Discriminant Analysis) - 朴素贝叶斯(Naive Bayes)now let’...
  • A_cainiao_A
  • A_cainiao_A
  • 2015-12-25 22:35:21
  • 2940

Andrew Ng 机器学习笔记(二)

监督学习的应用:梯度下降 梯度下降算法思想: 先选取一个初始点,他可能是0向量,也可能是个随机点。在这里选择图中这个+点吧。 然后请想象一下:如果把这个三位图当成一个小山公园,而你整站在这个+...
  • chixujohnny
  • chixujohnny
  • 2016-03-09 16:27:14
  • 744

Andrew Ng机器学习入门学习笔记(四)之神经网络(一)

一.神经网络的优势对于复杂的非线性分类问题,当特征变量个数nn很大时,用逻辑回归时S型函数g(θTx)中的θTxS型函数g(\theta^Tx)中的\theta^Tx如果用二次多项式表示,则二次项数目...
  • SCUT_Arucee
  • SCUT_Arucee
  • 2015-12-02 09:58:04
  • 2145

Andrew Ng机器学习笔记1

吴恩达机器学习课程的学习笔记~
  • panglinzhuo
  • panglinzhuo
  • 2016-04-26 16:15:47
  • 1538

Andrew Ng机器学习课程笔记--week3

Logistic Regression一、内容概要 Classification and Representation Classification Hypothesis Representatio...
  • marsggbo
  • marsggbo
  • 2017-08-03 11:55:45
  • 539

Andrew Ng机器学习课程笔记--汇总

转载请附上原链接。 必须抱怨一下CSDN。。太垃圾了,连文章标题都不能修改。Andrew Ng机器学习课程笔记–week1(机器学习简介&线性回归模型) Andrew Ng机器学习课程笔记–we...
  • marsggbo
  • marsggbo
  • 2017-08-16 14:01:15
  • 779
收藏助手
不良信息举报
您举报文章:Andrew Ng 机器学习笔记 12 :聚类
举报原因:
原因补充:

(最多只允许输入30个字)