贝叶斯分类器
一、贝叶斯简介:
贝叶斯分类算法是统计学的一种分类方法,它是一类利用概率统计知识进行分类的算法。在许多场合,朴素贝叶斯(Naïve Bayes,NB)分类算法可以与决策树和神经网络分类算法相媲美,该算法能运用到大型数据库中,而且方法简单、分类准确率高、速度快。
贝叶斯要解决的问题:
正向概率:假设袋子里面有N个白球,M个黑球,你伸手进去摸一把,摸出黑球的概率是多大
逆向概率:如果我们事先并不知道袋子里面黑白球的比例,而是闭着眼睛摸出一个(或好几个)球,观察这些取出来的球的颜色之后,那么我们可以就此对袋子里面的黑白球的比例作出什么样的推测。
贝叶斯主要就是解决逆向概率的问题。
二、贝叶斯公式:
2.1、定义:
设A1、A2、A3…An 为一个完备事件组,其中P(A)>0, i=1,…,n。则对于任意 事件B,若P(B)>0,则有:
解释:在B事件发生的概率下,Ak 事件发生的概率=Ak 、B事件发生的联合概率/B事件发生的概率。
除式变乘式,贝叶斯公式也即:
2.2、说明:
在贝叶斯公式中 ,我们常把:P(A|B)称为后验概率, P(A)称为先验概率,P(B|A) 称为似然函数。
(似然函数:给定输出x时,关于参数θ的似然函数L(θ|x)(在数值上)等于给定参数θ后变量X的概率:L(θ|x)=P(X=x|θ))
所以贝叶斯公式也说明:后验概率是可以通过先验概率和似然函数计算出来的。
2.3、举例:
一所学校里男生占60%,女生占40%,男生总是穿长裤,女生则一半穿长裤一半穿裙子。问:你在校园里随机遇到一个穿长裤的人,Ta是女生的概率是多少?
解:假设学校里面人的总数是 U 个
穿长裤的(男生):U * P(Boy) * P(Pants|Boy)
P(Boy) 是男生的概率 = 60%
P(Pants|Boy) 是条件概率,即在 Boy 这个条件下穿长裤的概率是多大,这里是 100% ,因为所有男生都穿长裤。
穿长裤的(女生): U * P(Girl) * P(Pants|Girl)
穿长裤总数:U * P(Boy) * P(Pants|Boy) + U * P(Girl) * P(Pants|Girl)
P(Girl|Pants) = U * P(Girl) * P(Pants|Girl)/穿长裤总数
U * P(Girl) * P(Pants|Girl) / [U * P(Boy) * P(Pants|Boy) + U * P(Girl) * P(Pants|Girl)]
容易发现这里校园内人的总数U是无关的,可以消去。
P(Girl|Pants) = P(Girl) * P(Pants|Girl) / [P(Boy) * P(Pants|Boy) + P(Girl) * P(Pants|Girl)]
分母其实就是 P(Pants) ,分子其实就是 P(Pants, Girl)
三、朴素贝叶斯
简单点说,朴素贝叶斯就是在贝叶斯的基础上加多一个特征条件相互独立的假设。
在分类问题中,我们常常需要根据新样本具有的属性将其分入到某个类别中。当一个样本X具有多条属性时,把它的众多属性看做是一个向量,即样本 X=(x1,x2,…xn)。
因为他们相互独立,因此概率为:
3.2、举例:有下面这个相亲数据表:
问:当有一个具有(矮、富、帅)的样本出现,是见还是不见?
3.3、拉普拉斯修正:
如果数据集变成如下,还是(矮、富、帅)的样本出现,是见还是不见?
四、高斯贝叶斯算法:
上面的例子都是离散化数据,而如果遇到下面连续数值怎么处理呢?
方法一:分箱法:尽量保持样本数据的平衡
将连续数据分段形成离散数据的预处理方法。以170分出高矮、20K分出富穷、60分出帅丑,得到离散数据如下:
出现问题:按照上面的分箱法,170与190都被分作“高”,显然差距有点大,有没有什么方法能更好的保持原有数据的特征,又能表达概率的呢。
方法二:借助于高斯分布:(高斯分布也是正态分布)
求:(170,30k,70)是见还是不见?
分析:是求max{P(见|[170,30k,70]), P(不见|[170,30k,70])}
解:P(见|[170,30k,70]):
P(见|[170,30k,70])=[(P(170|见)P(30K|见) P(70|见))P(见)]/[P(170) P(30k)* P(70)]
以特征1为例:
若“身高”的均值为180,标准差为8.24,则P(170|见)的概率为:
剩余部分就是和上面的一样了。