朴素贝叶斯NB

1、分类原理

简单的说就是利用了概率论的两个公式:全概率公式、贝叶斯公式。

假设我们有两个特征X1、X2和一个目标分类Y(0或1)。

已知新的样本特征值,预测其分类。这个可以看作是求条件概率P(y|x=(x1,x2)) = P(x,y) / P(x) = P(y)P(x|y) / [ P(y=0)P(x|y=0) + P(y=1)P(x|y=1)]

我们可以通过极大似然估计出先验概率P(y = 0),P(y = 1),P(x|y=0) ,P(x|y=1)等,然后取最大的后验概率作为分类。


分子中 P(x|y) = P(X1 = x1,X2 = x2| y = 1),对于朴素贝叶斯,对条件概率做了条件独立性假设。

所以上式可表示为: = P(X1 = x1 | y = 1) P(X2 = x2 | y = 1)  这些也是先验概率

2、先验和后验的区别

http://blog.sina.com.cn/s/blog_4ce95d300100fwz3.html

先验概率是指根据以往经验和分析得到的概率,它往往作为“由因求果”问题中的“因”出现。

后验概率是指基于新的信息,修正原来的先验概率后所获得的更接近实际情况的概率估计。

个人理解,监督学习得到的概率都是后验概率。

3、为什么要朴素,朴素为什么好?

http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/

我们发现对比两个分类概率,分母一致,只要比较分子就好了,那么为什么我们一定要用贝叶斯呢?为什么不直接比较P(x|y),即每个分类下特征出现的概率就好了??

其实这种想法 就是利用了最大似然思想(哪个发生的概率最高),但是如果两个分类算的P(x|y)值一样怎么办呢?这时就要考虑 P(y)的概率了,即哪个分类出现的概率最大,这里面又涉及到了奥卡姆剃刀的精神:如果两个理论具有相似的解释力度,那么优先选择那个更简单的(往往也正是更平凡的,更少繁复的,更常见的)。

奥卡姆剃刀就是说 P(h) 较大的模型有较大的优势,而最大似然则是说最符合观测数据的(即 P(D | h) 最大的)最有优势。

以上说的是当我们知道先验概率 P(h) 的时候,光用最大似然是不靠谱的,因为最大似然的猜测可能先验概率非常小。然而,有些时候,我们对于先验概率一无所知,只能假设每种猜测的先验概率是均等的,这个时候就只有用最大似然了。


为什么要朴素,朴素为什么好? 计算简单,

那么为什么这个假设在实际中的表现却不比决策树差呢?有人对此提出了一个理论解释,并且建立了什么时候朴素贝叶斯的效果能够等价于非朴素贝叶斯的充要条件,这个解释的核心就是:有些独立假设在各个分类之间的分布都是均匀的所以对于似然的相对大小不产生影响;即便不是如此,也有很大的可能性各个独立假设所产生的消极影响或积极影响互相抵消,最终导致结果受到的影响不大。具体的数学公式请参考这篇 paper 。http://www.cs.unb.ca/profs/hzhang/publications/FLAIRS04ZhangH.pdf

4、拉普拉斯平滑

先验概率为0就不好了,所以在分子分母都加1

5、优缺点

朴素贝叶斯的主要优点有:


    1)朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。


    2)对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练。


    3)对缺失数据不太敏感,算法也比较简单,常用于文本分类。

朴素贝叶斯的主要缺点有:   


    1) 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。


    2)需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。


    3)由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率。


    4)对输入数据的表达形式很敏感。

6、使用场景

分类,多分类场景、小数据集表现好、属性相关性较小(独立)

7、代码

http://spark.apache.org/docs/1.6.3/mllib-naive-bayes.html

数据集要求: RDD of (label, features) pairs.

平滑参数lambda

模型类型:多项式NB(适合离散变量)、二项式NB(适合0-1离散变量)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值