数据科学个人笔记:贝叶斯分类器

一、前导内容

(一)贝叶斯决策论视角下的机器学习

1.设lambda(ij)为将cj的样本分类为ci所产生的损失,则将特征为X的样本分为ci的期望损失(条件风险)R(ci|X)=sum[lambda(ij)*P(cj|X)],我们的任务是找到一个输入特征X能输出类别y=ci的映射h,使得总体风险R(h)=Ex[R(h(x)|x)]最小化。
2.也就是说,我们可以将最优分类器(输入为X的函数)h*(X)表示为以下形式:

h*(x)=argmin_{all c}R(c|x)

即该分类器为这样一个映射,每个x输入后输出能使的x条件下分为该类别的条件风险最小的类别。此时h*称为贝叶斯最优分类器,与之对应的总体风险R(h*)称为贝叶斯风险。1-R(h*)代表分类器所能达到的最好性能,即通过机器学习所能产生的模型精度的理论上限。

若设lambda(ij)=1(i不等于j),则条件风险变为R(c|x)=1-p(c|x),则要使该条件风险最小,就要使p(c|x)最大,所以我们选取的h*(x)变为h*(x)= argmax_{all c}p(c|x)。

(二)判别模型与生成模型

1.无论是判别模型还是生成模型,其实其思路都是基于lambda(ij)=1的假设的,也就是假设将某类样本错分为其他任意一类的损失是相同的。

2.判别模型使用某个模型去近似p(y|x),训练完成后将x输入,则输出每个类别的条件概率,选条件概率最大的c就是输出的y。以上整个输入x——计算各个c的条件概率——选出输出的y,该过程即为判别模型中的分类器h(x)。

3.生成模型通常基于贝叶斯公式(简写为p(y|x)=p(x|y)*p(y)/p(x))来计算p(y|x),所以需要使用模型去近似两个东西:p(x|y)和p(y)(或者用模型去拟合p(x,y)),由于p(x)与类别无关,在之后最大化p(y|x)的过程中根本用不上它,所以只要令分子p(x|y)*p(y)=p(x,y)最大化即可。所以经常会说生成式模型近似的是p(x,y)。

生成模型中,p(c)称为先验,p(x|c)称为似然,p(x)是用于归一化的证据因子,要计算的p(c|x)称为后验。

P(c)根据大数定律可以用频率来近似,而p(x|c)直接根据样本初现的频率来估计将会遇到严重的困难,因为可能性为可取值数^特征数量个,这个值往往远大于样本数,就是说很多可能性在训练集中根本没有出现,因为未被观测到。

(三)求解p(x|c)的参数估计法

1.估计p(x|c)的一种常用策略是假定其具有某种确定的概率分布,再基于数据对该分布的参数进行参数估计。

2.对于参数估计,统计学界有:

(1)频率主义学派(认为参数虽然未知但存在客观固定值,可通过优化似然函数来求解)和

(2)贝叶斯学派(认为参数是未观察到的随机变量,可假定参数服从先验分布,然后基于数据来计算后验分布)

3.最大似然估计被证明当样本数量趋于无穷时,就收敛率而言是做好的渐进估计。当数据的真是分布被包括我进行参数估计的模型族中,且刚好对应一个theta时,最大似然估计在样本趋于无穷多时能收敛到参数的真实值(具有一致性)。有许多参数估计法具有一致性,但统计效率各不相同(在同样的样本量下有不同的估计误差)

(四)贝叶斯统计

1.贝叶斯学派先假设参数符合一个先验分布(主观决定),再利用数据的证据和贝叶斯公式计算后验分布。得到后验的p(theta|X)分布,预测p(x(m+1)|X)=积分(p(x(m+1)|theta)*p(theta|X))。数据有限时贝叶斯方法泛化较好,数据量大时计算代价较大。

2.最大后验估计(MAP):直接去后验概率最大的theta为点估计结果(不再保留整个分布)。后验概率最大即先验概率乘以p(X|theta)最大,也就是它们的对数相加最大。在线性回归中,若从贝叶斯map估计的角度看待W的估计,则添加l2正则化向相当于假设W的先验分布符合多元高斯分布(0,1/lambda*单位阵的平方)。

(五)基于极大似然估计求p(x|c)的方法:高斯判别分析(频率学派)

1.高斯判别分析是一种生成模型(拟合生成分布的模型),使用p(x|y)*p(y)/p(x)=p(y|x)来估计条件分布。该算法假设p(y)服从伯努利分布p(y)=fi^y*(1-fi)^(1-y)。而在y=0或y=1的条件下x服从多维正态分布。

p(x|y=1)服从N(mu0,方差矩阵),p(x|y=0)服从N(mu1,方差矩阵),两个条件分布的方差矩阵相同。

2.求解p(x|y)连乘对于各参数的对数似然,忽视p(x)(由数据集直接得到,与参数无关),则可用以上两个假设的分布来求解出各参数的极大似然。将参数代回就能得到在每个x情况下y等于0和1的p(y|x)。

 

二、朴素贝叶斯

(一)贝叶斯公式

1.全概率公式:P(X=x)=sum(P(X=x|Y=ck)*P(Y=ck))。

2.贝叶斯公式:P(Y=ck|X=x)=[P(X=x|Y=ck)*P(Y=ck)]/[sum(P(X=x|Y=ck)*P(Y=ck))]

(二)后验概率分布

