机器人与人工智能爱好者论坛

 找回密码
 立即注册
查看: 18403|回复: 0
打印 上一主题 下一主题

fox同学tensorflow学习分享--斯坦福机器学习5 by fox 20160304

[复制链接]

285

主题

451

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
13755
跳转到指定楼层
楼主
发表于 2016-3-8 13:58:37 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 morinson 于 2016-3-8 14:14 编辑

fox同学tensorflow学习分享--斯坦福机器学习5 by fox 20160304

作者:fox    整理排版:morinson  来源:FGM学习小组



生成学习算法

这个算法首先针对的是y服从{0,1}分布的情况,在训练集合中找到所有y=0或者y=1的数据。然后计算x的概率分布,也就是P(x|y),给定yx的概率分布。

例如给定一组病人数据,他们中有良性肿瘤和恶性肿瘤,这个算法做的是,给定一个新的病人数据时,判断这个病人是更符合良性肿瘤的特征还是更符合恶性肿瘤的特征。

根据贝叶斯概率公式,可以求出P(x)的概率,如下:


下面假设P(x|y)满足高斯分布,在这里为什么假设它满足高斯分布会在后面讲,事实上,这里可以是其他类型的分布。
这里的P(x|y)将是一个多元高斯分布,实际上就是维数更多了,但是他的形状还是钟形的


在多元高斯分布中,均值是一个多维向量,协方差是一个多维矩阵E[(x-u)(x-u)^T]



多元高斯分布的(3维)图像:
这是一个标准多元高斯分布图像:协方差矩阵是单位矩阵


当减小协方差矩阵中的值的时候:

放大:


从上面往下看时,当我们修改协方差矩阵对角元素的值时:


当取负值的时候,会转向另一个方向:



另一个参数:均值,会影响钟形图像的位置:





给出我们的例子用的训练样本的图像:

对于两类数据分别计算高斯分布:

这里画出了高斯分布的图像,一个圆代表y=0x的概率分布,另一个代表y=1x的概率分布


这样通过这两个高斯分布就可以得到一个分类器这个图中的直线


图中绿色的线是同样的训练集合得到的logistic回归得到的线


首先模型p(y)他是一个伯努利随机变量,以Φ为参数

p(x|y=0)建模成为均值为μ0,协方差为∑的高斯分布,p(x|y=1)同理


所以,似然性公式:


这个似然性公式有一个名字:joint likelihood,他是以x为变量建模的
之前的logistic模型是以y为变量建模:

称之为:conditional likelihood

关于参数:Φ,μ0,μ1,∑使得似然性函数L最大化

Φ的极大似然性估计结果是所有y=1的训练集数量除以训练集的总数

μ0的极大似然行估计是所有y=0的训练样本的x求和除以所有y=0的训练样本数量,换句话说,就是得到所有y=0的样本对他们的x求平均
同理可得到μ1:



∑的极大似然性估计老师没写。。。。
得到这些参数以后,当我们得到一个新的x时,我们要预测给定x的情况下,y的值,然后根据贝叶斯公式得到:

由于p(x)是独立于y的所以它的值是不变的:


Argmax(y)的意义是使一个式子得到最大值的y的值
例如
Argmin(y) = 5
Min(y) = 0

如果p(y)是均匀分布的,或者说p(y)取哪种类型的概率都相同,或者说y取什么值p(y)都相同,(p(y=1) = p(y=0)),那么要求y必须是使得P(x|y)最大的那个y

这种情况非常少见。

在下面这个例子中,我们能看到高斯判别法和logistic回归存在有趣的联系
下图中,对于两种样本分别拟合出2条高斯图像。


如果圆圈的样本表示y=1,那么,我们希望在这个坐标上画出p(y=1|x)
首先我们选择一个x(图中的箭头),那么给定xy=1的概率是多少?如下图的公式


依次给出一些x,获得相应的y=1的概率,我们会得到下面这条曲线


这条曲线和sigmoid函数的曲线非常相似。也就是说当我们使用p(x|y)计算概率符合高斯分布的时候,再去计算p(y|x),我们几乎获得了和logistic回归中的sigmod一样的函数。
但是,实际上他们之间存在本质上的区别,高斯判别法获得的曲线无论是位置还是中间陡峭程度,都不同,

