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

机器学习(十四)

——朴素贝叶斯实现分类器

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

一、概述

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

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

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

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

公式如下: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、数据转成向量

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

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

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

5、朴素贝叶斯训练函数

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

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

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

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

本文来自企鹅号 - PHP思想家媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏算法channel

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

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

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

理解梯度下降法

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

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

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

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

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

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

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

60580
来自专栏数据派THU

独家 | 一文为你解析神经网络(附实例、公式)

原文标题:Introduction To Neural Networks 作者:Ben Gorman 翻译:申利彬 校对:和中华 本文长度为4000字,建议阅读...

24850
来自专栏重庆的技术分享区

2吴恩达Meachine-Learing之单变量线性回归(Linear-Regression-with-One-Variable

15440
来自专栏WD学习记录

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

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

41850
来自专栏人工智能LeadAI

TensorFlow从0到1 | 第九章“驱魔”之反向传播大法

上一篇8 万能函数的形态:人工神经网络解封了人工神经网络,如果用非常简短的语言来概括它,我更喜欢维基百科的诠释: 人工神经网络是一种模仿生物神经网络(动物的中...

29880
来自专栏机器学习之旅

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

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

13030
来自专栏新智元

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

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

38350

扫码关注云+社区

领取腾讯云代金券