Machine Learning(Andrew)Week8(上)

来源:互联网 发布:淘宝网大童店铺 编辑:程序博客网 时间:2024/06/06 13:09

Unsupervised learning

 introduction

前面说的都是有监督学习(Supervised learning),是指训练数据每一笔都是成对的(x1,y1),(x2,y2)……就好像我们备考的时候,做习题题目和答案都提供给你。而machine learning中是指提供的数据有贴标签,输出的值贴上了答案。

现在要说的无监督学习(Unsupervised learning)是训练的时候就只给你题目,没给你答案,根据题目看看能学到什么东西。即machine learning的训练数据只有x1,x2……

如果Unsupervised learning用来做分类问题的话,就如同在Andrew的week1中提到的,情形类似于:给你一堆的水果,也没跟你说是什么。你看着这些水果,把它们聚成几类。然后再给你几个水果的时候,你找到它们所属类别。

 

(图片来自网络)

这里出现的问题就是你不知道聚成几类,比如橙子,柠檬,芦柑,橘子,有可能你会归成一类或两类三类。因为没有给你答案,你聚完类之后,要用这个模型去测试新数据。

无监督学习的应用:

(1)市场分类

(2)社交网络分析

(3)天文数据的分析

K-means算法

接下来就介绍一些无监督学习的算法

首先是K-means算法,它允许数据没有贴标签,然后把数据聚成k个不同的类。K-means算法是一个迭代算法,它的思想就是:

 

这是要分类的点,这个例子k=2,即要将这些点分成两类

 

先随机选两个点作为两类的临时中心,如图,选了红色和蓝色的两个点。

 

 

分别算出剩余的每一个点与这两个中心点的距离。把它归为距离最近的中心点那一类。

 

这一轮就进行了一次聚类,把点分为了两堆。接着分别求出两堆点的中心。

 

这个中心有可能不是那堆点中的一个点了,数值上求出了这样的一个值。

 

根据新求出的两类中心,再对所有的点求到两类中心的距离,将其归为距离最近的中心那类

 

这样一轮,将点重新分成了两堆

 

再算出两堆点的中心位置

 

如果中心点变化不大,就说明聚类完成了。

从上面的思路分析来看,k-means算法最重要的两个值就是中心点位置和距离了。

输入:

算法

中心点μk,表示点i和最近中心点的距离。

优化目标

K-means要优化的目标是所有点离它最近的中心点的欧式距离之和。

这个函数也称为畸变函数(distortion function)。K-means的目标是求出J最小的一组中心点μk和最近距离,如果目前的中心点没有使J最小呢?看算法部分,首先会固定每个类的中心点,调整所属的类来使J达到最小;接着,都归好类,调整中心点位置来使J达到最小。

为什么最后J可以求到最小值呢?J是距离的平均,从距离上看,在数据分布上,类似的点靠的比较近。我们求一个点到各个中心点的距离,然后比较它离哪个中心点最近,就是在看它和哪个类最类似。而更新中心点的位置,实际就是求这个类所有点在空间分布的平均位置,而这个类中的点都是环绕在这个中心点四周簇成一团。这两个步骤分别都是在迭代算使J最小的和μk,所以J总是减小的。

初始化

K-means算法在开始的时候,我们要随机选k个点作为中心点。因为畸变函数是非凸函数,所以,不能保证最后的结果能得到全局最优,这意味着k-means对初始化选点很敏感,选的好有可能得到全局最优,否则就只能得到局部最优解。但是,一般很难得到全局最优解。如果你对得到的局部最优解不满意,那可以多做几次k-means,每次尝试不一样的初始点,选其中J最小的和μk做输出。

K的大小

K是我们猜测的分类数,它的大小其实没有严格规定,我们可以根据不同k值得到的最小J来选k。如下图,k=3的时候就差不多得到比较小的J了,可以选k=3。而k=2,J比较大,所以减小k不明智;k=4,J变化不太大了,所以没必要增加k。

实践时选k,够用就好,比如坐T-恤分类,你可以分成s-m-l三类,也可以分成xs-s-m-l-xl五类,看哪种情况能满足更多顾客需求。

 

0 0
原创粉丝点击