【机器学习】文本分类——朴素贝叶斯Bayes
朴素贝叶斯主要用于文本分类。文本分类常见三大算法:KNN、朴素贝叶斯、支持向量机SVM。
一、贝叶斯定理
贝叶斯公式思想:利用已知值来估计未知概率。已知某条件概率,如何得到两个事件交换后的概率,也就是已知P(A|B)的情况下如何求得P(B|A)。
条件概率:P(A|B)表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发生下事件A的条件概率。基本求解公式:
现实中通常遇到这种情况:可以很容易直接得出P(A|B),而P(B|A)则很难直接得出,但我们更关心P(B|A),贝叶斯公式就是干这个用的:
二、贝叶斯原理、流程
朴素贝叶斯思想基础:对于待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。通俗地讲,好比你在街上看到一个黑人,我问你他是从哪里来的,你十有八九会说从非洲。为什么呢?因为黑人中非洲人比例最高,当然别人也有可能是美洲人或者拉丁人,但在没有其他可用信息下,我们会选择条件概率最大类别,这就是朴素贝叶斯思想基础。
贝叶斯分类的定义:
1.设x={a1, a2, …,am}为一个待分类项,而每个a为x的一个特征属性;
2.有类别集合C = {y1,y2, …, yn}
3.计算P(y1|x), P(y2|x),…, P(yn|x)
4.如果P(yk|x)= max{ P(y1|x), P(y2|x), …, P(yn|x) },则x∈yk.
关键是如何计算第3步中的各个条件概率。步骤:
1.找到一个已知分类的待分类项集合,这个集合叫做训练样本集。
2.统计得到在各类别下各个特征属性的条件概率估计。即:
3.如果各个特征属性是条件独立的,则根据贝叶斯定理有如下推导:
因为分母对于所有类别为常数,只要将分子最大化即可。又因为各特征属性是条件独立的,所以有:
朴素贝叶斯流程:
可以看到,整个朴素贝叶斯分类分为三个阶段:
第一阶段——准备工作阶段,这个阶段的任务是为朴素贝叶斯分类做必要的准备,主要工作是根据具体情况确定特征属性,并对每个特征属性进行适当划分,然后由人工对一部分待分类项进行分类,形成训练样本集合。这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。这一阶段是整个朴素贝叶斯分类中唯一需要人工完成的阶段,其质量对整个过程将有重要影响,分类器的质量很大程度上由特征属性、特征属性划分及训练样本质量决定。
第二阶段——分类器训练阶段,这个阶段的任务就是生成分类器,主要工作是计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计,并将结果记录。其输入是特征属性和训练样本,输出是分类器。这一阶段是机械性阶段,根据前面讨论的公式可以由程序自动计算完成。
第三阶段——应用阶段。这个阶段的任务是使用分类器对待分类项进行分类,其输入是分类器和待分类项,输出是待分类项与类别的映射关系。这一阶段也是机械性阶段,由程序完成。
三、注意问题
1.如果给出的特征向量长度可能不同,这是需要归一化为同长度向量(这里以文本分类为例),比如说是句子单词的话,则长度为整个词汇量的长度,对应位置是该单词出现的次数。
2. 计算公式中
其中一项条件概率可以通过朴素贝叶斯条件独立展开。要注意一点就是P(x|yi)的计算方法,而朴素贝叶斯的前提假设“独立性”可知,P(x0, x1, x2, …, xn|yi) = p(x0|yi)*p(x1|yi)*p(x2|yi)…p(xn|yi),因此一般有两种,一种是在类别为yi的那些样本集里,找到xj出现次数的总和,然后除以该样本的总和;第二种方法是类别为yi的那些样本集里,找到xj出现次数的总和,然后除以该样本中所有特征出现次数的总和。
3.如果p(x|yi)中的,则其联合概率乘积也可能为0,即2中公式分子为0,为了避免这种现象出现,一般情况下会将,当然为了保证概率相等,(这里因为是2类,所以加2,如果是k类就需要加k,术语上叫Laplace光滑)。
四、优缺点
优点:对小规模数据表现好,适合多分类器,适合增量式训练。
缺点:对输入数据格式敏感
数值类型:标称型
【机器学习】文本分类——朴素贝叶斯Bayes的更多相关文章
- 机器学习Matlab打击垃圾邮件的分类————朴素贝叶斯模型
该系列来自于我<人工智能>课程回顾总结,以及实验的一部分进行了总结学习机 垃圾分类是有监督的学习分类最经典的案例,本文首先回顾了概率论的基本知识.则以及朴素贝叶斯模型的思想.最后给出了垃圾 ...
- Python机器学习笔记:朴素贝叶斯算法
朴素贝叶斯是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法.对于大多数的分类算法,在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同.比如决策树,KNN,逻辑回归,支持向 ...
- 机器学习集成算法--- 朴素贝叶斯,k-近邻算法,决策树,支持向量机(SVM),Logistic回归
朴素贝叶斯: 是使用概率论来分类的算法.其中朴素:各特征条件独立:贝叶斯:根据贝叶斯定理.这里,只要分别估计出,特征 Χi 在每一类的条件概率就可以了.类别 y 的先验概率可以通过训练集算出 k-近邻 ...
- 吴裕雄--天生自然python机器学习:使用朴素贝叶斯过滤垃圾邮件
使用朴素贝叶斯解决一些现实生活中 的问题时,需要先从文本内容得到字符串列表,然后生成词向量. 准备数据:切分文本 测试算法:使用朴素贝叶斯进行交叉验证 文件解析及完整的垃圾邮件测试函数 def cre ...
- Python实现机器学习算法:朴素贝叶斯算法
''' 数据集:Mnist 训练集数量:60000 测试集数量:10000 ''' import numpy as np import time def loadData(fileName): ''' ...
- 04机器学习实战之朴素贝叶斯scikit-learn实现
In [8]: import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl from sklearn.pre ...
- 机器学习实战之朴素贝叶斯进行文档分类(Python 代码版)
贝叶斯是搞概率论的.学术圈上有个贝叶斯学派.看起来吊吊的.关于贝叶斯是个啥网上有很多资料.想必读者基本都明了.我这里只简单概括下:贝叶斯分类其实就是基于先验概率的基础上的一种分类法,核心公式就是条件概 ...
- Spark机器学习(4):朴素贝叶斯算法
1. 贝叶斯定理 条件概率公式: 这个公式非常简单,就是计算在B发生的情况下,A发生的概率.但是很多时候,我们很容易知道P(A|B),需要计算的是P(B|A),这时就要用到贝叶斯定理: 2. 朴素贝叶 ...
- 【机器学习实战】第4章 朴素贝叶斯(Naive Bayes)
第4章 基于概率论的分类方法:朴素贝叶斯 朴素贝叶斯 概述 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.本章首先介绍贝叶斯分类算法的基础——贝叶斯定理.最后,我们 ...
随机推荐
- On Using Very Large Target Vocabulary for Neural Machine Translation Candidate Sampling Sampled Softmax
[softmax分类器的加速器] https://www.tensorflow.org/api_docs/python/tf/nn/sampled_softmax_loss This is a fas ...
- import org.marker.weixin.DefaultSession; import org.marker.weixin.HandleMessageAdapter; import org.marker.weixin.MySecurity; import org.marker.weixin.msg.*;
需要以下微信包可以添加我的微信公众号 回复“微信api”即可得到jar链接,以及maven添加本地jar方法,以及更改后的源代码 import org.marker.weixin.DefaultSes ...
- 【linux】在linux挂在windows共享目录
mount -t cifs -o username=用户名,password='密码',vers=2.0 //windows共享目录 /linux挂载目录
- Java for LeetCode 134 Gas Station
There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You ...
- yhdsir@function:php
curl 获取页面信息 function curl_get_content($url){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $u ...
- TensorFlow Action(开山使用篇)
1.TensorFlow安装: 使用pip install tensorflow安装CPU版: 或使用pip install tensorflow-gpu==1.2.1指定版本安装GPU版. 2.Te ...
- HTML5/CSS3简易版俄罗斯方块游戏
在线演示 本地下载
- SDUT OJ 之 连通分量个数 (dfs)
数据结构实验:连通分量个数 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 在无向图中,如果从顶点vi到顶点vj有路径,则称vi ...
- c语言字符串 数字转换函数大全
最近学数据结构老是做实验 常用到字符串和数字的转换 想找却发现网上的资料太散 所以搜集整理一下 方便以后再用 atof(将字符串转换成浮点型数) atoi(将字符串转换成整型数) atol(将字符串转 ...
- shell命令自动分区提示
echo ’n p 1 +20M w’ | fdisk /dev/sda