贝叶斯分类器在早期的自然语言处理任务中有着较多实际的应用,例如大部分的垃圾邮件处理都是用的贝叶斯分类器。贝叶斯分类器的理论对于理解后续的NLP模型有很大的进益,感兴趣的小伙伴一定要好好看看,本文会详细的讲述贝叶斯分类器的原理。

本文会是我们NLP基础系列最后一篇机器学习模型的讲解,后面会进入深度学习相关的内容。

作者&编辑 | 小Dream哥

1 贝叶斯决策论

贝叶斯决策论是在统计概率框架下进行分类决策的基本方法。对于分类任务来说,在所有相关概率都已知的情况下,贝叶斯决策论考虑如何基于这些概率和误判损失来预测分类。

假设在一个分类任务中,有N种可能的分类,y={c1,c2,c3,...,cN}。我们会这样定义将一个样本预测为ci的期望损失,又叫“条件风险”:

1、其中lambda_i_j,是将一个第j类样本预测为i类的损失

2、P(c_j|x)表示为将样本x预测为j类的概率

那么学习的任务是什么呢?

学习任务是寻找一个判定准则,利用该判定准则(分类器)进行分类预测,能够最小化条件风险:

如果我们针对每个样本x都最小化其条件风险,那么整体的风险也会最小

这就是所谓的贝叶斯判定准则:为最小化总体风险,只需在每个样本上选择那个能使条件风险最小的类别标记,即

h*称为贝叶斯最优分类器。

讲了这些理论,估计大家更是云里雾里,那我们不妨来看看实际的朴素贝叶斯分类器是怎么构建的。

我们先假设lambda_i_j有这样的形式:

那么

这样的话,最小化分类错误率的贝叶斯最优分类器为:

怎么理解呢?小Dream哥的理解是,根据贝叶斯判定准则,我们要预测一个样本属于哪一个类别,计算所有的后验概率P(c|x),概率最大的那一个类别的后验概率就是预测到的类别了。

那么该如何去计算后验概率P(c|x)呢?

贝叶斯模型是一种生成模型,先计算联合概率P(c,x),再通过联合概率计算后验概率,也就是利用如下的贝叶斯公式:

OK,那联合概率和先验概率该怎么计算呢?朴素贝叶斯模型就该登场了。

2 朴素贝叶斯分类器

我们再来仔细的分析贝叶斯公式,在有一个训练集的情况下:

1、P(c)为样本为某个类别的概率,给定样本及其label后容易计算

2、P(x)为某个样本(所有属性相同)出现的概率,给定样本后,容

易得到

比较难计算的是P(x|c):

其中m为样本属性的个数,例如预测西瓜是不是甜的模型,如果基于西瓜的花纹是否清晰、敲起来响声是否清亮这两个属性来判断的话,属性个数为2,也就是m=2。

在朴素贝叶斯模型中,有一个样本属性条件独立性假设,即:

这样贝叶斯公式就变成了:

那么,朴素贝叶斯模型得公式就调整为:

对于所有类别来说,P(x)相同,所以上式可以简化为:

好了,这就是朴素贝叶斯模型基础理论的所有内容了。

到这里,反应快的同学就会说:“你说了这么多原理和公式,那么这个模型到底是怎么训练和预测的呢?”下面我们就来讨论这个问题。

3 朴素贝叶斯模型的训练和预测

我们好好看看朴素贝叶斯模型最后的表达式,带计算的参数有P(c),P(x_i|c)。训练的过程,其实就是计算所有的P(c),P(x_i|c)的过程。

假设数据集为D,Dc表示数据集中C类样本组成得集合。|D|表示数据集中样本的个数,|Dc|表示C类样本的个数。

那么P(c)可以如下表示:

P(x_i|c)可以用下式表示:

|Dc,x_i|表示样本属于c类,第i个属性为x_i的样本的数目。在已知数据集的情况下,上面两个式字都很容易计算,得到所有P(c)和P(x_i|c)后,就完成了学习的过程。

那么,当来了一个新样本,该如何对该样本的类别进行预测呢?

假设新样本X(x_1,x_2,_x_3,....x_m),总共有n个类别。根据最终的贝叶斯公式

预测步骤如下:

(1)根据训练获得的概率值矩阵,第1个类别的P(c_1)和P(x_1|c_1),P(x_2|c_1),...P(x_m|c_1),并计算他们的乘积,得到属于第一个类别的概率

(2)同上,计算样本属于其他类别的概率

(3)取概率最大的类别为预测样本的类别

这里总结一下:

朴素贝叶斯模型在训练过程,利用数据集D,计算P(c),P(x_i|c)。在预测时,输入样本,利用贝叶斯公式,计算n个类别的概率,最后输出概率最大的那个类别,作为预测的类别。

总结

整个看下来,朴素贝叶斯模型的本质是针对样本属性的统计概率模型。要想朴素贝叶斯模型的效果好,前期的特征工程和数据清洗是非常重要的工作。早期的机器学习分类模型,特征选择是至关重要的工作,直接决定了模型的效果,这点与现在的深度学模型有很大的差别。神经网络中,通常是在模型内进行特征提取与学习,这就大大减少了特征工程方面的工作。

这是NLP基础理论系列文章中最后一篇机器学习方面的文章了,后面开始介绍深度学习相关的内容了。其他经典的模型,例如SVM,决策树,EM等,如有需要,大家可以留言,小Dream哥视情况,要不要再补上。

下期预告:递归神经网络RNN

NLP群推荐

有三AI建立了一个NLP群,便于有志者相互交流。现人数较多,不便贴二维码。感兴趣的同学可以微信搜索jen104,备注"加入有三AI NLP群"

