朴素贝叶斯分类、半朴素贝叶斯分类算法
贝叶斯分类
- 朴素贝叶斯分类
- 半朴素贝叶斯分类
朴素贝叶斯分类
从下面问题来认识一下朴素贝叶斯分类。
问题背景:
假设你是一家电脑店的老板,陆续有人从你这里买到电脑,但也有人不会选择你这家店。如果此时你店里来了几个顾客,如果能事先知道哪些人会购买你的电脑,这无疑对你是一个很大的帮助。
分析:
假设你随机选取了50个来过你店里的顾客,其中有买电脑的和没有买的,你之前都观察了解了这50个顾客的相关特征,比如有年龄、收入状况和是否爱打游戏。这样你就得到了类似以下数据(部分):
顾客编号 | 年龄 | 收入状况 | 是否爱打游戏 | 是否购买电脑 |
---|---|---|---|---|
1 | 大 | 高 | 是 | 是 |
2 | 中 | 低 | 否 | 否 |
3 | 中 | 高 | 是 | 否 |
4 | 中 | 低 | 否 | 是 |
5 | 大 | 中 | 是 | 是 |
… | … | … | … | … |
通过这张表格就可以分析买电脑的顾客的特征,可以得出买电脑的顾客对应特征具体概率,如在以上5个样本中,购买电脑的顾客收入状况高的概率是1/3,年龄大的概率是2/3,这个称之为条件概率;还可以得到顾客买电脑的为3/5,这个称之为先验概率。当来了一个新顾客时,假设他的特征分别是中、高、是,那么根据我们已有的顾客数据是否可以得出这个新顾客买电脑的概率(也就是我们要求的后验概率)呢?
这里就要用到贝叶斯公式,具体公式如下:
P(A∣B)=P(A,B)P(B)=P(B∣A)P(A)P(B)P(A|B)=\frac{P(A,B)}{P(B)}=\frac{P(B|A)P(A)}{P(B)}P(A∣B)=P(B)P(A,B)=P(B)P(B∣A)P(A)
语言解释就是事件B发生的条件下事件A发生的概率是事件A发生的条件下事件B发生的概率乘上事件A发生的概率除以事件B发生的概率。将右边式子分母乘到左边,就会发现左右两边就是事件A,B同时发生的概率。
将以上公式运用于分类上就是:
P(c∣x)=P(x∣c)P(c)P(x)P(c|x)=\frac{P(x|c)P(c)}{P(x)}P(c∣x)=P(x)P(x∣c)P(c)
其中P(x∣c)P(x|c)P(x∣c)表示第c类样本组成的集合中样本x发生的概率,P(c)P(c)P(c)表示训练集中类别为c的样本的概率。
可以发现,我们能轻易地得到P(c)、P(x)P(c)、P(x)P(c)、P(x),对P(x∣c)P(x|c)P(x∣c)却很难估计,为此,贝叶斯分类就加上了“朴素”二字,我们知道样本x包含多个特征,朴素贝叶斯的重要假定就是所有特征相互独立,每个特征独立的对分类结果发生影响,如我们上面数据中的年龄、收入、爱打游戏都能独立对顾客是否购买电脑产生影响。
于是上述的公式就变成:
P(c∣x)=P(x∣c)P(c)P(x)=P(c)P(x)∏i=1dP(xi∣c)P(c|x)=\frac{P(x|c)P(c)}{P(x)}=\frac{P(c)}{P(x)}\prod_{i=1}^dP(x_i|c)P(c∣x)=P(x)P(x∣c)P(c)=P(x)P(c)i=1∏dP(xi∣c)
其中d为特征数目,xix_ixi表示样本x在第i个特征下的取值。将第c个类别的每个特征下该样本取值发生的概率相乘就是在第c个类别下该样本发生的概率。由于P(x)P(x)P(x)与类别无关,故只需要研究P(c)∏i=1dP(xi∣c)P(c)\prod_{i=1}^dP(x_i|c)P(c)∏i=1dP(xi∣c)即可。
若能找到一个类别c,使P(c∣x)P(c|x)P(c∣x)最大,我们就将样本x标记为c。所以朴素贝叶斯分类器的表达式如下:
hnb(x)=argmaxc∈yP(c)∏i=1dP(xi∣c)h_{nb}(x)=\underset {c\in{y}}{argmax}P(c)\prod_{i=1}^dP(x_i|c)hnb(x)=c∈yargmaxP(c)i=1∏dP(xi∣c)
其中P(c)P(c)P(c)就是c类样本个数占总样本的比例,写成:P(c)=∣Dc∣∣D∣P(c)=\frac{|D_c|}{|D|}P(c)=∣D∣∣Dc∣,DcD_cDc表示训练集D中第c类样本的集合。
下面估计P(xi∣c)P(x_i|c)P(xi∣c),对不同类型的数据有不同的方法:
1),离散型特征数据:
P(xi∣c)=∣Dc,xi∣∣Dc∣P(x_i|c)=\frac{|D_{c_,x_i}|}{|D_c|}P(xi∣c)=∣Dc∣∣Dc,xi∣
Dc,xiD_{c_,x_i}Dc,xi表示DcD_cDc中样本第i个特征下取值为xix_ixi的集合,整体表示第c类样本中的第i个特征取值为xix_ixi的个数占总第c类样本的个数。
2),连续型特征数据:
由于连续型数据无法像离散型数据一样度量频数,如上面的年龄特征改成体重,故要引入概率密度函数。
朴素贝叶斯假定一类样本的连续型特征数据服从正态分布,均值和标准差分别是第c类样本在该特征下的均值和方差,则由正态分布概率密度函数有:
p(xi∣c)=12πσc,iexp(−(xi−μc,i)22σc,i2)p(x_i|c)=\frac{1}{\sqrt{2{\pi}}\sigma_{c,i}}exp(-\frac{(x_i-\mu_{c,i})^2}{2\sigma_{c,i}^2})p(xi∣c)=2πσc,i1exp(−2σc,i2(xi−μc,i)2)
其中μc,i,σc,i\mu_{c,i},\sigma_{c,i}μc,i,σc,i表示第c个类别样本组成的集合中第i个特征(为连续型特征)的均值与方差。
问题解决
回到我们的问题上,为了计算方便,就假设前面5个样本就是我们的训练样本(实战中并不可能),假设现在出现了一个顾客,通过观察或沟通了解到他的特征如下:
顾客编号 | 年龄 | 收入状况 | 是否爱打游戏 | 是否购买电脑 |
---|---|---|---|---|
51 | 中 | 高 | 是 | ? |
将买电脑的类别标记为0,不买电脑的类别标记为1,这个新顾客编号为51。
他买电脑的概率是:P(c=0∣x=51)=P(c=0)P(x)∏i=13P(xi∣c=0)=35×13×13×23P(x)=2/45P(x)P(c=0|x=51)=\frac{P(c=0)}{P(x)}\prod_{i=1}^3P(x_i|c=0)=\frac{\frac{3}{5}\times\frac{1}{3}\times\frac{1}{3}\times\frac{2}{3}}{P(x)}=\frac{2/45}{P(x)}P(c=0∣x=51)=P(x)P(c=0)i=1∏3P(xi∣c=0)=P(x)53×31×31×32=P(x)2/45
他不买电脑的概率是:P(c=1∣x=51)=P(c=1)P(x)∏i=13P(xi∣c=1)=25×1×12×12P(x)=1/10P(x)P(c=1|x=51)=\frac{P(c=1)}{P(x)}\prod_{i=1}^3P(x_i|c=1)=\frac{\frac{2}{5}\times1\times\frac{1}{2}\times\frac{1}{2}}{P(x)}=\frac{1/10}{P(x)}P(c=1∣x=51)=P(x)P(c=1)i=1∏3P(xi∣c=1)=P(x)52×1×21×21=P(x)1/10
其中P(x)P(x)P(x)与类别无关,可以不考虑,很明显P(c=0∣x=51)<P(c=1∣x=51)P(c=0|x=51)<P(c=1|x=51)P(c=0∣x=51)<P(c=1∣x=51),该名新顾客不买电脑的概率了大于买电脑的概率,故我们可以初步认定该名新顾客不会购买电脑。
新问题出现
若现在店里又来了一个顾客,其特征如下表:
顾客编号 | 年龄 | 收入状况 | 是否爱打游戏 | 是否购买电脑 |
---|---|---|---|---|
52 | 大 | 高 | 是 | ? |
此时显然根据我们现有的数据看出,P(x1=大∣c=1)=0P(x_1=大|c=1)=0P(x1=大∣c=1)=0,若我们再按照前面的方法计算该顾客不购买电脑的概率时,无论该顾客其他特征如何,其不购买电脑的概率始终是0,但这显然不符合现实。这个问题出现的原因就是训练集中类别里样本并不完整,没有代表全部的可能性。
问题解决
解决这一问题的方法是“拉普拉斯修正”,它针对先验概率P(c)P(c)P(c)与条件概率P(xi∣c)P(x_i|c)P(xi∣c)进行修正,修正后的式子如下(仅针对于离散型特征):
P^(c)=∣Dc∣+1∣D∣+N\hat{P}(c)=\frac{|D_c|+1}{|D|+N}P^(c)=∣D∣+N∣Dc∣+1
P^(xi∣c)=∣Dc,xi∣+1∣Dc∣+Ni\hat{P}(x_i|c)=\frac{|D_{c,x_i}|+1}{|D_c|+N_i}P^(xi∣c)=∣Dc∣+Ni∣Dc,xi∣+1
其中NNN为训练集D中可能的类别数,如我们这里就是购买与不购买两种类别(N=2);NiN_iNi表示第i个特征可能的取值数,如这里特征年龄可能取值为大、中(NiN_iNi=2)。
此时再次估计第52为顾客的不购买电脑概率为:
P(c=1∣x=52)=37×14×25×24P(x)=3/140P(x)P(c=1|x=52)=\frac{\frac{3}{7}\times\frac{1}{4}\times\frac{2}{5}\times\frac{2}{4}}{P(x)}=\frac{3/140}{P(x)}P(c=1∣x=52)=P(x)73×41×52×42=P(x)3/140
半朴素贝叶斯分类
前面提过,朴素贝叶斯为了简化条件概率的计算,提出的一个假设就是各特征间相互独立,但该假设在现实中很难实现。于是人们对该假设进行放松,考虑部分属性间的相互依赖,从而形成了“半朴素贝叶斯分类”。
假设,每个属性在类别之外最多依赖于一个其他属性,也称为独依赖:
P(c∣x)∝P(c)∏i=1dP(xi∣c,pai)P(c|x)\propto P(c)\prod_{i=1}^dP(x_i|c,pa_i)P(c∣x)∝P(c)i=1∏dP(xi∣c,pai)
其中paipa_ipai为样本在第i个属性所依赖的属性上的取值,被依赖的属性称为父属性,∝\propto∝意思是成正比,P(xi∣c,pai)P(x_i|c,pa_i)P(xi∣c,pai)表示在第c类别与paipa_ipai同时发生下xix_ixi发生的概率,可由前面的拉普拉斯修正得到。此时问题就变成如何确定父属性(papapa)。
1)SPODE方法
假设所有属性都依赖于同一个属性,称为“超父”,通过交叉验证确定“超父”,固定了公式里的papapa,如(图b)所示(来自周志华《机器学习》),x1x_1x1作为唯一的超父。
2)AODE方法
AODE尝试将每个属性作为超父来构建SPODE,将拥有足够训练数据支撑的SPODE集成作为最终结果,公式如下:
P(c∣x)∝∑i=1d∣Dxi∣≥m′P(c,xi)∏j=1dP(xj∣c,xi)P(c|x)\propto \underset{|D_{x_i}|\geq m^{'}}{\sum_{{i=1}}^{d}}P(c,x_i)\prod_{j=1}^dP(x_j|c_,x_i)P(c∣x)∝∣Dxi∣≥m′i=1∑dP(c,xi)j=1∏dP(xj∣c,xi)
上述公式可以与上面一个公式对照一下,其中DxiD_{x_i}Dxi表示第i个属性上值为xix_ixi的样本的集合,m′m^{'}m′为阈值常数,对前面集合的阈值要求,若DxiD_{x_i}Dxi中样本数小于m′m^{'}m′,则不将该属性作为超父。P(c,xi),P(xj∣c,xi)P(c,x_i),P(x_j|c_,x_i)P(c,xi),P(xj∣c,xi)有以下定义(可类比拉普拉斯修正):
P(c,xi)=∣Dc,xi∣+1∣D∣+N×NiP(c,x_i)=\frac{|D_{c,x_i}|+1}{|D|+N\times N_i}P(c,xi)=∣D∣+N×Ni∣Dc,xi∣+1
P(xj∣c,xi)=∣Dc,xi,xj∣+1∣Dc,xi∣+NjP(x_j|c_,x_i)=\frac{|D_{c,x_i,x_j}|+1}{|D_{c,x_i}|+N_j}P(xj∣c,xi)=∣Dc,xi∣+Nj∣Dc,xi,xj∣+1
其中N是D中可能的类别数,NiN_iNi是第i个属性可能的取值数,NjN_jNj同理,Dc,xiD_{c,x_i}Dc,xi是类别为第c类且在第i属性上取值为xix_ixi的集合,Dc,xi,xjD_{c,x_i,x_j}Dc,xi,xj同理。
《机器学习》读书笔记 思考 2021/7/25
朴素贝叶斯分类、半朴素贝叶斯分类算法相关推荐
- 机器学习基础(六):贝叶斯分类(贝叶斯决策论、朴素/半朴素贝叶斯分类器、贝叶斯网、EM算法)
6.贝叶斯分类 6.1贝叶斯决策论Bayesian decision theory 概率框架下实施决策的基本方法. 对分类任务来说,在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如何基于这些概率和 ...
- 【贝叶斯分类3】半朴素贝叶斯分类器
文章目录 1. 朴素贝叶斯分类器知识回顾 1.1 类别,特征 1.2 风险,概率 1.3 类条件概率 2. 半朴素贝叶斯分类器学习笔记 2.1 引言 2.2 知识卡片 2.3 半朴素贝叶斯分类器 2. ...
- 【机器学习】贝叶斯分类(通过通俗的例子轻松理解朴素贝叶斯与半朴素贝叶斯)
贝叶斯分类 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法.这篇文章我尽可能用直白的话语总结一下我们 ...
- 朴素贝叶斯分类器之天气预测算法
朴素贝叶斯分类器之天气预测算法 1.1 题目的主要研究内容 (1)根据天气情况预测要不要去打网球 1.2 题目研究的工作基础或实验条件
- 【ML】贝叶斯分类和朴素贝叶斯分类
一.介绍 贝叶斯定理是英国数学家托马斯·贝叶斯提出的,为了解决一个"逆概率"问题. 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.而朴素贝叶斯分 ...
- 【AI数学原理】概率机器学习(四):半朴素贝叶斯之TAN算法实例
概率机器学习的系列博文已经写到第四篇了,依然关注者乏.虽说来只是自己的学习记录,不过这样下去显得自己贡献值比较低下.于是今天换一种模式来写博文--结合代码实现. 欢迎各位指点交流~ 预备知识: 1.朴 ...
- 朴素贝叶斯 半朴素贝叶斯_使用朴素贝叶斯和N-Gram的Twitter情绪分析
朴素贝叶斯 半朴素贝叶斯 In this article, we'll show you how to classify a tweet into either positive or negativ ...
- 朴素贝叶斯和AODE算法详解
文章目录 一.实验要求 (1)实验目的 (2)数据集简介 (3)实验内容 (4)评价指标 二.数据集的划分 三.朴素贝叶斯 (1)朴素贝叶斯原理 (2)拉普拉斯修正 (3)函数变量解析 (4)代码如下 ...
- ML之NB:朴素贝叶斯Naive Bayesian算法的简介、应用、经典案例之详细攻略
ML之NB:朴素贝叶斯Naive Bayesian算法的简介.应用.经典案例之详细攻略 目录 朴素贝叶斯Naive Bayesian算法的简介 1.朴素贝叶斯计算流程表述 2.朴素贝叶斯的优缺点 2. ...
最新文章
- 人工智能基准(Benchmarking)再思考
- Java中六大时间类的使用和区别
- ubuntu终端切换快捷键
- HTML5_0 笔记
- ZooKeeper安装过程
- RS-485中继器的多种使用方法
- 【LeetCode 总结】Leetcode 题型分类总结、索引与常用接口函数
- view中显示部分区域
- Realme首款5G手机真我X50官宣:支持SA/NSA双模5G
- C++自学07:字符串(char/string/wchar_t/char16_t/char32_t)
- etherlime-3-Etherlime Library API-Deployed Contract Wrapper
- QThread多线程编程分析
- 【IT之路】LoadRunner系列-Loadrunner 11破解汉化
- 使用php制作wap网站
- java 读取485_java通信 485
- sklearn实现决策树
- 机器学习之朴素贝叶斯、贝叶斯信念网络
- 小白必看——炒币术语大盘点
- Knowledge Embedding Based Graph Convolutional Network
- 目前 流行到 TTS软件 和 发音库
热门文章
- with recursive用法
- staticmethod静态方法有什么作用(含例子运用)
- c语言中sin67 怎么表示,sin68°sin67°-sin23°cos68°的值为( )A.-22B.22C.32D.1 - 作业在线问答...
- jmeter ip 欺骗
- listen的backlog值分析
- 计算机基础进制的换算教案,计算机系统基础(二)数值进制和进制转换
- 领英让出的市场,有谁能补位成功?
- viper4android md,【超级街霸4安卓版】超级街霸4安卓完整移植版游戏下载-街机中国...
- 解决Hyperledger Fabric通道重复创建问题( readset expected key [Group] /Channel/Application at version 0, but )
- Machine Learning Basics