朴素贝叶斯

作者: 0过把火0 | 来源:发表于2018-10-12 17:29 被阅读3次

本次记录朴素贝叶斯的相关原理,并上一张手写的面试级推导过程

朴素贝叶斯模型是什么?

朴素贝叶斯是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的数据集,首先基于特征条件独立性假设学习输入/输出的联合概率分布;然后基于此模型对给定的预测样本x,利用贝叶斯定理求出后验概率最大的输出y。

核心思想

朴素贝叶斯核心思想利用先验概率得到后验概率,并且最终由期望风险最小化得出后验概率最大化,从而输出让后验概率最大化的值(具体概率与先验概率由加入拉普拉斯平滑的极大似然估计而成的贝叶斯估计得到),特征必须相互独立。

基本原理

对于给定的训练数据集,先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。

前馈知识:贝叶斯参数估计

用极大似然估计可能会出现所要估计的概率值为0的情况,使分类产生偏差,解决这一问题的方法是采用贝叶斯估计。条件概率的贝叶斯估计为:



先验概率的贝叶斯估计为:



其中,在两个估计的公式中,lambda >= 0,等价于在随机变量各个取值的频数上赋予一个正数,常去lambda = 1,表示拉普拉斯平滑。

朴素贝叶斯推导

优缺点

优点:
    算法逻辑简单,易于实现
    分类过程的空间开销较小,可以实现小批量的增量训练
    对缺失值不是很敏感,常用于文本分类
缺点:
    属性间独立性假设过强,对于属性间相关性较大的数据,贝叶斯模型无法做出很好地分类效果。
    对数据特征的形势要求较高,比如要求离散型、二元特征或连续型,每种类型特征其计算的先验都不一样。

朴素贝叶斯与LR的比较

(1)判别式与生成式
    Naive Bayes是一个生成模型,在计算P(y|x)之前,先要从训练数据中计算P(x|y)和P(y)的概率,从而利用贝叶斯公式计算P(y|x)。
    Logistic Regression是一个判别模型,它通过在训练数据集上最大化判别函数P(y|x)学习得到,不需要知道P(x|y)和P(y)。
(2)独立性    
    Naive Bayes是建立在条件独立假设基础之上的,设特征X含有n个特征属性(X1,X2,...Xn),那么在给定Y的情况下,X1,X2,...Xn是条件独立的。
    Logistic Regression的限制则要宽松很多,如果数据满足条件独立假设,Logistic Regression能够取得非常好的效果;当数据不满度条件独立假设时,Logistic Regression仍然能够通过调整参数让模型最大化的符合数据的分布,从而训练得到在现有数据集下的一个最优模型。
(3)数据集大小
    当数据集比较小的时候,应该选用Naive Bayes,为了能够取得很好的效果,数据的需求量为O(log n)。
    当数据集比较大的时候,应该选用Logistic Regression,为了能够取得很好的效果,数据的需求量为O( n)。
(4)训练方式
     Naive Bayes运用了比较严格的条件独立假设,为了计算P(y|x),我们可以利用统计的方法统计数据集中P(x|y)和P(y)出现的次数,从而求得P(x|y)和P(y)。
     Logistic Regression在计算时,是在整个参数空间进行线性搜索的。

贝叶斯使用技巧

1、sklearn中的朴素贝叶斯模型
朴素贝叶斯是一类比较简单的算法,scikit-learn中朴素贝叶斯类库的使用也比较简单。相对于决策树,KNN之类的算法,朴素贝叶斯需要关注的参数是比较少的,这样也比较容易掌握。
在scikit-learn中,一共有3个朴素贝叶斯的分类算法类。
分别是GaussianNB,MultinomialNB和BernoulliNB。
其中GaussianNB就是先验为高斯分布的朴素贝叶斯,
MultinomialNB就是先验为多项式分布的朴素贝叶斯,
而BernoulliNB就是先验为伯努利分布的朴素贝叶斯。

2、如何选择?
如果样本特征的分布大部分是连续值,使用GaussianNB会比较好。
如果如果样本特征的分大部分是多元离散值,使用MultinomialNB比较合适。
而如果样本特征是二元离散值或者很稀疏的多元离散值,应该使用BernoulliNB。

转载注明:https://www.jianshu.com/p/b5f0010283d3

相关文章

  • 算法笔记(7)-朴素贝叶斯算法及Python代码实现

    朴素贝叶斯算法有三种类型,分别是贝努利朴素贝叶斯、高斯贝叶斯、多项式朴素贝叶斯。 贝叶斯公式 贝努利朴素贝叶斯 适...

  • 朴素贝叶斯法

    朴素贝叶斯法 朴素贝叶斯法的学习与分类 朴素贝叶斯法的参数估计 朴素贝叶斯实现 高斯朴素贝叶斯实现 使用 skle...

  • 朴素贝叶斯(NBM)之后验概率最大化的含义 | 统计学习方法

    朴素贝叶斯 - 贝叶斯估计Python复现: 舟晓南:朴素贝叶斯(Bayes)模型python复现 - 贝叶斯估计...

  • 朴素贝叶斯算法介绍及优化

    朴素贝叶斯(Naive Bayes) 贝叶斯公式 朴素贝叶斯算法其实原理很简单,要理解朴素贝叶斯算法我们首先得知道...

  • 朴素贝叶斯法(NaiveBayes)

    朴素贝叶斯法(Naive Bayes) 朴素贝叶斯法是基于贝叶斯定力和特征条件独立假设的分类方法。 朴素贝叶斯法实...

  • 朴素贝叶斯算法

    问题 1. 什么是朴素贝叶斯 2. 怎么理解贝叶斯公式和朴素贝叶斯公式 3. 朴素贝叶斯算法流程是怎样...

  • 深度学习知识点汇总-机器学习基础(6)

    2.6 逻辑回归与朴素贝叶斯有什么区别? 逻辑回归是判别模型, 朴素贝叶斯是生成模型。 朴素贝叶斯属于贝叶斯,逻辑...

  • 朴素贝叶斯

    朴素贝叶斯 用处:朴素贝叶斯主要解决的是而分类的问题。 为什么叫朴素贝叶斯: 因为贝叶斯分类只做最原始,最简单的假...

  • sklearn-朴素贝叶斯

    朴素贝叶斯分为三种:高斯朴素贝叶斯、多项式朴素贝叶斯、伯努利朴素贝叶斯。这三种的不同之处在于求条件概率的公式不同。...

  • 第五周 - 20180507

    朴素贝叶斯的思路及实现 一、朴素贝叶斯简介 朴素贝叶斯法(Naive Bayes)是基于贝叶斯定理与特征条件独立假...

网友评论

    本文标题:朴素贝叶斯

    本文链接:https://www.haomeiwen.com/subject/wyvgaftx.html