下面看一些有趣的事情
当给定yx服从高斯分布时,p(y=1|x)的后验分布函数将是一个logistic函数,但是反过来却并不成立。


另外,如果假设p(x|y)服从泊松分布,同样意味着p(y=1|x)是一个logistic函数


因此,假设x|y服从高斯分布比假设y|x是一个logistic函数是更强的假设。
由于这个特性,由于高斯判别分析做了一个更强的假设,所以当这个假设正确或者接近正确的时候,你显式的做了这个假设,那么这个算法将表现得更好,相对于logistic回归。
这是因为这个算法利用了更多的数据的信息,这个算法知道数据服从高斯分布
如果假设数据服从高斯分布,但是数据实际上服从泊松分布,那么这个算法将不如logistic回归表现的好。
使用生成学习算法的好处在于,不需要过多的训练数据,因为我们做了假设,数据将会服从某种分布。
一般情况下,通过对数据做更强的假设,高斯判别分析为了拟合出一个不错的模型,通常需要更少的数据。
相对来说,logistic回归的假设更少,对模型假设方面更为健壮,但是为了拟合出模型,需要更多地样本。

最后,x|y可以服从指数分布族的任意分布概率,最终都会得到logistic函数。

有两种方式可以得到logistic回归,一种是上一次课的指数分布族方式,一种是上面讲的方式。




朴素贝叶斯算法 naive bayes
我们通过一个例子来学习这个算法,朴素贝叶斯算法在识别垃圾邮件方面被应用最多,所以下面就讲垃圾邮件过滤的例子
首先定义y{0,1}
x可以有很多种定义方法,这里选择x表示一个0,1分布的所有词占一行的向量
也就是说x向量是一个词库,x向量中每一项表示该项对应的词语是否出现在邮件中。



在之前的算法中,我们要计算p(x|y)x是一个n维向量,向量每一项为0,1n可能等于至少5000,也就是说x25000次方个,如果使用多项式剑魔,这样参数需要25000次方减1个,这显然并不是一个好主意


在朴素贝叶斯算法中,我们会对p(x|y)做一个非常强的假设

假设在给定y的时候,xi是条件独立的
条件独立的意义如下图:首先有p(x1,x2,x3.。。。。x5000|y),然后根据链式法则,得到下面的式子,这一步没有任何假设。


接下来,如果使用上面的假设(条件独立),也叫作朴素贝叶斯假设


这个假设使得p(x1|y)=p(x1|y)p(x2|y,x1)=p(x2|y)
也就是说每一项的概率不再和之前的项有关,这样就大大化简了这个式子

这个假设虽然在现实中是错误的,但是这个算法还是能够很好的工作。
下面是参数:

然后求出似然性


然后求出极大似然估计:
这个表示所有垃圾邮件中出现词语j的比例。

这个表示垃圾邮件在所有样本中的比例


这是假设出现了一个新的词语,视频中用的是NIPS,加入NIPS在词典中是第3000个词
那么:

y=1y=0,即在垃圾邮件和非垃圾邮件中的概率都是0,这是因为在之前的训练样本中没有出现过这个词。
所以,再求p(y=1|x)的时候,就会得到一个0


如果仅仅因为没有见过一件事情,就认为这件事不可能发生,这显然不合理
仅此我们要改进这件事。

这里引出了拉普拉斯laplas平滑:老师讲了一个例子,如果一个球队前5场都失利了,那么第6场胜利的概率是多少?


拉普拉斯平滑如下图
如果我们想计算一个伯努利分布的概率p(y=1),即得到y=1概率显然,我们应该用所有y=1的事件数量除以所有y=1y=0的事件数量的和:

拉普拉斯平滑,就是在分子上加1,然后在分母上加y可以取得值得数量,这里就是2,因为这个概率事件是一个伯努利分布,如果是多项式分布,就加n

所以,上面那个球队的例子中,第六场获胜的概率应该为1/7



所以,当一个新的词NIPS出现的时候,根据拉普拉斯平滑,应该这样计算:





斯坦福机器学习5 by fox 20160304.docx (3.24 MB, 下载次数: 0)
我是笨鸟,我先飞!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|Archiver|手机版|小黑屋|陕ICP备15012670号-1    

GMT+8, 2024-5-18 22:27 , Processed in 0.074261 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表