知识星球推荐

有三AI知识星球,内设8大学习板块,包括深度学习模型解读“网络结构1000问”,覆盖传统图像算法/机器学习/深度学习等内容的有奖“看图猜技术”,不常为人所知的“数据集”,优质“GitHub项目”推荐,优质AI电子书“AI书籍”,容易忽略的小问题“AI1000问”,浓缩领域精华的“AI知识汇总”,以及众筹合作的开发“项目”

转载文章请后台联系

侵权必究

往期精选

  • 【NLP】自然语言处理专栏上线,带你一步一步走进“人工智能技术皇冠上的明珠”。

  • 【NLP】用于语音识别、分词的隐马尔科夫模型HMM

  • 【NLP】用于序列标注问题的条件随机场(Conditional Random Field, CRF)

  • 【NLP】 NLP专栏栏主自述,说不出口的话就交给AI说吧

【NLP】经典分类模型朴素贝叶斯解读相关推荐

  1. 情感分类与朴素贝叶斯

    本文介绍一种机器学习分类算法--朴素贝叶斯算法及其在NLP中的应用.具体实现部分可参考朴素贝叶斯用于情感分类的实现 NLP中的分类 许多自然语言处理任务涉及分类,分类也是人类和机器智能的核心. 文本分 ...

  2. 机器学习监督学习之分类算法---朴素贝叶斯代码实践

    目录 1. 言论过滤器 1.1 项目描述 1.2 朴素贝叶斯 工作原理: 1.2.1 词条向量 1.3 开发流程: 1.4 代码实现 1.4.1 创建样本 1.4.2 构建词汇表,用于建立词集向量 1 ...

  3. 决策树模型 朴素贝叶斯模型_有关决策树模型的概述

    决策树模型 朴素贝叶斯模型 Decision Trees are one of the highly interpretable models and can perform both classif ...

  4. NLP系列(4)_朴素贝叶斯实战与进阶

    作者: 寒小阳 && 龙心尘 时间:2016年2月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/50629608 htt ...

  5. 机器学习监督学习之分类算法---朴素贝叶斯理论知识

    感谢Jack-Cui大佬的知识分享 机器学习专栏点击这里 目录 感谢Jack-Cui大佬的知识分享 0. 概述 1. 朴素贝叶斯理论 1.1 贝叶斯理论 1.1.1 相关计算公式:条件概率公式,贝叶斯 ...

  6. 基于概率论的分类方法—朴素贝叶斯

    基于概率论的分类方法-朴素贝叶斯 转载于:https://www.cnblogs.com/liuys635/p/11181304.html

  7. NLP之TopicModel:朴素贝叶斯NB的先验概率之Dirichlet分布的应用

    NLP之TopicModel:朴素贝叶斯NB的先验概率之Dirichlet分布的应用 目录 1.Dirichlet骰子先验和后验分布的采样 2.稀疏Dirichlet先验的采样 1.Dirichlet ...

  8. 《机器学习实战》学习笔记(四):基于概率论的分类方法 - 朴素贝叶斯

    欢迎关注WX公众号:[程序员管小亮] [机器学习]<机器学习实战>读书笔记及代码 总目录 https://blog.csdn.net/TeFuirnever/article/details ...

  9. 无监督学习------分类学习-----朴素贝叶斯(navie bayes)

    朴素贝叶斯是一个实用性很强的分类模型,不过线性分类器和支持向量机分类器(基于线性假设的模型)不同,朴素贝叶斯的构造基础是贝叶斯理论 这个模型的基本数学假设是:各个维度上的特征被分类的条件概率之间是相互 ...

最新文章

  1. java学习总结:3
  2. linux管理磁盘和文件系统
  3. 《VMware 网络技术:原理与实践》—— 3.2 以太网
  4. mysql的高阶用法_MySQL的经典用法(十四)-高级优化
  5. 中邮智递通过数加和datav将系统和服务迁移到大数据平台
  6. mysql远程一会不用卡住_连接远程MySQL数据库项目启动时,不报错但是卡住不继续启动的,...
  7. c++实现插入和冒泡排序
  8. 知识付费小程序源码支持流量主-瀑布流
  9. 【吃炸弹的鸽子UVA10765-双联通模板】
  10. Java如何判断整数溢出,溢出后怎么得到提示?
  11. 印花固浆在水性印花中的作用
  12. 2021秋季跳槽必备:软件测试面试题(附带答案)备战金九银十!
  13. 使用appium时出现的问题
  14. OpenCV老版本下载方法
  15. C++多线程1——pthread
  16. 2021年最新互联网大厂中秋礼盒PK!
  17. atob()和btoa() 进行base64的编码和解码
  18. 苹果手机3D-Touch这个功能,其实是吃鸡神器!
  19. 如何将复杂的物理建模过程化繁为简?
  20. 单片机七阶音符_单片机 演奏音符

热门文章

  1. solr异常--Expected mime type application/octet-stream but got text/html.
  2. 插入排序算法 及其二分搜索优化版 C++代码实现 恋上数据结构笔记
  3. 阿里云的linux服务器简单部署网站80端口
  4. 关于为使用ArrayAdapter创建ListView时,使用TextView添加子项的问题
  5. jsp uri=http://java.sun.com/jsp/jstl/core报错解决
  6. java属性修改前后_java 记录对象前后修改的内容(工具类)
  7. python导入csv数据例子-使用python读取csv文件快速插入数据库的实例
  8. 绝了,这18 个开箱即用的 Shell 脚本值得收藏
  9. Game On Serverless:SAE 助力广州小迈提升微服务研发效能
  10. Service Mesh 从“趋势”走向“无聊”