朴素贝叶斯
常用的统计学公式
- 条件概率:设A,B 是两个事件,且A不是不可能事件,因此条件概率为在事件A发生的条件下,事件B发生的条件概率
- 乘法公式:设 A1,A2,…,An 为任意 n 个事件(n≥2)且 ,
P
(
A
1
A
2
⋯
A
n
)
>
0
P(A_1A_2{\cdots}A_n)>0
P(A1A2⋯An)>0 则有以下乘法公式
- 全概率公式:设事件组
B
i
{B_i}
Bi是样本空间Ω 的一个划分,且
P
(
B
i
)
>
0
(
i
=
1
,
2
,
…
n
)
P(B_i)>0(i=1,2,…n)
P(Bi)>0(i=1,2,…n)则对任一事件B有以下全概率公式
- 贝叶斯公式:设B1,B2,…Bn…是一完备事件组,则对任一事件A,
P
(
A
)
>
0
P(A)>0
P(A)>0,则有:
朴素贝叶斯
朴素(核心):就是假设n维的特征之间相互独立(以降低准确度为代价来简化计算过程)
算法流程:为避免分母为0,可以使用拉普拉斯平滑()
朴素贝叶斯在NLP中的应用
三种常用的朴素贝叶斯模型:多项式模型(词频型)、伯努利模型(文档型)、高斯模型
-
多项式模型
在多项式模型中,设某文档 d = ( t 1 , t 2 , … , t k ) d=(t_1, t_2, …,t_k) d=(t1,t2,…,tk), t k t_k tk 是该文档中出现过的单词,允许重复,则有:
先验概率 P ( C ) = 类 C 下 单 词 总 数 整 个 训 练 样 本 的 单 词 总 数 P(C)= \frac{类C下单词总数}{整个训练样本的单词总数} P(C)=整个训练样本的单词总数类C下单词总数
类条件概率 P ( t k ∣ C ) = 类 C 下 单 词 t k 在 各 个 文 档 中 出 现 过 的 次 数 之 和 + 1 类 C 下 单 词 总 数 + ∣ V ∣ P(t_k|C) = \frac {类C下单词t_k在各个文档中出现过的次数之和+1}{类C下单词总数+|V|} P(tk∣C)=类C下单词总数+∣V∣类C下单词tk在各个文档中出现过的次数之和+1
其中,V 是训练样本的单词表(即抽取单词,单词出现多次,只算一个),|V| 则表示训练样本包含多少种单词。 P ( t k ∣ C ) P(t_k|C) P(tk∣C)可以看作是单词tk在证明 d 属于类 C 上提供了多大的证据,而 P(C)则可以认为是类别 C 在整体上占多大比例(有多大可能性)
sklearn中的多项式贝叶斯:
from sklearn.naive_bayes import MultinomialNB
-
伯努利模型
先验概率 P ( C ) = 类 C 下 文 件 总 数 / 整 个 训 练 样 本 的 文 件 总 数 P(C) = 类C下文件总数/整个训练样本的文件总数 P(C)=类C下文件总数/整个训练样本的文件总数
类条件概率 P ( t k ∣ C ) = ( 类 C 下 包 含 单 词 t k 的 文 件 数 + 1 ) / ( 类 C 下 包 含 的 文 件 + 2 ) P(t_k|C)=(类C下包含单词t_k的文件数+1)/(类C下包含的文件+2) P(tk∣C)=(类C下包含单词tk的文件数+1)/(类C下包含的文件+2)
sklearn中的伯努利贝叶斯:
from sklearn.naive_bayes import BernoulliNB
-
高斯模型
当特征为连续型变量时,可以考虑高斯贝叶斯模型,高斯模型假设这些一个特征的所有属于某个类别的观测值符合高斯分布
sklearn中的高斯贝叶斯:
from sklearn.naive_bayes import GaussianNB
SVM
支持向量机(Support Vector Machine,SVM) 是常见的一种判别方法。在机器学习领域,是一个有监督的学习模型,通常用来进行模式识别、分类以及回归分析。
SVM中,只有极少数的样本会成为“支持向量”,也只有这些“支持向量”才会起到确定划分超平面的作用。
图解SVM原理:
这里将
w
d
、
b
d
w_d、b_d
wd、bd 用
w
、
b
w、b
w、b 换元表示:
其中,C越小,容错率越大
使用核函数(核技巧):
常见核函数:
利用SVM模型进行文本分类
训练:训练集 => 分词 => TFIDF => 降维 => SVM => 模型评估、调参
测试:测试集 => 分词 => TFIDF => 训练好的SVM => 获得结果
LDA主题生成模型(根据给定的一篇文档,推测其主题分布)
可以简单认为:pLSA + 贝叶斯框架 = LDA
LDA 是一种主题模型,它可以将文档集 中每篇文档的主题以概率分布的形式给出(用来推测文档的主题分布),从而通过分析一些文档抽取出它们的主题(分布)出来后,便可以根据主题(分布)进行主题聚类或文本分类。同时,它是一种典型的词袋模型,即一篇文档是由一组词构成,词与词之间没有先后顺序的关系。此外,一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题生成。
在LDA模型中,一篇文档生成的方式如下:
- 从狄利克雷分布 α α α 中取样生成文档 i 的主题分布 θ i θ_i θi
- 从主题的多项式分布 θ i θ_i θi 中取样生成文档 i 第 j 个词的主题 z i , j z_i,_j zi,j
- 从狄利克雷分布 β β β 中取样生产主题 z i , j z_i,_j zi,j 对应的词语分布 Φ z i , j Φ_{z_i,_j} Φzi,j
- 从词语的多项式分布 Φ z i , j Φ_{z_i,_j} Φzi,j 中采样最终生产词语 w i , j w_i,_j wi,j
其中,Beta分布是二项式分布的共轭先验概率分布,狄利克雷分布是多项式分布的共轭先验概率分布,LDA的图模型结构如下图所示(类似贝叶斯网络结构):
安装LDA算法:
pip install lda