机器学习实战之朴素贝叶斯

机器学习实战之朴素贝叶斯

1.1、简介

贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。已知某条件概率,如何得到两个事件交换后的概率,也就是在已知P(AB)的情况下如何求得P(BA)。这里先解释什么是条件概率:P(AB)表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发生下事件A的条件概率。其基本求解公式为:

贝叶斯定理之所以有用,是因为我们在生活中经常遇到这种情况:我们可以很容易直接得出P(AB),P(BA)则很难直接得出,但我们更关心P(BA),贝叶斯定理就为我们打通从P(AB)获得P(BA)的道路。贝叶斯公式即为:

1.2、简介朴素贝叶斯分类原理

基础思想:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。算法步骤如下:

1、找到一个已知分类的待分类项集合,这个集合叫做训练样本集。

2、统计得到在各类别下各个特征属性的条件概率估计,即

3、如果各个特征属性条件独立,有如下推导:

因为分母对于所有类别为常数,要找概率最大的类别,我们找到分子最大的就行。又因为各特征属性是条件独立的,所以:

注意:如果某个类别的概率为0,那么整个概率的乘积为0,为避免这种现象的产生,我们引入Laplace校准,可以初始化所有的类别出现的频率为1。

1.3、Python实践朴素贝叶斯分类

以在线社区的留言板为例。为了不影响社区的发展,我们要屏蔽侮辱性的言论,所以要构建一个快速过滤器,如果某条留言使用了负面或者侮辱性的语言,那么就将该留言标识为内容不当。过滤这类内容是一个很常见的需求。对此问题建立两个类别:侮辱类和非侮辱类,使用1和0分别表示。接下来首先给出将文本转换为数字向量的过程,然后介绍如何基于这些向量来计算条件概率,并在此基础上构建分类器,实现文档分类。

1、准备数据:从文本中构建词向量

我们将把文本看成单词向量或者词条向量,也就是说将句子转换为向量。考虑出现在所有文档中的所有单词,再决定将哪些词纳入词汇表或者说所要的词汇集合,然后必须要将每一篇文档转换为词汇表上的向量。

以斑点犬网站上的留言为例,第一篇文档,转换后的词向量结果为:

[0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]

2、训练算法:从词向量计算概率

代码函数中的输入参数为文档矩阵,以及由每篇文档类别标签所构成的向量 。首先,计算文档属于侮辱性文档的概率,即 p_abusive 。因为这是一个二类分类问题,所以可以通过 1-p_abusive 得到 P(0) 。对于多于两类的分类问题,则需要对代码稍加修改。需要初始化程序中的分子变量和分母变量 。由于w中元素如此众多,因此可以使用NumPy数组快速计算这些值。 for 循环中,要遍历训练集 trainMatrix 中的所有文档。一旦某个词语(侮辱性或正常词语)在某一文档中出现,则该词对应的个数( p1Num 或者 p0Num )就加1,而且在所有的文档中,该文档的总词数也相应加1 。对于两个类别都要进行同样的计算处理。最后,对每个元素除以该类别中的总词数 。

3、对文档进行分类

导入另外两篇我们不知道分类的文档,通过已经训练好的朴素贝叶斯算法来对其进行分类,函数classify()是选取分类概率最大的类别。

文档分类结果为:

[‘love’, ‘my’, ‘dalmation’] is classified as:0

[‘stupid’, ‘garbage’] is classified as:1

本文来自企鹅号 - 全球大搜罗媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏marsggbo

DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week2优化算法

1. Mini-batch梯度下降法 介绍 假设我们的数据量非常多,达到了500万以上,那么此时如果按照传统的梯度下降算法,那么训练模型所花费的时间将非常巨大,...

2196
来自专栏人工智能LeadAI

最终章 | TensorFlow战Kaggle“手写识别达成99%准确率

这是一个TensorFlow的系列文章,本文是第三篇,在这个系列中,你讲了解到机器学习的一些基本概念、TensorFlow的使用,并能实际完成手写数字识别、图像...

4169
来自专栏李智的专栏

斯坦福CS231n - CNN for Visual Recognition(7)-lecture6梯度检查、参数更新

  梯度检查是非常重要的一个环节,就是将解析梯度和数值计算梯度进行比较。数值计算梯度时,使用中心化公式

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

使用Keras进行深度学习:(五)RNN和双向RNN讲解及实践

2633
来自专栏本立2道生

论文学习-系统评估卷积神经网络各项超参数设计的影响-Systematic evaluation of CNN advances on the ImageNet

论文状态:Published in CVIU Volume 161 Issue C, August 2017 论文地址:https://arxiv.org/a...

802
来自专栏杨熹的专栏

一个 tflearn 情感分析小例子

学习资料: https://www.youtube.com/watch?v=si8zZHkufRY&list=PL2-dafEMk2A7YdKv4XfKpfb...

4346
来自专栏本立2道生

卷积神经网络之卷积计算、作用与思想

在计算机视觉领域,卷积核、滤波器通常为较小尺寸的矩阵,比如\(3\times3\)、\(5\times5\)等,数字图像是相对较大尺寸的2维(多维)矩阵(张量)...

1224
来自专栏GAN&CV

全面解读Group Normbalization-(吴育昕-何凯明)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25737169/article/d...

1193
来自专栏marsggbo

论文笔记系列-DARTS: Differentiable Architecture Search

我的理解就是原本节点和节点之间操作是离散的,因为就是从若干个操作中选择某一个,而作者试图使用softmax和relaxation(松弛化)将操作连续化,所以模型...

5304
来自专栏深度学习入门与实践

【原】文本挖掘——特征选择

特征选择有很多方法,看了很多资料后,我总结了以下几种,以后有新内容会随时修改 1.DF——基于文档频率的特征提取方法 概念:DF(document freque...

2315

扫码关注云+社区

领取腾讯云代金券