出自——火哥
目录
1. 朴素贝叶斯概率模型
1.1 理论
1.2 实践
1.2.1 文章分类——已经分好词
1.2.2 文章分类——未分好词
1.3 总结
1.3.1 朴素贝叶斯可以用来做什么?
1.3.2 朴素贝叶斯的优缺点
2. 高斯朴素贝叶斯
3. 多项式分布朴素贝叶斯
4. 附录
4.1 附录1
朴素贝叶斯的假设:
公式:理论上,概率模型分类器是一个条件概率模型。
举例:给定一篇文章,预测出其类别
例如: 总共训练数据1000篇, 其中军事类300篇,科技类240篇,生活类140篇
|
例如: 总共训练数据1000篇, 其中军事类300篇,科技类240篇,生活类140篇,......
|
(1)整合数据,生成训练集和测试集
(2)模型的训练及保存
Q1: 这里有个问题,为什么不直接存对象呢?
Q2: 有没有发现,代码中p(xi|yi)和理论中讲的不一样呢?
在代码中,p(xi|yi) = count(xi在yi中出现的总次数) / count(yi样本的总词数)
(3) 推理
(1)可以做分类
(2)可以做特征
对标题进行分词,每个词都有一个针对类别的概率值,将该值作为特征输入到CTR模型。
(1)优点
a. 算法简单,常用于文本分类
b. 兼容多分类任务
c. 适合增量训练。实时更新p(y), p(x|y)
增量计算的方法:
Before:总共有1000篇文章,其中有200篇文章是军事。P(y) = 200 / 1000
After:新增500篇文章,其中有100篇文章是军事。p(y) = (200 + 100) / (1000 + 500)
(2) 缺点
a. 对于多义词,怎么办?对于模棱两可的词,该把这个词归位哪一类?
b. 顺序不敏感。句首,句中,句尾,往往是句首和句尾更重要。
c. 依赖先验概率
d.适用离散特征
如果要处理的是连续数据,一种通常的假设是这些连续数值为高斯分布。 例如,假设训练集中有一个连续属性x。我们首先对数据根据类别分类,然后计算每个类别中x的均值和方差。令表示为x在c类上的均值,令
为 x在c类上的方差。在给定类中某个值的概率
,可以通过将v表示为均值为
方差为
正态分布计算出来。如下,
处理连续数值问题的另一种常用的技术是通过离散化连续数值的方法。通常,当训练样本数量较少或者是精确的分布已知时,通过概率分布的方法是一种更好的选择。在大量样本的情形下离散化的方法表现更优,因为大量的样本可以学习到数据的分布。由于朴素贝叶斯是一种典型的用到大量样本的方法(越大计算量的模型可以产生越高的分类精确度),所以朴素贝叶斯方法都用到离散化方法,而不是概率分布估计的方法。
如果一个给定的类和特征值在训练集中没有一起出现过,那么基于频率的估计下该概率将为0。故可以引入Laplace和Lidstone平滑。
独立的类别变量C有若干类别,条件依赖于若干特征变量 F1,F2,……Fn。但问题在于如果特征数量n较大或者每个特征能取大量值时,基于概率模型列出概率表变得不现实。所以我们修改这个模型使之变得可行。 贝叶斯定理有以下式子:
用朴素的语言可以表达为(前面好几个算法也可以这样表示:即后验概率正比于先验概率*似然函数)
实际中,我们只关心分式中的分子部分,因为分母不依赖于、C而且特征 Fi 的值是给定的,于是分母可以认为是一个常数。这样分子就等价于联合分布模型。
重复使用链式法则,可将该式写成条件概率的形式,如下所示:
现在“朴素”的条件独立假设开始发挥作用:假设每个特征Fi对于其他特征是条件独立的。这就意味着
对于,所以联合分布模型可以表达为
这意味着上述假设下,类变量C的条件分布可以表达为: