理论 | 朴素贝叶斯模型算法研究与实例分析

理论 | 朴素贝叶斯模型算法研究与实例分析

(白宁超2018年8月31日17: 02:08)

导读:朴素贝叶斯模型是机器学习常用的模型算法之一,其在文本分类方面简单易行,且取得不错的分类效果。所以很受欢迎,对于朴素贝叶斯的学习,本文首先介绍理论知识即朴素贝叶斯相关概念和公式推导,为了加深理解,采用一个维基百科上面性别分类例子进行形式化描述。然后通过编程实现朴素贝叶斯分类算法,并在屏蔽社区言论、垃圾邮件、个人广告中获取区域倾向等几个方面进行应用,包括创建数据集、数据预处理、词集模型和词袋模型、朴素贝叶斯模型训练和优化等。然后结合复旦大学新闻语料进行朴素贝叶斯的应用。最后,大家熟悉其原理和实现之后,采用机器学习sklearn包进行实现和优化。由于篇幅较长,采用理论理解、案例实现、sklearn优化三个部分进行学习。(本文原创,转载必须注明出处:朴素贝叶斯模型算法研究与实例分析)

朴素贝叶斯理论

朴素贝叶斯概述

朴素贝叶斯是一种构建分类器的简单方法。该分类器模型会给问题实例分配用特征值表示的类标签,类标签取自有限集合。所有朴素贝叶斯分类器都假定样本每个特征与其他特征都不相关。

特征独立理解的例子:如果一种水果其具有红,圆,直径大概3英寸等特征,该水果可以被判定为是苹果。尽管这些特征相互依赖或者有些特征由其他特征决定,然而朴素贝叶斯分类器认为这些属性在判定该水果是否为苹果的概率分布上独立的。

尽管是带着这些朴素思想和过于简单化的假设,但朴素贝叶斯分类器在很多复杂的现实情形中仍能够获取相当好的效果。朴素贝叶斯分类器的一个优势在于只需要根据少量的训练数据估计出必要的参数(变量的均值和方差)。

朴素贝叶斯模型

朴素贝叶斯方法是基于贝叶斯定理的一组有监督学习算法,即“简单”地假设每对特征之间相互独立。 给定一个类别y和一个从x_1到x_n的相关的特征向量,贝叶斯定理阐述了以下关系:

使用简单(naive)的假设-每对特征之间都相互独立:

对于所有的 math: i ,这个关系式可以简化为

由于在给定的输入中

是一个常量,我们使用下面的分类规则:

我们可以使用最大后验概率(Maximum A Posteriori, MAP) 来估计 p(y)和P(x_i|y) ; 前者是训练集中类别 y 的相对频率。各种各样的的朴素贝叶斯分类器的差异大部分来自于处理 P(x_i|y) 分布时的所做的假设不同。尽管其假设过于简单,在很多实际情况下,朴素贝叶斯工作得很好,特别是文档分类和垃圾邮件过滤。相比于其他更复杂的方法,朴素贝叶斯学习器和分类器非常快。

朴素贝叶斯算法思想

假设有一个数据集,它由两类数据组成,数据分布如下图所示:

我们现在用p1(x,y) 表示数据点 (x,y) 属于类别 1(图中用圆点表示的类别)的概率,用 p2(x,y) 表示数据点 (x,y) 属于类别 2(图中三角形表示的类别)的概率,那么对于一个新数据点 (x,y),可以用下面的规则来判断它的类别:如果p1(x,y)>p2(x,y),那么类别为1;如果 p2(x,y) >p1(x,y) ,那么类别为2;也就是说,我们会选择高概率对应的类别。这就是贝叶斯决策理论的核心思想,即选择具有最高概率的决策。

朴素贝叶斯工作原理

提取所有文档中的词条并进行去重
获取文档的所有类别
计算每个类别中的文档数目
对每篇训练文档: 
    对每个类别: 
        如果词条出现在文档中-->增加该词条的计数值(for循环或者矩阵相加)
        增加所有词条的计数值(此类别下词条总数)
对每个类别: 
    对每个词条: 
        将该词条的数目除以总词条数目得到的条件概率(P(词条|类别))
返回该文档属于每个类别的条件概率(P(类别|文档的所有词条))

朴素贝叶斯算法流程

收集数据: 可以使用任何方法。
准备数据: 需要数值型或者布尔型数据。
分析数据: 有大量特征时,绘制特征作用不大,此时使用直方图效果更好。
训练算法: 计算不同的独立特征的条件概率。
测试算法: 计算错误率。
使用算法: 一个常见的朴素贝叶斯应用是文档分类。可以在任意的分类场景中使用朴素贝叶斯分类器,不一定非要是文本。

朴素贝叶斯优缺点

优点: 在数据较少的情况下仍然有效,可以处理多类别问题。
缺点: 对于输入数据的准备方式较为敏感。
适用数据类型: 标称型数据。

案例描述:形式化理解朴素贝叶斯性别分类

问题描述

通过一些测量的特征,包括身高、体重、脚的尺寸,判定一个人是男性还是女性。

训练数据

性别

身高(英尺)

体重(磅)

脚的尺寸(英寸)

6

180

12

5.92

190

11

5.58

170

12

5.92

165

10

5

100

6

5.5

150

8

5.42

130

7

5.75

150

9

假设训练集样本的特征满足高斯分布,得到下表:

性别

均值(身高)

方差(身高)

均值(体重)

方差(体重)

均值(脚的尺寸)

方差(脚的尺寸)

男性

5.855

3.5033e-02

176.25

1.2292e+02

11.25

9.1667e-01

女性

5.4175

9.7225e-02

132.5

5.5833e+02

7.5

1.6667e+00

我们认为两种类别是等概率的,也就是P(male)= P(female) = 0.5。在没有做辨识的情况下就做这样的假设并不是一个好的点子。但我们通过数据集中两类样本出现的频率来确定P(C),我们得到的结果也是一样的。

测试数据

以下给出一个待分类是男性还是女性的样本。

性别

身高(英尺)

体重(磅)

脚的尺寸(英尺)

sample

6

130

8

我们希望得到的是男性还是女性哪类的后验概率大。男性的后验概率通过下面式子来求取

女性的后验概率通过下面式子来求取

证据因子(通常是常数)用来对各类的后验概率之和进行归一化.

证据因子是一个常数(在正态分布中通常是正数),所以可以忽略。接下来我们来判定这样样本的性别。

其中

是训练集样本的正态分布参数. 注意,这里的值大于1也是允许的 – 这里是概率密度而不是概率,因为身高是一个连续的变量.

集样本的正态分布参数. 注意,这里的值大于1也是允许的 – 这里是概率密度而不是概率,因为身高是一个连续的变量.

模型预测结果

由于女性后验概率的分子比较大,所以我们预计这个样本是女性。

参考文献

  1. scikit中文社区:http://sklearn.apachecn.org/cn/0.19.0/
  2. 中文维基百科:https://zh.wikipedia.org/wiki/
  3. 文本分类特征选择:https://www.cnblogs.com/june0507/p/7601001.html
  4. GitHub:https://github.com/BaiNingchao/MachineLearning-1
  5. 图书:《机器学习实战》
  6. 图书:《自然语言处理理论与实战》

完整代码下载

源码请进【机器学习和自然语言QQ群:436303759】文件下载:

作者声明

本文版权归作者白宁超所有,本文原创,旨在学术和科研使用。文章同步如下:

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据科学与人工智能

【深度学习】深度学习在图像识别中的研究进展与展望

深度学习是近十年来人工智能领域取得的最重要的突破之一。它在语音识别、自然语言处理、计算机视觉、图像与视频分析、多媒体等诸多领域都取得了巨大成功。本文将重点介绍深...

7678
来自专栏人工智能头条

【王晓刚】深度学习在图像识别中的研究进展与展望

4107
来自专栏SIGAI学习与实践平台

理解牛顿法

牛顿法是数值优化算法中的大家族,她和她的改进型在很多实际问题中得到了应用。在机器学习中,牛顿法是和梯度下降法地位相当的的主要优化算法。在本文中,SIGAI将为大...

1552
来自专栏机器学习算法与Python学习

干货 | 详解scikit-learn中随机森林(RF)和梯度提升决策树(GBDT)的参数调优

关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第二 【Python】:排名第三 【算法】:排名第四 转自:博客园 作者:jasonfre...

1.7K5
来自专栏磐创AI技术团队的专栏

论文 | 半监督学习下的高维图构建

1532
来自专栏悦思悦读

「机器学习」学到多深够用?

机器学习现在热得一塌糊涂,码农要是不会点机器学习,都不好意在IT界混了。 机器学习难吗?一大堆公式,好像很难的样子。不过,看人家用起来,也不过就是下载几个软件...

2986
来自专栏深度学习与数据挖掘实战

干货|Hinton、LeCun、Bengio三巨头权威科普深度学习

借助深度学习,多处理层组成的计算模型可通过多层抽象来学习数据表征( representations)。这些方法显著推动了语音识别、视觉识别、目标检测以及许多其他...

1312
来自专栏机器学习之旅

Kaggle&TianChi分类问题相关纯算法理论剖析导读Bias-Variance-TradeofGBDT 理论剖析GBDT 实战剖析

17/12/30-update :很多朋友私密我想要代码,甚至利用金钱诱惑我,好吧,我沦陷了。因为原始代码涉及到公司的特征工程及一些利益trick,所以我构造了...

973
来自专栏大数据挖掘DT机器学习

sklearn集成学习:如何调参?

---- Random Forest和Gradient Tree Boosting参数详解 2 如何调参?   2.1 调参的目标:偏差和方差的协调   2...

4497
来自专栏机器之心

OpenAI新研究发现无监督情感神经元:可直接调控生成文本的情感

选自OpenAI 作者:Alec Radford等 机器之心编译 参与:吴攀 近日 OpenAI 公布了一项新研究,介绍了一种可以学习情感表征的无监督式的系统,...

3205

扫码关注云+社区

领取腾讯云代金券