通过学习p(y|x)来分类需要估计的参数个数

通过学习p(y|x)来进行分类,计算在新的x的条件下的p(y|x),然后判断x应该属于哪个类。

之前一直想不通要计算p(y|x)需要估计的参数个数,其实是这样的:

这里这假设x=(x1, x2, ..., xn),xi与y都是二元随机变量,就是xi与y都只取0和1中的一个值。例如x=(x1, x2),要估算的参数是:

p(y=1|x1=0, x2=0),p(y=1|x1=0, x2=1), p(y=1|x1=1, x2=0), p(y=1|x1=1, x2=1),总共需要算这4个,因为p(y=0|x) = 1- p(y=1|x),例如p(y=1|x1=0, x2=0)=p,则p(y=0|x1=0, x2=0) = 1-p,所以总共需要估计2^n个参数,那么对于一个新的x,就可以判定它是属于哪个类了,但是n很大的话要估计的参数就太多了,比如文档分类中n通常很大,要是n=50000的话,要估计的参数为2^50000,很恐怖。(这样估计:p(y=1|x1=1, x2=0) = p(y=1, x1=1, x2=0) / (p(y=1, x1=1, x2=0) +  p(y=0, x1=1, x2=0)))

于是想到贝叶斯公式:

p(y|x)=p(x|y)p(y)/p(x)

这时要对于p(x|y=0)需要计算的参数是2^n-1,因为最后一个可以由1-前面的和得到,由于y能取两种值,所以对于p(x|y)要算的参数是2(2^n-1)个,对于p(y),要计算1个,另一个可以由1-已经算出的那个得到,总共要计算的参数个数是2(2^n-1) + 1个,还是很恐怖。(p(x)通常不用计算)。

于是朴素贝叶斯中那个条件独立(Conditional Independence)就出来,x与y条件独立,如果p(x|y, z) = p(x|z),也就是说在给出z的条件下,x的概率与有没有y是无关的。所以:

p(x1, x2, x3|y) = p(x1|y)p(x2, x3|y, x1)=p(x1|y)p(x2|y, x1)p(x3|y, x1, x2) = p(x1|y)p(x2|y)p(x3|y),于是p(x1, x2, ..., xn|y) = p(x1|y) p(x2|y)...p(xn|y)

于是要估计的参数变为了2n+1。(可能会有点搞不懂为啥不是2(n-1)+1举些例子看看就好了)

就这样大大减少了需要估计的参数。唉,这个问题困扰了好久,哈哈~~


这里举一个具体的例子说明一下在conditional independence下需要估计的参数个数(CMU Machine Learning的HomeWork)。

类标y签能取{T, F},x=<x1, x2, ..., xn>,x1是boolean的,{x2, ..., xn}是连续的变量,假设对于每一个连续的变量xi,p(xi|y)服从高斯分布。算出用朴素贝叶斯来对一个新的x进行分类需要估计的参数的个数。

朴素贝叶斯需要算的是p(y)和p(xi|y)(i=1, 2, ..., n),要计算p(y)就需要算一个,因为p(y=T) = 1-p(y=F);要算p(x1|y),需要计算p(x1=T|y=T)与p(x1=T|y=F)两个,因为p(x1=F|y=T)=1-p(x1=T|y=T), p(x1=F|y=F) = 1-p(x1=T|y=F);要计算p(xi|y)就要算出xi|y在y=T与y=F下得期望E[xi|y=y]与方差E[(xi-E(xi))^2|y=y],这一步需要估计的参数个数为:2*2*(n-1),因为2到n总共n-1个xi。综上,为了给一个新的x做分类,需要计算的参数个数是:1+2+2*2*(n-1) = 4n-1个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值