学习笔记-贝叶斯分类器及其python实现

Posted 九七不会用python

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记-贝叶斯分类器及其python实现相关的知识,希望对你有一定的参考价值。

朴素贝叶斯(NB)

[学生党学习笔记,如有错误谢谢各位大佬指出]
所用书籍:《统计学习方法》-李航

一、概述

  朴素贝叶斯模型首先基于特征条件独立假设,学习输入的联合概率分布;然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。
  同时这也表明了朴素贝叶斯是一种生成式模型,是基于概率进行学习并分类的。
  关于生成式模型与判别式模型,大家可以点链接看看这篇文章[戳这里]

  相对于其它分类算法,朴素贝叶斯分类依赖于贝叶斯概率定理来预测未知数据集的类别,它的速度是非常快的。
  贝叶斯定理实际上就是计算”条件概率”的公式。
条件概率:
P ( A ∣ B ) = P ( B ∣ A ) ∗ P ( A ) P ( B ) P(A|B)=\\fracP(B|A)*P(A)P(B) P(AB)=P(B)P(BA)P(A)
在朴素贝叶斯分类器中,上式分别表示:

  • P(A|B)是给定预测变量(B,属性)的类(A,target)的后验概率。【即在看到新数据后,我们要计算的该假设的概率】
  • P(A)是类的先验概率。【即在得到新数据前某一假设的概率】
  • P(B|A)是预测器给定类的概率的可能性。【该假设下得到这一数据的概率,称为似然度】
  • P(B)是预测器的先验概率。【在任何假设下得到这一数据的概率,称为标准化常量】

  朴素贝叶斯分类器假设类中特定特征和其它特征的存在无关,因为前提条件便是基于特征独立的。这也是这个算法被称为“朴素”的原因。

二、贝叶斯算法数学原理

  这部分我建议大家去看李航老师的《统计学习方法》,我觉得写得很清楚,我这里就不过多赘述(也可能是我懒得打那些复杂的推导公式,我个人习惯在例子中搞明白)。

  这里直接上例题(例子来源于上书):

  例:由下表中的训练数据学习一个NB分类器并确定 x = ( 2 , S ) T x=(2,S)^T x=(2,S)T的类标记y,表中 x ( 1 ) x^(1) x(1) x ( 2 ) x^(2) x(2)为特征,取值的集合分别为 A 1 A_1 A1=1,2,3, A 2 A_2 A2=S,M,L,Y为类标记,Y ∈ \\in C=1,-1.

123456789101112131415
x ( 1 ) x^(1) x(1)111112222233333
x ( 2 ) x^(2) x(2)SMMSSSMMLLLMMLL
Y Y Y-1-111-1-1-11111111-1

  首先我们分析目标变量(Target)Y:
P ( Y = 1 ) = 9 15 , P ( Y = − 1 ) = 6 15 P(Y=1)=\\frac915,P(Y=-1)=\\frac615 P(Y=1)=159,P(Y=1)=156
  再看各特征的条件概率:
P ( x ( 1 ) = 1 ∣ Y = 1 ) = 2 9 , P ( x ( 1 ) = 2 ∣ Y = 1 ) = 3 9 , P ( x ( 1 ) = 3 ∣ Y = 1 ) = 4 9 P(x^(1)=1|Y=1)=\\frac29,P(x^(1)=2|Y=1)=\\frac39,P(x^(1)=3|Y=1)=\\frac49 P(x(1)=1Y=1)=92,P(x(1)=2Y=1)=93,P(x(1)=3Y=1)=94
P ( x ( 2 ) = S ∣ Y = 1 ) = 1 9 , P ( x ( 2 ) = M ∣ Y = 1 ) = 4 9 , P ( x ( 2 ) = L ∣ Y = 1 ) = 4 9 P(x^(2)=S|Y=1)=\\frac19,P(x^(2)=M|Y=1)=\\frac49,P(x^(2)=L|Y=1)=\\frac49 P(x(2)=SY=1)=91,P(x(2)=MY=1)=94,P(x(2)=LY=1)=94
P ( x ( 1 ) = 1 ∣ Y = − 1 ) = 3 6 , P ( x ( 1 ) = 2 ∣ Y = − 1 ) = 2 6 , P ( x ( 1 ) = 3 ∣ Y = − 1 ) = 1 6 P(x^(1)=1|Y=-1)=\\frac36,P(x^(1)=2|Y=-1)=\\frac26,P(x^(1)=3|Y=-1)=\\frac16 P(x(1)=1Y=1)=63,P(x(1)=2Y=1)=62,P(x(1)=3Y=1)=61
P ( x ( 2 ) = S ∣ Y = − 1 ) = 3 6 , P ( x ( 2 ) = M ∣ Y = − 1 ) = 2 6 , P ( x ( 2 ) = L ∣ Y = − 1 ) = 1 6 P(x^(2)=S|Y=-1)=\\frac36,P(x^(2)=M|Y=-1)=\\frac26,P(x^(2)=L|Y=-1)=\\frac16 P(x(2)=SY=1)=63,P(x(2)=MY=1)=62,P(x(2)=LY=1)=61
  再对于给定的 x = ( 2 , S ) T x=(2,S)^T x=(2,S)T:
P ( Y = 1 ) P ( X ( 1 ) = 2 ∣ Y = 1 ) P ( X ( 2 ) = S ∣ Y = 1 ) = 9 15 ∗ 3 9 ∗ 1 9 = 1 45 P(Y=1)P(X^(1)=2|Y=1)P(X^(2)=S|Y=1)=\\frac915*\\frac39*\\frac19=\\frac145 P(Y=1)P(X(1)=2Y=1)P(X(2)=SY=1)=机器学习之用 Python 从零实现贝叶斯分类器

独家 | 一文读懂贝叶斯分类算法(附学习资源)

机器学习贝叶斯分类器代码实现(python+sklearn)

为 Twitter 情绪分析项目寻找 C# 中的开源朴素贝叶斯分类器 [关闭]

贝叶斯分类器原理及其推导

机器学习:贝叶斯分类器——高斯朴素贝叶斯分类器代码实现