机器学习(十四) ——朴素贝叶斯实现分类器

机器学习(十四)——朴素贝叶斯实现分类器

(原创内容,转载请注明来源,谢谢)

一、概述

朴素贝叶斯,在机器学习中,是另一种思想,属于概率思想。不过其还是在已知结果进行分类,因此也属于监督学习中的分类算法。

朴素贝叶斯的思想是,根据特征计算出每种分类结果的概率,取概率最大的结果作为对最终结果的预测。

“朴素”的含义是包含了两个假设,一是假定所有特征都同等重要,二是假定每个特征之间独立,即一个特征的值的变化完全不会影响另一个特征的值。

“贝叶斯”是一种概率思想,其引入了先验概率和逻辑推理;与其对应的是“频数概率”,其只从数据本身获取概率,不考虑先验。简单来说,贝叶斯的概率是一种条件概率,即在发生某件事为前提下,另一件事发送的概率。

公式如下:p(ci|x,y)=p(x,y|ci)*p(ci)/p(x,y)。其中的x,y可以拓展到n维,表示的是要求在特征x、y的情况下,ci的概率,可以通过求出ci发生情况下是x、y特征值的概率、ci本身的概率、x、y特征值的概率,再通过上面的公式求出ci。然后,再比较ci,将最大的结果对应的i,作为最终的分类结果。

本文的文本分类,都是英文文本分类,中文由于其词汇构成的复杂,分词比较复杂,暂时没有考虑。

二、文本分类

1、需求

现在需要一个工具,来判断一些词语中,是否存在侮辱性词汇。假定已经将段落拆分成单词数组,并告知哪些词汇是侮辱性词汇,需要构造一个学习器,其可以学习上面的内容,并且在新输入的内容中,进行判断和反馈。

2、样本数据

样本数据包含一些句子,以及该句子是否为侮辱性句子的矩阵。

3、数据处理

要使系统能够“学习”到样本数据,需要先读取里面的句子,对词语进行去重。

4、数据转成向量

有两种方式,一种是仅考虑是否发生(即值只有0和1),称为词集模型;另一种是不仅考虑是否发生,还考虑发送次数,称为词带模型。

初始值都设置成0,后面发生1次,则记录为1,标记这个词语的类别不一样。

对于多分类、判断前几名或最后几名等情况,则必须使用词带模型,因为其记录了发生次数,信息量更多。

5、朴素贝叶斯训练函数

这个函数很重要,是朴素贝叶斯的核心。其就是根据p(ci|x,y)=p(x,y| ci)*p(ci)/p(x,y)公式,计算出每个分类可能性的概率。

做法是,遍历已知的分类结果,同时遍历原先的文本段落的句子,其是一一对应的。遍历到的分类结果如果是1,表示这个文档中有1个侮辱性词汇,则概率是侮辱性内容的分子会对应的加1,否则会加到概率是0的部分。

这里结果取对数,是防止结果太小被四舍五入成0。另外初始值都设置成1,是防止如果有些没有发生的值,那么在矩阵除法的时候会除以0。

6、朴素贝叶斯分类函数

将输入的分类向量的每个元素对应值,和p1对应元素位置相乘,再求和,再将结果加入到这个类别对应的一个整体的概率上。注意到的是,这里的加是log的加。log A + log B = log A*B,log A – log B = logA/B

由上面的分类可知,p1Vec=log(p1Num/p1Denom),这个进行sum后,相当于log(p1Num1*p1Num2..*p1Numn/(p1Denom1*p1Denom2…*p1Denomn)),其再和log(pClass1)相加后,即log的内部再乘以pClass1。这样公式正好凑成p(x,y|ci)*p(ci)/p(x,y)。

7、测试效果与运行结果

三、小结

1、朴素贝叶斯的概念和代码逻辑,相对于knn、决策树等,都要简单得多,核心即理解概率的公式,以及朴素贝叶斯的简化概念的思想。

2、对于概率求解,要注意到这里是取了对数情况下的计算,因此才会出现相加的情况,其本质上还是乘法。取对数并不会影响最终的判断结果,因为函数的增减和其对数的增减趋势是一样的,而这里只需要比较两个情况哪种概率大,并不需要一个概率的绝对值。

——written by linhxx 2018.01.13

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2018-01-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏生信小驿站

黑箱方法-神经网络①人工神经网络

今天,主要使用人工神经网络的进行建模分析,涉及的R包是neuralnet和nnet两个包,函数名和包名是一样的。

903
来自专栏斑斓

概率学中的随机变量与分布

随机变量 Random Variables 如果一个变量的值存在一个与之相关联的概率分布,则称该变量为“随机变量(Random Variable)”。数学上更...

2723
来自专栏智能算法

机器学习三人行(系列八)----神奇的分类回归决策树(附代码)

系列五我们一起学习并实战了支持向量机的分类和回归,见下面链接: 机器学习三人行(系列七)----支持向量机实践指南(附代码) 今天,我们一起学习下决策树算法,该...

27712
来自专栏MyBlog

利用双向注意流进行机器理解

本文基于Bi-Directional Attention Flow For Machine Comprehension一文

473
来自专栏CSDN技术头条

使用scikit-learn解释随机森林算法

在以前的一篇博文里,我讨论过如何将随机森林算法转化为一个“白盒”,这样每次预测就能被分解为各项特征的贡献和,即 ? 我多次想找相关的代码。然而,绝大多数的随机森...

16610
来自专栏PPV课数据科学社区

Tensorflow入门-白话mnist手写数字识别

文章目录 mnist数据集 简介 图片和标签 One-hot编码(独热编码) 神经网络的重要概念 输入(x)输出(y)、标签(label) 损失函数(loss ...

42910
来自专栏YoungGy

ML基石_10_LogisticRegression

logistic regression problem Y是概率的情况 相同数据不同目标函数 logis假设集 logistic regression erro...

1875
来自专栏机器学习算法原理与实践

K近邻法(KNN)原理小结

    K近邻法(k-nearest neighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自主的应用。比如,我们判断一个人的人品,...

785
来自专栏目标检测和深度学习

入门 | 从零开始,了解元学习

571
来自专栏JasonhavenDai

统计学习方法之K近邻法1.k近邻法(k-nearest neighbor,k-NN)2.k近邻模型3.k近邻算法的实现

1.k近邻法(k-nearest neighbor,k-NN) k近邻算法是一个基本分类和回归方法,k-NN的输入时实例的特征向量,对应于特征空间的点,输出是...

2775

扫描关注云+社区