机器学习算法的另一个分支-贝叶斯算法原理(贝叶斯要解决什么问题)

目录

一、贝叶斯简介

二、贝叶斯要解决的问题

三、例子(公式推导)

四、实例

        1. 拼写纠正实例    

        2. 垃圾邮件过滤实例


一、贝叶斯简介

        1. 贝叶斯:英国数学家。1702年出生于伦敦,做过神甫。贝叶斯在数学方面主要研究概率论.对于统计决策函数、统计推断、统计的估算等做出了贡献。

        2. 贝叶斯方法源于他生前为解决一个“逆概”问题写的一篇文章

        3. 生不逢时,死后他的作品才被世人认可。

二、贝叶斯要解决的问题

        正向概率:假设袋子里有N个白球,M个黑球,伸手去摸一个出来黑球的概率是多大?白球?

        学过统计学的都知道(正向概率):

p(white \;ball \;)=\frac{N}{N+M}\;\;p(black \;ball \;)=\frac{M}{N+M}

        逆向概率:如果我们事先并不知道袋子里的黑白球比例,而是闭着眼睛摸出一个或好几个球,观察这些取出来的球的颜色之后,我们可以就此对袋子里的黑白球的比例做出什么样的推测。

三、例子(公式推导)

        一个学校男生有60%,女生有40%,男生总是穿长裤,女生则一半穿长裤,一半穿长裙。

        正向概率:随机挑选一个学生,他(她)穿长裤的概率和穿长裙的概率是多大?

        逆向概率:迎面走来一条长裤,看不到其他地方,无法确定性别,那么推断出他(她)的概率是多大呢??

        解:假设学校里有U个学生

                穿长裤的(男生):

                        U*p(Boy)*p(Pants|Boy)

                其中:p(Boy)是男生的概率=60%,p(Pants|Boy)是条件概率=100%,所有男生穿长裤。

                穿长裤的女生:

                        U*p(Girl)*p(Pants|Girl)

                求解:穿长裤的人里面有多少男(女)生?

                穿长裤的总数:

                        U*p(Boy)*p(Pants|Boy)+U*p(Girl)*p(Pants|Girl)

               p(Pants|Girl)=U*p(Girl)*p(Pants|Girl)/穿长裤的总数

                p(Girl|Paints)=p(Pants|Girl)=U*p(Girl)*p(Pants|Girl)/U*p(Boy)*p(Pants|Boy)+U*p(Girl)*p(Pants|Girl)

                化简:把U约掉,分母其实就是P(Pants),分子其实就是P(Pants,Girl) 

                用统计学的话说:令随机选择一个女生的事件为A,概率为p(A)     

                                                令随机选择一个穿长裤的人为事件B,概率为p(B)

                        则:

p(A|B) = \frac{p(A)*p(B|A)}{p(B)}

                            这就是贝叶斯公式。

四、实例

        1. 拼写纠正实例    

                我们看到用户输入一个不在词典的单词,那么输入法根据用户习惯还是会给出正确的几个单词,输入法这里做了一个事情:“猜测这个家伙到底真正想要输入的单词是什么呢?”

        解:P(我们猜测他想输入的单词|他实际输入的单词)

                比如输入了一个  tha 正确的可能是the,than等等

                P1(the|tha)         P2(than|tha)   ......对此排序,显示。

                用户实际输入的单词记为:D(D即为观测数据)

                猜测1:p(h1|D),猜测2:p(h2|D),猜测3:p(h3|D).....

                统一为:p(h|D)

p(h|D)=p(h)*p(D|h)/p(D)   

                对于不同的具体猜测h1,h2,h3...p(D)都是一样的,所以在比较p(h1|D),p(h2|D)....我们可以把这个常数忽略掉。

                即:p(h|D)\propto p(h)*p(D|h)

                对于给定的观测数据,一个猜测是好是坏,取决于“这个猜测本身独立的可能性大小(先验概率,Prior)”和“这个猜测生成我们观测的数据的可能性大小”

               

        结论:传统的机器学习的思想:极大似然函数,参数由数据决定

                    机器学习的另一个分支:贝叶斯公式,关注的先验条件(知识),关注数据对结果的影响。

        对于这个案例来说:p(h)先验概率:the,than就是在用户语料库中,进行词频统计,例如用户采用1000个词,the的概率1%,than的概率:0.1%。

                而p(tha|the)怎么算?这个可以由自己定制规则,the->tha做一次增删改查,than->tha做一次曾删改查,所以概率相同。

                得出p(the|tha)>p(tha|than)

        2. 垃圾邮件过滤实例

                问题:给定一封邮件,判定它是否属于垃圾邮件(类似于手机垃圾短信,系统自动识别放在垃圾短信中)   

                D来表示这封邮件,注意D是由N个单词组成。我们用 h+ 来表示垃圾邮件, h- 表示正常邮件。

        p(h-|D)=p(h-)*p(D|h-)/p(D)

                    p(h+|D)=p(h+)*p(D|h+)/p(D)           

        先验概率:p(h+),p(h-)这两个先验概率都是很好得出来的,只需要计算一个邮件库的垃圾邮件和正常邮件的概率即可。

        D里面含有N个单词d1,d2,d3....,p(D|h+)=p(d1,d2,...,dn|h+),就是说在垃圾邮件中出现根我们目前这封邮件一模一样的概率是多大???

        p(d1,d2,...,dn|h+)扩展为:p(d1|h+)*p(d2|d1,h+)*...*p(dn|d1,d2,...,dn-1,h+) 

          就是说这封邮件和垃圾邮件中的第一单词一样,这封邮件在和垃圾邮件中的第一单词一样的情况下,第二个单词一样的概率....我们发现这样算下去,太麻烦。

        提出朴素贝叶斯的概念:即每个特征之间是相互独立的,互不影响,这是一个强假设。用来化简的,我们想一想,真实的语言文本之间互不影响吗???当然不是,所以这样做并不能提升准确率。

        化简为:p(d1|h+)*p(d2|h+)*...*p(dn|h+)

        对于p(d1|h+)*p(d2|h+)*...*p(dn|h+)还采用在垃圾邮件中的词频统计方法即可。

       

                   

                

                

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值