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

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

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

一、概述

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

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

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

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

公式如下: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 条评论
登录 后参与评论

相关文章

来自专栏新智元

【官方中文版】谷歌发布机器学习术语表(完整版)

【新智元导读】Google 工程教育团队已经发布了多语种的 Google 机器学习术语表,该术语表中列出了一般的Machine Learning术语和 Tens...

3315
来自专栏机器之心

谷歌大脑提出新型激活函数Swish惹争议:可直接替换并优于ReLU?(附机器之心测试)

2776
来自专栏算法channel

BAT面试题15:梯度消失与梯度膨胀,以及6种解决措施

根据链式法则,如果每一层神经元对上一层的输出的偏导乘上权重结果都小于1的话,那么即使这个结果是0.99,在经过足够多层传播之后,误差对输入层的偏导会趋于0。

411
来自专栏企鹅号快讯

机器学习——朴素贝叶斯实现分类器

机器学习(十四) ——朴素贝叶斯实现分类器 (原创内容,转载请注明来源,谢谢) 一、概述 朴素贝叶斯,在机器学习中,是另一种思想,属于概率思想。不过其还是在已知...

1989
来自专栏人工智能LeadAI

从CVPR2017 看多样目标检测

1、导读 When you have trouble with object detection, keep calm and use deep learnin...

4155
来自专栏大数据文摘

机器学习大牛最常用的5个回归损失函数,你知道几个?

1384
来自专栏机器学习之旅

理论:SVM理论解析及python实现

关于常见的分类算法在不同数据集上的分类效果,在《Do we Need Hundreds of Classifiers to Solve Real World C...

803
来自专栏WD学习记录

机器学习 学习笔记(16) 特征选择与稀疏学习

对当前学习任务有用的属性称为相关特征,没什么用的属性称为无关特征,从给定的特征集合中选择出相关特征自己的过程,称为特征选择。

2025
来自专栏机器之心

初学TensorFlow机器学习:如何实现线性回归?(附练习题)

选自Technica Curiosa 作者:Nishant Shukla 机器之心编译 参与:Jane W 本文的作者 Nishant Shukla 为加州大学...

2917
来自专栏AI科技大本营的专栏

详解|神经网络中BP算法的原理与Python实现

作者 | EdvardHua 最近这段时间系统性的学习了BP算法后写下了这篇学习笔记。 目录 什么是梯度下降和链式求导法则 神经网络的结构 BP算法中的执行流程...

4308

扫码关注云+社区