zoukankan      html  css  js  c++  java
  • 朴素贝叶斯算法

    朴素贝叶斯(Naive Bayes)

    一、简介

    首先介绍一下贝叶斯:

    贝叶斯(约1702-1761) Thomas Bayes,英国数学家。
    约1702年出生于伦敦,做过神甫。1742年成为英国皇家学会会员。1761年4月7日逝世。贝叶斯在数学方面主要研究概率论。
    他首先将归纳推理法用于概率论基础理论,并创立了贝叶斯统计理论,对于统计决策函数、统计推断、统计的估算等做出了贡献。

    朴素贝叶斯算法:

    朴素贝叶斯算法是基于贝叶斯定理与特征条件独立假设的分类方法。
    朴素贝叶斯分类器(Naive Bayes Classifier,或 NBC)发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。

    二、概率基础

    1.联合概率

    联合概率:表示两个事件共同发生的概率。A与B的联合概率记为P(A,B)。

    2.条件概率

    条件概率:指事件A在另外一个事件B已经发生条件下的发生概率。记为P(A|B),读作“在B的条件下A的概率”。

    三、贝叶斯公式

    在给定类变量y和从属特征向量x1到xn的情况下,贝叶斯定理表明了以下关系:

    egin{align} otag P(y|x_{1},x_{2},...,x_{n}) = frac{P(x_{1},x_{2},...,x_{n} | y)P(y)}{P(x_{1},x_{2},...,x_{n}))} end{align}

    使用条件独立假设:

    egin{align} otag P(x_{1},x_{2},...,x_{n}|y) = P(x_{1}|y)P(x_{2}|y)...P(x_{n}|y) end{align}

    可以得到:

    egin{align} otag P(y|x_{1},x_{2},...,x_{n}) = frac{P(y)prod_{i=1}^{n}P(x_{i}| y)}{P(x_{1},x_{2},...,x_{n})} end{align}

    四、计算举例

    在一个训练集中,m类文章有30篇,n类文章有70篇,其中出现A、B、C、D四个词的个数如下表所示。

    m n
    A 7 55
    B 11 51
    C 21 15
    D 64 0
    总计 103 121

    当要预测的文章中出现了B、C、D三个词,则该文章属于m类还是n类?
    属于m类的概率为:

    egin{align} otag P(m|B,C,D) = frac{P(m)P(B,C,D| m)}{P(B,C,D)} =frac{11}{103}cdot frac{21}{103}cdot frac{64}{103}cdot frac{30}{100} div P(B,C,D) =frac{0.00405}{P(B,C,D)} end{align}

    属于n类的概率为:

    egin{align} otag P(n|B,C,D) = frac{P(n)P(B,C,D| n)}{P(B,C,D)} =frac{51}{121}cdot frac{15}{121}cdot frac{0}{121}cdot frac{70}{100} div P(B,C,D) =frac{0}{P(B,C,D)} end{align}

    由上面计算得:

    egin{align} otag P(m|B,C,D) > P(n|B,C,D) end{align}

    则预测该文章属于m类。

    五、拉普拉斯平滑(Laplace smoothing)

    当某个分量在训练集某个分类中从没出现过,会导致整个实例的计算结果为0,如上面属于n类的概率。为了解决这个问题,使用拉普拉斯平滑进行处理,公式如下。

    egin{align} otag hat{} heta_{yi} = frac{N_{yi}+alpha}{N_{y}+alpha n} end{align}

    其中alpha为平滑系数,一般取值为1。

    上式表示在分子上加1,在分母上加上1乘以特征的数量即可。上述例子中属于n类的概率为:

    egin{align} otag P(m|B,C,D) = frac{P(m)P(B,C,D| m)}{P(B,C,D)} =frac{51+1}{121+1 imes 4}cdot frac{15+1}{121+1 imes 4}cdot frac{0+1}{121+1 imes 4}cdot frac{70}{100} div P(B,C,D) =frac{0.00298}{P(B,C,D)} end{align}

    六、优缺点

    1. 优点

    • 发源于古典数学理论,有稳定的分类效率
    • 对缺失数据不太敏感,算法简单,常用于文本分类
    • 分类准确率高,速度快

    2. 缺点

    • 基于样本特征独立的假设,如果特征有关联是效果不好

    七、API

    	sklearn.naive_bayes.MultinomialNB(alpha=1.0)
    

    alpha:平滑系数

    八、简单示例

    from sklearn.naive_bayes import MultinomialNB
    from sklearn.datasets import fetch_20newsgroups
    from sklearn.feature_extraction.text import TfidfVectorizer
    
    
    news_train = fetch_20newsgroups(subset="train")
    news_test = fetch_20newsgroups(subset="test")
    
    tfidf = TfidfVectorizer()
    news_train_data = tfidf.fit_transform(news_train.data)
    news_train_target = news_train.target
    
    news_test_data = tfidf.transform(news_test.data)
    news_test_target = news_test.target
    
    mnb = MultinomialNB()
    mnb.fit(news_train_data,news_train_target)
    print("准确率为:",mnb.score(news_test_data,news_test_target))
    

    我一直在,守着你的天真和笑容。——《哆啦A梦》

  • 相关阅读:
    移动端疑难特性、兼容性
    微信浏览器video播放视频踩坑
    【canvas学习笔记八】像素操作
    【canvas学习笔记七】混合和裁剪
    【canvas学习笔记六】状态保存和变换
    【canvas学习笔记五】使用图片
    【canvas学习笔记四】绘制文字
    【canvas学习笔记三】样式和颜色
    【canvas学习笔记二】绘制图形
    【canvas学习笔记一】基本认识
  • 原文地址:https://www.cnblogs.com/dblsha/p/10188217.html
Copyright © 2011-2022 走看看