大数据实验室学习记录 第N次 打卡
根据自己的经验,由于是小白,一开始看不太懂西瓜书中的第七章贝叶斯相关知识,所以我把需要提前了解的小知识点给先放出来,如下:
先验概率(prior probability)
简单来说,就是指根据以往经验和分析得到的概率,即在事情发生之前,推测未来此事件发生概率。可看作“由因求果”。
举个通俗易懂的栗子:李华在成都春熙路观察了5周,发现每周末的时候好看的小姐姐最多,所以他打算以后每周末去春熙路,因为他根据以往的经验推测周末漂亮小姐姐多的概率比工作日大得多。
后验概率(posterior probability)
而后验概率是指在事情发生之后,依据得到的结果信息所计算出的最有可能是哪种原因导致发生,可看作“由果寻因”。
举个通俗的栗子:小明(李华的朋友)发现李华选择每周末去成都春熙路逛街,于是小明在想:选择周末去的原因有很多,比如周末小姐姐最多、周末发工资、周末才有时间等等,但是小明根据分析得出最有可能的原因是春熙路周末好看的小姐姐最多!
最大化后验准则(Maximum A Posterior ,MAP)
在对一个物体进行分类时,最直观的方法就是根据这个物体的特征,选择契合这个特征的类,这种思想就是MAP。通俗来讲就是根据此物体的特征,估计每个类在这个特征下的后验概率,然后选择后验概率最大的类!
举个通俗的栗子:好西瓜的特征是外观圆润、敲声清脆,那么我们就需要判断每一个西瓜的外观是否匹配圆润、敲声是否匹配清脆,从而判断这个西瓜是否属于好西瓜这一大类!
生成模型和判别模型
贝叶斯决策就属于生成模型,所谓 生成模型 就是分别对类的条件密度进行建模,然后利用贝叶斯公式计算后验概率。还比如概率图模型等。
判别模型 则是不经过概率推导,直接学习出后验概率,比如KNN、SVM等。
什么是贝叶斯决策论?
贝叶斯决策论是概率框架下实施决策的基本方法。
对于分类任务来说,在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。
分类
a.基于最小风险的贝叶斯决策
b.基于最小错误率的贝叶斯决策
为什么最小风险和最小错误率不一样?
因为在实际问题中,错误率最小并不是普遍适用的最佳选择,比如,医生把病人的正常细胞误诊为癌细胞,和把癌细胞误诊为正常细胞,两者带来的影响是完全不一样的,前者固然会给人带来一定不必要的痛苦,但是后者则可能使病人失去及早治疗的机会而遭受巨大损失。因此从不同性质的错误会引起不同程度的损失这一角度考虑出发,我们宁肯扩大一些总的错误,但也要使总的损失减少,即考虑风险。
假设由有N种类别标记,即 γ \gamma γ = {c1,c2,… ,cN}, λ \lambda λij是将一个真是标记为cj的样本误分类为ci所产生的损失。
基于后验概率P(ci | x)可获得将样本x分类为ci所产生的期望损失,即在样本x上的”条件风险“为:
任务是寻找一个判定准则 h:X–> γ \gamma γ 以最小化总体风险
显然,若对每个样本 x,h能最小化条件风险R(h(x) | x),则总体风险R(h)也将被最小化,即贝叶斯判定准则:为最小化总体风险,只需在每个样本上选择哪个能使条件风险 R(c | x)最小的类别标记:
此时,h* 被称为贝叶斯最优分类器,与之对应的总体风险R(h*) 称为贝叶斯风险。
1-R(h*) 反映了分类器所能达到的最好性能,即通过机器学习所能产生的模型精度理论上限。
误判损失 λ \lambda λ 可写为:
也就是说若预判正确了,则损失为0,若预判错误了,则损失为1.
此时x的条件风险就是1减去后验概率,即:
于是,基于最小错误率的贝叶斯最优分类器为:
即对每个样本x,选择能使后验概率P(c | x)最大的类别标记。
估计类条件概率的一种常用策略是先假定其具有某种确定的概率分布形式,再基于训练样本对概率分布的参数进行估计。
事实上,概率模型的训练过程就是参数估计过程。对于参数估计有两个学派:
本节介绍源自频率注意学派的极大似然估计(Maximum Likelihood Estimation,MLE),这是根据数据采样来估计概率分布参数的经典方法。
令Dc表示训练集D中第c类样本组成的集合,假设这些样本是独立同分布的,则参数 θ \theta θc对于数据集Dc的似然是:
对 θ \theta θc进行极大似然估计,就是去寻找能最大化似然P(Dc | θ \theta θc)的参数值 θ ^ \hat{\theta} θ^c.直观上看,极大似然估计是试图在 θ \theta θc所有可能的取值中,找到一个能使数据出现的“可能性”最大的值。
上面的式子连乘操作易造成下溢,通常使用对数似然(log-likelihood):
此时参数的 θ \theta θc的极大似然估计 θ ^ \hat{\theta} θ^c为:
举个栗子:
在连续属性情形下,假设概率密度函数服从正态分布,即p(x | c)~ N(uc, σ 2 \sigma^{2} σ2),则参数uc和 σ 2 \sigma^{2} σ2的极大似然估计为:
也就是说,通过极大似然法得到的正态分布均值就是样本均值,方差就是(x- u ^ \hat{u} u^c)(x- u ^ \hat{u} u^c) T ^T T的均值。
基于贝叶斯公式来估计后验概率P(c | x)的主要困难在于:类条件概率P(x | c)是所有属性上的联合概率,难以从有限的训练样本直接估计而得,为避开这个障碍,朴素贝叶斯分类器采用了“属性条件独立性假设”:对已知类别,假设所有属性相互独立,即假设每个属性独立的对分类结果产生影响。
则基于属性条件独立性假设,贝叶斯公式可重写为:
其中d为属性数目,xi为x在第i个属性上的取值。
由于对所有类别来说P(x)相同,因此贝叶斯判定准则为(朴素贝叶斯分类器的表达式):
其中,P©为先验概率,P(xi | c)为估计的每个属性的条件概率
令Dc表示训练集D中第c类样本组成的集合,且有充足的独立同分布样本,则估计先验概率为:
对于离散属性而言,令Dc,xi表示Dc中在第i个属性上取值为xi的样本组成的集合,则条件概率可估计为:
对于连续属性可考虑概率密度函数,假定服从正态分布,则有:
举个栗子
数据集如下,要求对测试例进行判断是好瓜还是坏瓜:
测试例:
解:
第一步(估计类先验概率):
P(好瓜 = 是)= 8/17 ≈ \approx ≈ 0.471
P(好瓜 = 否)= 9/17 ≈ \approx ≈ 0.529
第二步(为每个属性估计条件概率):
P青绿|是 = P(色泽 = 青绿 | 好瓜 = 是)= 3/8 = 0.375
P蜷缩|是 = 5/8 = 0.625
P浊响|是 = 6/8 = 0.750
P清晰|是 = 7/8 = 0.875
P凹陷|是 = 6/8 = 0.750
P硬滑|是 = 6/8 = 0.750
P青绿|否 = P(色泽 = 青绿 | 好瓜 = 否)=3/9 ≈ \approx ≈ 0.333
P蜷缩|否 = 3/9 ≈ \approx ≈ 0.333
P浊响|否 = 4/9 ≈ \approx ≈ 0.444
P清晰|否 = 2/9 ≈ \approx ≈ 0.222
P凹陷|否 = 2/9 ≈ \approx ≈ 0.222
P硬滑|否 = 6/9 ≈ \approx ≈ 0.667
第三步(计算后验概率):
P(好瓜 = 是)x P青绿|是 x P蜷缩|是 x P浊响|是 x P清晰|是 x P凹陷|是 x P硬滑|是 x P密度:0.697|是 x P含糖:0.460|是 x ≈ \approx ≈ 0.038
P(好瓜 = 否)x P青绿|否 x P蜷缩|否 x P浊响|否 x P清晰|否 x P凹陷|否 x P硬滑|否 x P密度:0.697|否 x P含糖:0.460|否 x ≈ \approx ≈ 6.80 x 10 − 5 ^{-5} −5
由于0.038 > 6.80 x 10 − 5 ^{-5} −5,因此,朴素贝叶斯分类器将测试样本判别为“好瓜”
注意:若某个属性值在训练集中没有与某个类同时出现过,则直接导致第二步属性条件概率估计为0,比如:
因此,无论该样本的其他属性是什么,哪怕其他属性明显是好瓜,分类的结果也都将是“坏瓜”,显然不合理。
所以,为了避免其他属性携带的信息被训练集中未出现的属性值抹去,在估计概率时通常要进行“平滑“,常用”拉普拉多修正“,即:
如:
类先验概率可估计为:
P(好瓜 = 是)= (8+1)/(17+2) ≈ \approx ≈ 0.474
半朴素贝叶斯分类器的基本想法是适当考虑一部分属性间的相互依赖信息,从而既不需要进行完全概率联合计算,又不至于彻底忽略了比较强的属性依赖关系。
”独依赖估计“(One-Dependent Estimation ,ODE)是半朴素贝叶斯分类器最常用的一种策略,也就是指假设每个属性在类别之外最多仅依赖于一个其他属性,即:
其中,pai为属性xi 所依赖的属性,称为xi 的父属性,此时,对每个属性xi ,若其父属性pai 已知,则可采用下式来估计概率值P(xi | c,pai ),于是,问题的关键转化为如何确定每个属性的父属性,不同的做法产生不同的独立依赖分类器。
最直接的做法是假设所有属性都依赖于同一个属性,称为”超父“,然后通过交叉验证等模型选择方法来确定超父属性,由此,形成了SPODE方法,比如下面b图的x1就是超父属性:
TAN则是在最大带权生成树算法的基础上,通过以下步骤将属性间的依赖关系约简为上图c中所示树形结构:
(1)计算任意两个属性之间的条件互信息(conditional mutual information)
(2)以属性为结点构建完全图,任意两个结点之间边的权重设为 I(xi ,xj | y);
(3)构建此完全图的最大带权生成树,挑选根变量,将边置为有向;
(4)加入类别结点y,增加从y到每个属性的有向边。
可以看出,条件互信息 I(xi ,xj | y)刻画了属性xi 和xj 在已知类别情况下的相关性,因此,通过最大生成树算法,TAN实际上仅保留了强相关属性之间的依赖性。
AODE是一种基于集成学习机制、更为强大的独立依赖分类器,与SPODE通过模型选择确定超父属性不同,AODE尝试将每个属性作为超父属性来构建SPODE然后将那些具有足够训练数据支撑的SPODE集成起来作为最终结果,即:
其中Dxi 是在第i个属性上取值为xi 的样本集合,m’为阈值常数,显然,AODE需要估计P(c,xi)和P(xj | c,xi),有:
其中Ni 是第i个属性可能的取值数,Dc,xi 是类别为c且在第 i 个属性上取值为xi 的样本集合,Dc,xi,xj 是类别为c且在第 i 和第 j 个属性上取值分别为xi 和 xj 的样本集合。例如,对西瓜数据集3.0有:
与朴素贝叶斯分类器相似,AODE的训练过程也是”计数“,且无模型选择,既能通过预计算节省预测时间,也能采取懒惰学习方法在预测学习时再进行计数,并且易于实现增量学习。
一个贝叶斯网 B 由结构G和参数 Θ \Theta Θ 两部分构成,即B = < G, Θ \Theta Θ >,网络结构G是一个有向无环图,其每一个节点对应一个属性,若两个属性有直接依赖关系,则它们由一条边连接起来;参数 Θ \Theta Θ 包含了每个属性的条件概率表。
举个栗子:
从网络结构可以看出,”色泽“直接依赖于”“好瓜” 和“甜度”,而“根蒂”则直接依赖于“甜度”;进一步从条件概率表能得到“根蒂”对“甜度”量化依赖关系,如P(根蒂 = 硬挺 | 甜度 = 高)= 0.1等。
什么是EM算法?
是常用的估计参数隐变量的利器,是一种迭代式的方法,一种非梯度优化方法,包括期望和最大化两个步骤。
为什么会有EM算法?
在前面的讨论中,我们一直假设训练样本所有属性变量的值都已被观测到,即训练样本是“完整”的。但显示应用中往往会遇到“不完整”的训练样本,例如由于西瓜的根蒂已经脱落,无法看出是“蜷缩”还是“硬挺”,则训练样本的“根蒂”属性变量值未知,在这种存在”未观测“变量的情形下,是否仍然能对模型参数进行估计呢?
未观测变量的学名是“隐变量”,令X表示已观测变量集,Z表示隐变量集, Θ \Theta Θ 表示模型参数。若欲对 Θ \Theta Θ 做极大似然估计,则应最大化对数似然:
然而由于Z是隐变量,上式无法直接求解,此时我们可以通过对Z计算期望,来最大化已观测数据的对数“边际似然”:
于是,以初始值 Θ \Theta Θ 为起点,对上式可迭代至收敛:
这就是EM算法的原型。
若我们不是取Z 的期望,而是基于 Θ t \Theta^{t} Θt 计算隐变量Z的概率分布P(Z | X, Θ t \Theta^{t} Θt),则EM算法的两个步骤是:
事实上,隐变量估计问题也可通过梯度下降等优化算法求解,但由于求和的项数将随着隐变量的数目以指数级上升,会给梯度计算带来麻烦;而EM算法则可以看作一种非梯度优化算法!!!
周志华——《机器学习》
blacklee123(csdn博主)——”贝叶斯(Bayes)决策理论“