NLP算法之一(朴素贝叶斯理论部分)
来源:互联网 发布:pptv聚力网络电视下载 编辑:程序博客网 时间:2024/06/14 04:43
一、贝叶斯公式
贝叶斯公式就一行:
P(Y|X)=P(X|Y)P(Y)P(X)
而它其实是由以下的联合概率公式推导出来:
P(Y,X)=P(Y|X)P(X)=P(X|Y)P(Y)
其中P(Y)叫做先验概率,P(Y|X)叫做后验概率,P(Y,X)叫做联合概率。
没了,贝叶斯最核心的公式就这么些。
二、机器学习的视角理解贝叶斯公式
X理解成“具有某特征”,把Y理解成“类别标签”(一般机器学习为题中都是X=>
特征
, Y=>
结果
对吧)。在最简单的二分类问题(是
与否
判定)下,我们将Y理解成“属于某类”的标签。判断P(“属于某类”|“具有某特征”)是否大于1/2就够了。贝叶斯方法把计算“具有某特征的条件下属于某类”的概率转换成需要计算“属于某类的条件下具有某特征”的概率
三、朴素贝叶斯(Naive Bayes),“Naive”在何处?
也就是说,在朴素贝叶斯眼里,“我司可办理正规发票”与“正规发票可办理我司”完全相同。朴素贝叶斯失去了词语之间的顺序信息。
这就相当于把所有的词汇扔进到一个袋子里随便搅和,贝叶斯都认为它们一样。因此这种情况也称作词袋子模型(bag ofwords)。
词袋子模型与人们的日常经验完全不同。比如,在条件独立假设的情况下,“武松打死了老虎”与“老虎打死了武松”被它认作一个意思了。恩,朴素贝叶斯就是这么单纯和直接,对比于其他分类器,好像是显得有那么点萌蠢。
四、处理重复词语的三种方式
我们之前的垃圾邮件向量(“我”,“司”,“可”,“办理”,“正规发票”,“保真”,“增值税”,“发票”,“点数”,“优惠”),其中每个词都不重复。而这在现实中其实很少见。因为如果文本长度增加,或者分词方法改变,必然会有许多词重复出现,因此需要对这种情况进行进一步探讨。比如以下这段邮件:
“代开发票。增值税发票,正规发票。” 分词后为向量: (“代开”,“发票”,“增值税”,“发票”,“正规”,“发票”)
其中“发票”重复了三次。
多项式模型,考虑出现的次数,每次出现都记录。
伯努利模型(二项分布):将重复的词语视为 1次。
混合模型:计算句子概率时,不考虑重复词语出现的次数,但是在统计计算词语的概率P(“词语”|S)时,却考虑重复词语的出现次数,这样的模型可以叫作混合模型。
五、去除停用词与选择关键词
六、平滑技术
简单的就是分母和分子都加点东西
为了解决零概率问题呢,我们需要给 “未出现的n-gram条件概率分布一个非零估计值,相应得需要降低已出现n-gram条件概率分布,且经数据平滑后一定保证概率和为1”。这就是平滑技术的基本思想。
拉普拉斯平滑
保证每个n-gram在训练语料中至少出现1次。
古德图灵(Good Turing)平滑
· 出现0次的n元组也不能认为其是0次,应该给它一个比较小的估计值,比如为d0d0次。
· 为了保证总共的(出现和未出现的)n元组的次数不变,其他所有已出现的n元组的次数r应该打一个折扣,比如为drdr次。
· 然后再用新的drdr去计算各个条件概率。
七、小方法
很多乘法运算,计算的时间开销比较大。尤其是对于篇幅比较长的邮件,几万个数相乘起来还是非常花时间的。如果能把这些乘法变成加法则方便得多。刚好数学中的对数函数log就可以实现这样的功能。两边同时取对数(本文统一取底数为2)
有一种方法可以省略提前选取关键词的步骤,就是直接选取一段文本中权重最高的K个词语,将其权重进行加和。
八、朴素贝叶斯的局限性
朴素贝叶斯的局限性来源于其条件独立假设,它将文本看成是词袋子模型,不考虑词语之间的顺序信息,就会把“武松打死了老虎”与“老虎打死了武松”认作是一个意思。那么有没有一种方法提高其对词语顺序的识别能力呢?有,就是这里要提到的N-gram语言模型。
联合概率链规则(chain rule) :
P(x1,x2,x3,x4,x5,…,xn)P(x1,x2,x3,x4,x5,…,xn)
从联合概率链规则到n-gram语言模型
联合概率链规则公式考虑到词和词之间的依赖关系,但是比较复杂,在实际生活中几乎没办法使用,于是我们就想了很多办法去近似这个公式,比如我们要讲到的语言模型n-gram就是它的一个简化。
参考宗成庆的自然统计基础and寒小阳。
- NLP算法之一(朴素贝叶斯理论部分)
- NLP算法之一(朴素贝叶斯实际部分,新闻分类器)
- NLP算法之一(朴素贝叶斯实际部分,语言分类器)
- NLP算法之一(LDA理论和实际部分_ _邮件数据处理)
- 分类算法 之 朴素贝叶斯--理论解读
- 朴素Paxos理论介绍(一致性算法)
- 决策树算法理论部分(一)
- 朴素贝叶斯的理论与实现(占坑)
- 朴素贝叶斯算法(分类算法)
- Naive Bayes算法(朴素贝叶斯算法)
- 通俗易懂风趣活泼的朴素贝叶斯理论
- 朴素贝叶斯——理论篇
- 朴素贝叶斯分类器——理论
- EM算法(期望最大化)——理论部分
- NLP系列(4)_朴素贝叶斯实战与进阶
- NLP系列(4)_朴素贝叶斯实战与进阶
- NLP系列(4)_朴素贝叶斯实战与进阶
- 【NLP】使用朴素贝叶斯进行文本的分类
- AudioManger中文API总结
- js 给未来元素绑定事件
- 如何使用Valgrind memcheck工具进行C/C++的内存泄漏检测
- 使用的迭代器在容器和算法中交互
- javascript常用的20个正则表达式
- NLP算法之一(朴素贝叶斯理论部分)
- centos 关于redis 集群配置安装
- 暴风魔镜SDK在Unity3D 5.6中的简单应用
- java备份sqlserver数据库
- 出租车费
- Linux shell 之 提取文件名和目录名的一些方法
- scrollTop、offsetTop、offsetHeight等相对位置介绍
- MATLAB画阿基米德螺旋线
- 时间复杂度和空间复杂度