[机器学习]一个例子完美解释朴素贝叶斯分类器
何为“朴素”:属性条件独立性假设
如果已知条件不止一个属性,二是多个呢,这个时候贝叶斯公式可以写作
上述公式假设特征属性 a1,a2⋯ 相互独立,这也是“朴素”一词的由来。另外,可以看到对于不同的分类,分母都是恒定的,而我们只想找到概率最大的类别,因此可以把分母省略,求条件概率的相对值,
最简单的解决方案通常是最强大的解决方案,而朴素贝叶斯就是一个很好的证明。尽管机器学习在过去几年取得了巨大的进步,但朴素贝叶斯已被证明不仅简单,而且快速、准确、可靠。它已经成功地用于许多项目中,而且它对自然语言处理(NLP)的问题的解决提供了很大的帮助。
朴素贝叶斯是利用概率论和贝叶斯定理预测样本类别(如新闻或客户评论)的概率算法。它们是概率性的,这意味着它们计算给定样本的每个类别的概率,然后输出概率最高的样本类别。他们获得这些概率的方式是使用贝叶斯定理,它基于可能与该特征相关的条件的先前数据来描述特征的概率。
我们将使用一种称为多项式朴素贝叶斯的算法。我们将以一个例子的方式介绍应用于NLP的算法,所以最终不仅你会知道这个方法是如何工作的,而且还会知道为什么它可以工作。我们将使用一些先进的技术,使朴素贝叶斯与更复杂的机器学习算法(如SVM和神经网络)可以相提并论。
一个简单的例子
让我们看一下这个例子在实践中如何运作。假设我们正在建立一个分类器,说明文本是否涉及体育运动。我们的训练集有5句话:
Text |
Category |
A great game(一个伟大的比赛) |
Sports(体育运动) |
The election was over(选举结束) |
Not sports(不是体育运动) |
Very clean match(没内幕的比赛) |
Sports(体育运动) |
A clean but forgettable game (一场难以忘记的比赛) |
Sports(体育运动) |
It was a close election (这是一场势均力敌的选举) |
Not sports(不是体育运动) |
由于朴素贝叶斯是一个概率分类器,我们想要计算句子“A very close game” 是体育运动的概率以及它不是体育运动的概率。
在数学上,我们想要的是P(Sports | a very close game)这个句子的类别是体育运动的概率。
但是我们如何计算这些概率呢?
特征工程
创建机器学习模型时,我们需要做的第一件事就是决定使用什么作为特征。例如,如果我们对健康进行分类,特征可能就是是一个人的身高,体重,性别等等。我们会排除对模型无用的东西,如人的名字或喜爱的颜色。
在这种情况下,我们甚至没有数字特征。我们只有文字。我们需要以某种方式将此文本转换成可以进行计算的数字。
那么我们该怎么办?一般都是使用字频。也就是说,我们忽略了词序和句子的构造,把每一个文件作为单词库来处理。我们的特征将是这些词的计数。尽管它似乎过于简单化,但它的效果令人惊讶。
贝叶斯定理
贝叶斯定理在使用条件概率(如我们在这里做)时很有用,因为它为我们提供了一种方法来扭转它们:P(A|B)=P(B|A)×P(A)/P(B)。在我们这种情况下,我们有P(sports | a very close game),所以使用这个定理我们可以逆转条件概率:
因为对于我们的分类器,我们只是试图找出哪个类别有更大的概率,我们可以舍弃除数,只是比较
这样就更好理解了,因为我们可以实际计算这些概率!只要计算句子 “A very close game” 多少次出现在“ Sports”的训练集中,将其除以总数,就可以获得P(a very close game | Sports)。
有一个问题,但是我们的训练集中并没有出现“A very close game”,所以这个概率是零。除非我们要分类的每个句子都出现在我们的训练集中,否则模型不会很有用。
Being Naive
我们假设一个句子中的每个单词都与其他单词无关。这意味着我们不再看整个句子,而是单个单词。我们把P(A very close game)写成:P(a very close game)=P(a)×P(very)×P(close)×P(game) 这个假设非常强大,但是非常有用。这使得整个模型能够很好地处理可能被错误标签的少量数据或数据。下一步将它应用到我们以前所说的:
P(a very close game|Sports)=P(a|Sports)×P(very|Sports)×P(close|Sports)×P(game|Sports)
现在,我们所有的这些单词在我们的训练集中实际出现了好几次,我们可以计算出来!
计算概率
计算概率的过程其实只是在我们的训练集中计数的过程。
首先,我们计算每个类别的先验概率:对于训练集中的给定句子, P(体育运动)的概率为⅗。然后,P(非体育运动)是⅖。然后,在计算P(game | Sports)就是“game”有多少次出现在sports的样品,然后除以sports的总数(11)。因此,P(game|Sports)=2/11。
但是,我们遇到了一个问题:“close”不会出现在任何sports样本中!那就是说P(close | Sports)= 0。这是相当不方便的,因为我们将把它与其他概率相乘,所以我们最终会得到P(a|Sports)×P(very|Sports)×0×P(game|Sports)等于0。这样做的事情根本不会给我们任何信息,所以我们必须找到一个办法。
我们该怎么做呢?通过使用一种被称为拉普拉斯平滑的方法:我们为每个计数添加1,所以它不会为零。为了平衡这一点,我们将可能的词数加到除数,因此这部分将永远不会大于1。在我们的案例中,可能的话是 [ “a” ,“great” ,“very” ,“over” ,'it' ,'but' ,'game' ,'election' ,'close' ,'clean' ,'the' ,'was' ,'forgettable' ,'match' ] 。
由于可能的单词数是14,应用拉普拉斯平滑我们得到了。全部结果如下:
现在我们只是将所有的概率加倍,看看谁更大:
完美!我们的分类器给出了“A very close game” 是Sport类。
先进的技术
改进这个基本模型可以做很多事情。以下这些技术可以使朴素贝叶斯与更先进的方法效果相当。
- Removing stopwords(删除停用词)。这些常用的词,不会真正地添加任何分类,例如,一个,有能力,还有其他,永远等等。所以为了我们的目的,选举结束将是选举,一个非常接近的比赛将是非常接近的比赛。
- Lemmatizing words(单词变体还原)。这是将不同的词汇组合在一起的。所以选举,大选,被选举等将被分组在一起,算作同一个词的更多出现。
- Using n-grams (使用实例)。我们可以计算一些常用的实例,如“没有内幕的比赛”和“势均力敌的选举”。而不只是一个字,一个字的进行计算。
- 使用TF-IDF。而不是只是计数频率,我们可以做更高级的事情
本文由北邮@爱可可-爱生活推荐,阿里云云栖社区翻译。
文章原标题《A practical explanation of a Naive Bayes classifier》
作者:Bruno Stecanella,机器学习爱好者,译者:袁虎,审阅:
文章为简译,更为详细的内容,请查看原文
[机器学习]一个例子完美解释朴素贝叶斯分类器相关推荐
- sklearn朴素贝叶斯分类器_python机器学习:方法链和朴素贝叶斯分类器
今天我们在学习朴素贝叶斯分类器之前,我们先来总结下前面经常用到的内容,方法链:在scikit-learn中所有模型的fit方法返回的都是self.我们用一行代码初始化模型并拟合,对应代码如下:logr ...
- 应用机器学习(三):朴素贝叶斯分类器
朴素贝叶斯( Naive Bayes )分类器,是指将贝叶斯( Bayes )原理应用于具有较强独立性假设的特征(变量),而得到的一族简单的概率分类器. Naive Bayes 分类器假设: 给定类变 ...
- 【机器学习自学笔记4】朴素贝叶斯分类器
title: [机器学习自学笔记4]朴素贝叶斯分类器 date: 2020-10-29 18:34:29 categories: 机器学习 tags: 机器学习 概率论 贝叶斯分类是一类分类算法的总称 ...
- 朴素贝叶斯分类器:例子解释
戳上面的蓝字关注我们! 作者:alg-flody 编辑:Emily 今日话题 在昨天推送了用一个例子引入贝叶斯公式的基本思想,然后用贝叶斯公式对一个很简单的问题做分类,最后引出来一个问题:后验概率 P ...
- 【机器学习】贝叶斯分类(通过通俗的例子轻松理解朴素贝叶斯与半朴素贝叶斯)
贝叶斯分类 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法.这篇文章我尽可能用直白的话语总结一下我们 ...
- [机器学习] 分类 --- Naive Bayes(朴素贝叶斯)
一.概率知识点复习 (1)条件概率 就是事件A在另外一个事件B已经发生条件下的发生概率.条件概率表示为P(A|B),读作"在B条件下A的概率". (2)联合概率 可以简单的理解为事 ...
- python机器学习案例系列教程——文档分类器,朴素贝叶斯分类器,费舍尔分类器
全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 github地址:https://github.com/626626cdllp/data-mining/tree/master/Bay ...
- 机器学习实战(三)朴素贝叶斯NB(Naive Bayes)
目录 0. 前言 1. 条件概率 2. 朴素贝叶斯(Naive Bayes) 3. 朴素贝叶斯应用于文本分类 4. 实战案例 4.1. 垃圾邮件分类案例 学习完机器学习实战的朴素贝叶斯,简单的做个笔记 ...
- 机器学习实战(三)朴素贝叶斯 (Peter Harrington著)
知识储备: 一.概率论和数理统计 第一章 概率论的基本概念 1.必须要掌握的名词 (1) 样本空间 一般可以认为是整个样本 (2) 样本点 其中的一个样本,其中每个样本一般可以理解为特征向量 (3) ...
最新文章
- Linux之socket套接字编程20160704
- ceph rbdmap遇到的一个问题
- 【TP5笔记】TinkPHP5中引入资源文件
- UA MATH523A 实分析3 积分理论例题 集合的特征函数L2收敛的条件
- 手把手教你webpack4.x从零开始搭建vue项目
- idea删除module
- JMeter基础之—录制脚本
- C#session共享+redis_Shiro权限管理框架(二):Shiro结合Redis实现分布式环境下的Session共享...
- 测试过程中的防忽悠沟通法
- 微型计算机一般不采用的控制方式,微型计算机控制作业.doc
- P1144 最短路计数
- 水题 CodeForces 602C -Two Bases
- 史上最壕无人车买家诞生!泥潭中的Uber要搞个超大的无人出租车队
- java 银行卡号_java银行卡号判断银行
- pyqt5和spyder版本对应_pyqt5 spyder 项目 记录
- vmware虚拟机centos7扩容
- 深入理解color model(颜色模型)
- 编程之类的文案_精选50句文案,个个都是让你灵感喷涌的句子!
- expect结合scp实现文件上传
- 实验详解OSPF的几类LSA、FA转发规则(思科设备)
热门文章
- No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7s, VALID_ARCHS=armv7 armv6)
- 【机器学习】Python 快速入门笔记
- Forbidden Attack:7万台web服务器陷入被攻击的险境 1
- Java Date Time 教程
- 如何安装使用MQCache缓存服务器(适用X300型或者X500型)
- Sharepoint学习笔记---Sandbox Solution-- Full Trust Proxy--开发实例之(2、在Webpart中访问Full Trust Proxy)...
- 百度 android geocoding,百度地图经纬度批量查找功能XGeocoding使用手册(示例代码)
- python提示list index out of range_为什么python报错说“list index out of range”
- 小知识:常用开源协议详细解析
- python加载模型文件进行图片分类_tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式...