李航统计方法(四)---朴素贝叶斯
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了李航统计方法(四)---朴素贝叶斯相关的知识,希望对你有一定的参考价值。
参考技术A 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。训练的时候,学习输入输出的联合概率分布;分类的时候,利用贝叶斯定理计算后验概率最大的输出。=c 1 ……c k 。输入特征向量x和输出类标记y分属于这两个集合。X是输入空间上的随机变量,Y是输出空间上的随机变量。P(X,Y)是X和Y的联合概率分布,训练数据集
由P(X,Y)独立同分布产生。
朴素贝叶斯法通过T学习联合概率分布P(X,Y)。具体来讲,学习以下先验概率:
以及条件概率分布:
于是根据联合概率分布密度函数:
学习到联合概率分布P(X,Y)。
的参数数量是指数级的,也就是X和Y的组合很多,假设x j 可能取值S j 个,Y可能取值有K个,那么参数的个数是
。特别地,取xj=S,那么参数个数为KS n ,当维数n很大的时候,就会发生维数灾难。
一维空间中,把一个单位空间(退化为区间)以每个点距离不超过0.01采样,需要10 2 个平均分布的采样点,而在10维度空间中,需要10 20 个点才行。计算方式用Python描述如下:
可视化图像:
这种指数级的复杂度增长被称为维数灾难。
无法计算了。
为了计算它,朴素贝叶斯法对它做了条件独立性的假设:
也就是各个维度的特征在类确定的情况下都是独立分布的。这一假设简化了计算,也牺牲了一定的分类准确率。
基于此假设,以及 贝叶斯定理 ,后验概率为:
拆开,等于上式分母。
将独立性假设代入上式,得到
朴素贝叶斯分类器可以表示为:
也就是给定参数,找一个概率最大的c k 出来。注意到上式分母其实就是P(X=x),x给定了就固定了,跟c k 一点关系都没有,所以分母可以去掉,得到:
选择0-1损失函数:
f(X)就是分类器的决策函数,损失函数的参数其实是一个联合分布。
此时期望风险函数为:
上面说过,这是一个联合分布P(X,Y),是一个and(连乘)的形式,由此取条件期望为风险函数:
所谓条件期望,就是指X=x时,Y的期望。上式其实可以这么推回去:
E x ∑[L()]P(c k |X)=∑P(X)∑[L()]P(X,c k )/P(X)=∑[L()]P(X,c k )=E[L()]
格式比较乱,但愿意思到了。
为了最小化上式,只需对每个X=x执行最小化,那么加起来肯定是极小化的,由此有:
其实不用这么一堆公式,光靠感觉也很好理解,给了一些证据后,不挑后验概率最大的,还能挑啥呢?
前面说过,朴素贝叶斯法要学习的东西就是P(Y=c k )和P(X=x|Y=c k ),这两个概率的估计用极大似然估计法(简单讲,就是用样本猜测模型参数,或者说使得似然函数最大的参数)进行:
也就是用样本中c k 的出现次数除以样本容量。
分子是样本中变量组合的出现次数,分母是上面说过的样本中c k 的出现次数。
于是就有朴素贝叶斯算法,先从训练数据中计算先验概率和条件概率,然后对于给定的实例计算最大的条件概率,输出该条件对应的类别。形式化的描述如下:
例子
给定训练数据:
这个太简单了,利用(3)中的式子就行了。
贝叶斯估计
最大似然估计有个隐患,假设训练数据中没有出现某种参数和类别的组合怎么办?此时估计的概率值为0,但是这不代表真实数据中就没有这样的组合。解决办法是采用贝叶斯估计
1、条件概率的贝叶斯估计:
,S j 表示x j 可能取值的种数。分子和分母分别比最大似然估计多了一点东西,其意义是在随机变量每个取值的频数上加一个常量
。当此常量取0时,就是最大似然估计,当此常量取1时,称为拉普拉斯平滑。
2、先验概率的贝叶斯估计:
贝叶斯情感极性分析器
书中例题太简单,不过瘾。这里分析一个基于贝叶斯文本分类器实现的简单情感极性分析器。
调用实例:
# - - coding:utf-8 - -
# Filename: Bayes.py
# Author:hankcs
# Date: 2015/2/6 22:25
from math import log, exp
输出
(u'pos', 0.6666666666666665)
说明“好优秀”这句话具有正能量的概率是66%,虽然“好”这个词语也存在于负极性的语句中,但是分类器还是准确地区分了它。
上面的贝叶斯分类器使用了拉布拉斯平滑处理策略,在进行条件概率的时候,不是连乘,而是取对数相加,最后逐差取指数,这个过程会发生归一化,得出一个概率出来。
情感极性分析器主要参考了snownlp的实现。
以上是关于李航统计方法(四)---朴素贝叶斯的主要内容,如果未能解决你的问题,请参考以下文章