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

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

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

一、概述

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

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

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

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

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

相关文章

来自专栏机器之心

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

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

3037
来自专栏WD学习记录

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

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

2775
来自专栏大数据挖掘DT机器学习

CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)概念区分理解

1、相关知识 从广义上来说,NN(或是更美的DNN)确实可以认为包含了CNN、RNN这些具体的变种形式。有很多人认为,它们并没有可比性,或是根本没必要放在一起比...

4168
来自专栏专知

【最新前沿】Facebook何恺明等大神最新论文提出非局部神经网络(Non-local Neural Networks)

【导读】Facebook何恺明和RGB两位大神最近提出非局部操作non-local operations为解决视频处理中时空域的长距离依赖打开了新的方向。文章采...

4264
来自专栏SIGAI学习与实践平台

理解梯度下降法

最优化问题在机器学习中有非常重要的地位,很多机器学习算法最后都归结为求解最优化问题。在各种最优化算法中,梯度下降法是最简单、最常见的一种,在深度学习的训练中被广...

921
来自专栏人工智能LeadAI

从CVPR2017 看多样目标检测

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

4385
来自专栏大数据文摘

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

1634
来自专栏机器学习之旅

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

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

993
来自专栏AI科技评论

干货 | YJango的 卷积神经网络介绍

AI科技评论按:本文来源 知乎,作者:YJango,AI科技评论授权转载。 PS:YJango是我的网名,意思是我写的教程,并不是一种网络结构。。 关于卷积神经...

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

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

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

4938

扫码关注云+社区