所谓先验概率为无任何信息(条件)下每个类别出现的概率,即P(Y=ck),后验概率为对一些特征信息进行约束后每个类别出现的概率,即P(Y=ck|X=x)。朴素贝叶斯的算法目标是建立一个模型,使得每次得到一个新样本的特征信息,就能够计算出该样本属于每个类别的概率(后验概率分布)。朴素贝叶斯算法属于生成模型。

(三)条件独立假设

当我们需要计算P(X=x|Y=ck)时,计算量太大,故牺牲一定准确率,假设用于分类的特征在类确定的条件下都是条件独立的,即P(X=x|Y=ck)=连乘P(X(j)=x(j)|Y=ck)。

(四)计算后验概率的公式

1.P(Y=ck|X=x)

=P(X=x|Y=ck)/P(X=x)(条件概率公式)

=[P(X=x|Y=ck)*P(Y=ck)]/[sum(P(X=x|Y=ck)*P(Y=ck))](全概率公式)

=[P(Y=Ck)*连乘P(X(j)=x(j)|Y=ck)]/[sum(P(Y=Ck)*连乘P(X(j)=x(j)|Y=ck))](贝叶斯公式)

2.最大似然估计

(1)P(Y=Ck)的最大似然估计是该类别ck出现的比例。

(2)P(X(j)=x(j)|Y=ck)的最大似然估计是某个特征为该样本的值并且类别等于ck占类别等于ck的比例。

3.最终算法

遍历每个ck计算上式,令上式最大的即为输入样本的类别。由于分母对各类别不变,所以只需计算分子,即

【每次输入一个新样本时,遍历每个类ck并计算:P(Y=Ck)*连乘P(X(j)=x(j)|Y=ck),即计算该类别ck出现的比例*对各特征连乘(某个特征为该样本的值并且类别等于ck占类别等于ck的比例),哪个类别求出的值最大就选它】。

(五)贝叶斯估计

1.为解决P(X(j)=x(j)|Y=ck))为零的问题,使用贝叶斯估计P(X(j)=x(j)|Y=ck))=[sum(次数(x(j),y=ck))+lamda]/[sum(次数(y=ck))+特征j的可取值数量*lamda]。

2.Lamda>0通常取1,为拉普拉斯平滑。简化来说,p(c)=(|Dc|+1)/(|D|+类别数),p(xi|c)=(|Dc,xi|+1)/(|Dc|+i特征可能的取值)

(六)优缺点

朴素贝叶斯:优点:能运用于大型数据库中,方法简单,分类准确率高,速度快,所需估计的参数少,对于缺失数据不敏感。

缺点:假设一个属性对定类的影响独立于其他的属性值,这往往并不成立。(喜欢吃番茄、鸡蛋,却不喜欢吃番茄炒蛋)。

 

三、半朴素贝叶斯

朴素贝叶斯为了计算p(X|c)=连乘p(xi|c),也就是假设特征各自独立。半朴素贝叶斯分类器放松了这个假设,对特征之间的关系进行了其他的假设。独依赖估计(ODE)是最常用的一种策略,即每个属性最多依赖于一个其他属性。

1.最直接的基于ODE的算法为SPODE超父独依赖,设某个特征为超父,其他特征都依赖于它,则p(X|c)=连乘p(xi|c,超父)*p(超父)。可通过交叉验证来确定超父。

2.TAN算法全称树增强型朴素贝叶斯,基于最大带权树来假设特征间的以来关系。依赖关系的确定步骤如下:

(1)计算任意两个属性之间的条件互信息,I(xi,xj|y)=不同c求sum[p(ij|c)*log(p(ij|c)/p(i|c*p(j|c)))。

(2)以属性为结点构建完全图,互信息作为边的权重。

(3)构建此完全图的最大带权生成树,挑选根变量,将边置为有向。

(4)加入类别结点y,增加y到每个属性的有向边。

条件互信息刻画了属性ij在已知类别情况下的相关性,故TAN算法保留了强相关属性之间的依赖性。

3.AODE平均独依赖算法基于集成学习,通过将每个属性作为超父来构建SPODE,最终通过将具有足够训练数据支撑的SPODE集成起来作为最终结果。

 

四、贝叶斯网络(信念网络)(待完善)

1.贝叶斯网络的结构特点:借助有向无环图来刻画属性之间的依赖关系,并使用条件概率表来描述属性的联合概率分布。利用贝叶斯网络可以快速地知悉属性间的条件独立性,一个推两个为同父结构,两个推一个为V型结构,一推一推一为顺序结构,找出网络中所有V型结构并在两个父结点间加上一条无向边,并将有向边全改为无向边,得到道德图。在道德图中,若将某变量去除后,x和y分属两个连通分支,则称变量x和y在z确定时条件独立。

2.如何确定一个贝叶斯网络(待添加)

3.确定贝叶斯网络后如何进行推断:若Q={q1,q2,q3…}表示待查询变量,E={e1,e2,e3…}为证据变量,目标是计算后验概率P(Q=q|E=e)。使用Gibbs采样算法。对Q先随机赋一组值,然后依次选取Q中一个变量,根据Q并E得其他变量在上一时刻的取值代入贝叶斯网络,计算该变量等于各各个值的概率,选取概率最大的值作为该变量的更新值。迭代以上过程,每更新完一轮变量,看看当前的Q是否等于我们所要求的那个值,等于的话就计一次数。直到达到最大采样次数。用计数总和除以最大采样次数得到概率值。

4.实际上,吉布斯采样是在E=e的所有样本取值空间中进行随机漫步,每一步仅依赖于前一步的状态,是一个马尔可夫链。

你可能感兴趣的:(朴素贝叶斯,贝叶斯网络,高斯判别分析)