精华内容
下载资源
问答
  • 贝叶斯定理:贝叶斯定理起初是为了解决逆概率的问题,通过现象倒推本质,比如,如果在一个黑箱里摸球,箱中有3个红球7个黑球,可以轻易得出摸出红球的概率是0.3,现在假设不知道盒中有多少个黑球多少个红球,通过...

    目录

    1 前置概念

    2 朴素贝叶斯算法

    3 拉普拉斯平滑

    4 总结


    1 前置概念

    • 先验概率:在不知道事务特征的情况下,根据以往的经验,判断出这件事发生的概率,这个概率就是先验概率,即:P(y)=\phi_y
    • 后验概率:与先验概率相对应,是知道了事务特征判断出来的从而得出的事件发生的概率就是后验概率,即:P(y|x)=\phi_{x|y}
    • 联合概率:两件事同时发生的改率,比如A发生且B发生,可以写作:P(A,B)
    • 贝叶斯定理:贝叶斯定理起初是为了解决逆概率的问题,通过现象倒推本质,比如,如果在一个黑箱里摸球,箱中有3个红球7个黑球,可以轻易得出摸出红球的概率是0.3,现在假设不知道盒中有多少个黑球多少个红球,通过不断的摸球,不断的计算,摸球,再修正自己的结果,最终可以预测到黑盒中红球和黑球的比例。

    贝叶斯公式如下:

    $$ P\left( A|B \right) =\frac{P\left( A \right) P\left( B|A \right)}{P\left( B \right)} $$

    分析这个公式,可以得到很多有意思的事情。首先P(A)叫做先验概率,P(A|B)叫做后验概率,而剩余的部分则剩下了:$$ \frac{P\left( B|A \right)}{P\left( B \right)} $$,观察这个部分,因为我们知道,条件概率公式是:$$ P\left( B|A \right) =\frac{P\left( A,B \right)}{P\left( A \right)} $$,即两事件的联合概率比上作为条件的那个事件单独的概率,带入条件概率公式可以得到剩余部分变成了:$$ \frac{P\left( A,B \right)}{P\left( A \right) \cdot P\left( B \right)} $$

    此时,分析A事件和B事件的关系可以得到:

    • 当A,B相互独立的时候,P(A)\cdot P(B)=P(A,B),此时$$ \frac{P\left( B|A \right)}{P\left( B \right)}=1 $$,后验概率就等于先验概率。
    • 当A,B相交时,两者存在重叠部分,P(A)\cdot P(B)> P(A,B),此时$$ \frac{P\left( B|A \right)}{P\left( B \right)}< 1 $$,后验概率就小于先验概率。
    • 当A,B相包含时,P(A)=P(A,B),或P(B)=P(A,B),此时$$ \frac{P\left( B|A \right)}{P\left( B \right)}> 1 $$,后验概率就大于于先验概率。

    画出文氏图可以很清楚的看出这三种情况:

    因此这个剩余部分$$ \frac{P\left( B|A \right)}{P\left( B \right)} $$起到一个修正先验概率的作用,因此叫做可能性函数。

    2 朴素贝叶斯算法

    朴素贝叶斯是一种生成式模型,是在贝叶斯算法上做了简化,即假设定给定目标值的条件下,各个特征相互独立,这个简化使得各个特征对分类结果的影响较为平均,一定程度上降低了分类器的分类效果,但是极大的简化了算法的复杂度。引入CS229中的例子做解释。

    使用朴素贝叶斯做垃圾邮件的分类器,首先构建特征向量,用特征向量来描述一封邮件。选取字典或者历史邮件中嘴常用的10000个词,一封邮件中出现的词标为1,未出现的词标为0,这样就得到了一个10000维的向量,每个元素的值为0或1,这个向量就是可以用来描述一封邮件的特征向量。

    其中,x_i 是向量中第 i 个元素,$$ x_i=1\left\{ word\ i\ appears\ in\ email \right\} $$

    目标是建模计算出 P(x|y) 和 P(y) ,然后根据这两项计算出P(x)$$ P\left( x \right) =\sum_{k=1}^K{P\left( x|y_k \right) P\left( y_k \right)} $$,这样就可以使用贝叶斯公式计算出后验概率了。首先使用朴素贝叶斯的假设,假设 x_i 给定 y 的情况下,是相互独立的,因此:

    $$ P\left( x_1,x_2,x_3,...,x_i|y \right) =P\left( x_1|y \right) P\left( x_2|y \right) P\left( x_3|y \right) ...P\left( x_i|y \right) =\prod_{i=1}^n{P\left( x_i|y \right)} $$

    模型参数化:

    $$ \phi _{i|y=1}=P\left( x_i=1|y=1 \right) $$

    $$ \phi _{i|y=0}=P\left( x_i=1|y=0 \right) $$

    $$ \phi _y=P\left( y=1 \right) $$

    由此写出联合似然函数:

    $$ \mathcal{L}\left( \phi _y,\phi _{i|y=0},\phi _{i|y=1} \right) =\prod_{i=1}^m{P\left( x^{\left( i \right)},y^{\left( i \right)} \right)} $$

    使用极大似然估计法求解得到:

    $$ \phi _{j|y=1}=\frac{\sum_{i=1}^m{1\left\{ x_{j}^{\left( i \right)}=1\land y^{\left( i \right)}=1 \right\}}}{\sum_{i=1}^m{1\left\{ y^{\left( i \right)}=1 \right\}}} $$

    $$ \phi _{j|y=0}=\frac{\sum_{i=1}^m{1\left\{ x_{j}^{\left( i \right)}=1\land y^{\left( i \right)}=0 \right\}}}{\sum_{i=1}^m{1\left\{ y^{\left( i \right)}=0 \right\}}} $$

    $$ \phi _y=\frac{\sum_{i=1}^m{1\left\{ y^{\left( i \right)}=1 \right\}}}{m} $$

    因此,使用贝叶斯公式计算概率如下:

    $$ P\left( y=1|x \right) =\frac{P\left( x|y=1 \right) P\left( y=1 \right)}{P\left( x \right)} $$ $$ =\frac{\left( \prod_{i=1}^n{p\left( x_i|y=1 \right)} \right) P\left( y=1 \right)}{\left( \prod_{i=1}^n{P\left( x_i|y=1 \right)} \right) P\left( y=1 \right) +\left( \prod_{i=1}^n{P\left( x_i|y=0 \right)} \right) P\left( y=0 \right)} $$

    由此计算出后概率,选择后验概率最高的类就是朴素贝叶斯的分类结果。

    但是这个计算方法有一个致命的问题,就是假如有一个单词第一次出现,他在特征向量中的索引是 a (随便取的字母无特殊含义),那么 \phi_{a|y=1}=0\phi_{a|y=0}=0,也就是说P(x_a=1|y=1)=0P(x_a=1|y=0)=0,这就导致带入贝叶斯公式后分子分母均为0,导致模型崩溃。

    3 拉普拉斯平滑

    为解决上提到的问题,引入了Laplace Smoothing。假设y的取值有k个,引入之后公式做如下调整:

    $$ \phi _y=\frac{\sum_{i=1}^m{1\left\{ y^{\left( i \right)}=1 \right\}}+1}{m+k} $$

    即在分母加上y的取值范围大小,在分子加上1,分子+1是防止概率为0,分母+分类数是为了使得所有概率相加等于1。

    修正各分量的公式如下:

    $$ \phi _{j|y=1}=\frac{\sum_{i=1}^m{1\left\{ x_{j}^{\left( i \right)}=1\land y^{\left( i \right)}=1 \right\}}+1}{\sum_{i=1}^m{1\left\{ y^{\left( i \right)}=1 \right\}}+2} $$

    $$ \phi _{j|y=0}=\frac{\sum_{i=1}^m{1\left\{ x_{j}^{\left( i \right)}=1\land y^{\left( i \right)}=0 \right\}}+1}{\sum_{i=1}^m{1\left\{ y^{\left( i \right)}=0 \right\}}+2} $$

    4 总结

    朴素贝叶斯是一个非常简单,非常 “quick and dirty” 的算法,他不需要多次迭代来学习数据,只需要计数就可以得出预测结果。写完这个博客感觉有点不知所云,所以我再来总结一下。

    首先朴素贝叶斯最核心的一个思想就是朴素贝叶斯假设,也叫做条件独立性假设。朴素贝叶斯是一个最简单的概率图模型之一,概率图模型去解释最为简单明了,是一个y到x的有向概率图。或者也可以简单理解为在给定目标值y的情况下,各个特征x之间是相互独立的,用上面的例子解释就是,在一封邮件中,假设各个单词的出现概率是相互独立的,一个单词的出现对其他单词没有影响。这个假设的唯一目的就是为了简化计算,当特征数量足够多的时候,如果不使用这个假设,计算量会十分庞大。公式如下:

    $$ P\left( x_1,x_2,x_3,...,x_i|y \right) =P\left( x_1|y \right) P\left( x_2|y \right) P\left( x_3|y \right) ...P\left( x_i|y \right) =\prod_{i=1}^n{P\left( x_i|y \right)} $$

    整个预测的核心方法就是使用贝叶斯定理对后验概率进行计算,就是计算在给定特征的条件下,预测目标取得各个目标值的概率:$$ P\left( y|x \right) $$

    $$ P\left( y|x \right) =\frac{P\left( y \right) P\left( x|y \right)}{P\left( x \right)} $$

    其中,y如果取值是0或1,则是服从伯努利分布,如果y的取值范围为多个类别,则是服从类别分布(categorial distribution);如果x是离散型,则同样,两个特征则x服从伯努利分布,多个特征则x服从类别分布;如果x是连续型,则服从高斯分布。根据这些假设便可用MLE估计出P(x|y)P(y),然后用贝叶斯公式就可以计算出后验概率了。

     

    展开全文
  • 1. 生成模型与判别模型1.1 两种模型的区别我们首先假设x为特征,y为类别结果。那么分以下几种方式来理解生成模型与判别模型。(1)官方定义:判别模型是根据特征值来求结果的概率。形式化表示为,在参数确定的情况下...

    本文结合网易云吴恩达机器学习公开课中文课件内容以及个人理解,对这一章节进行介绍。红色部分为关键部分或个人的一些理解。

    1. 生成模型与判别模型

    1.1 两种模型的区别

    我们首先假设x为特征,y为类别结果。那么分以下几种方式来理解生成模型与判别模型。

    (1)官方定义:判别模型是根据特征值来求结果的概率。形式化表示为,在参数确定的情况下,求解条件概率,通俗的解释为在给定特征后预测结果出现的概率。

    而生成模型是知道结果的情况下,对样本特征建立概率模型,是在给定样本所属类的情况下。形式化表示为。当然这里最大的记忆难点就是x和y在形式化表示中的位置,因此建议下一种方式进行记忆。

    (2)顾名思义:判别模型,即要判断这个东西到底是哪一类,也就是要求y,那给定的就是x,所以是p(y|x)。生成模型同样,是要生成一个模型,那就是谁根据什么生成了模型,谁就是类别y,根据的内容就是x,所以是

    (3)深度记忆:这里举例说明。比如我们的任务是判断一只羊是山羊还是绵羊,判别模型就是先从历史数据中提取这些羊的特征来判断它是哪种羊。生成模型则是我先给你山羊,你研究山羊的特征,然后生成一个山羊的模型,绵羊同理。那么判断新来的一只羊时,把他的特征丢到两个模型中去,哪个模型得到的概率大,那这只羊就属于哪个种类。

    1.2 两种模型的联系

    利用贝叶斯公式发现两个模型的统一性:

    由于两种模型生成后,都是来预测一个新的y因此我们关注的是y的离散值结果中哪个类别的概率,而不是关心具体的概率,因此上面的公式可以改写为:

     

    2. 生成模型—高斯判别分析(GDA)

    2.1 多值正态分布

    多变量正态分布描述的是n维随机变量的分布情况,这里的变成了向量,也变成了矩阵。写作。假设有n个随机变量X1,X2,…,Xn。的第i个分量是E(Xi),而

    概率密度函数如下:

    其中的行列式,是协方差矩阵,而且是对称半正定的。

    是二维的时候可以如下图表示:

    其中决定中心位置,决定投影椭圆的朝向和大小。

    如下图:

    对应的不同。

    2.2 高斯判别分析模型

    如果输入特征x是连续型随机变量,那么可以使用高斯判别分析模型来确定p(x|y)。这里有一个假设,那就是假设p(x|y)服从多元高斯分布,这个假设的含义就是指在给定某一类别下,所属类别的所有样本的分布为高斯分布。

    模型如下:

    输出结果服从伯努利分布,在给定模型下特征符合多值高斯分布。通俗地讲,在山羊模型下,它的胡须长度,角大小,毛长度等连续型变量符合高斯分布,他们组成的特征向量符合多值高斯分布。

    这样,可以给出概率密度函数:

    最大似然估计如下:

    注意这里的参数有两个,表示在不同的结果模型下,特征均值不同,但我们假设协方差相同。反映在图上就是不同模型中心位置不同,但形状相同。这样就可以用直线来进行分隔判别。求导后,得到参数估计公式:

    是训练样本中结果y=1占有的比例。

    是y=0的样本中特征均值。

    是y=1的样本中特征均值。

    是样本特征方差均值。

    如前面所述,在图上表示为:

    直线两边的y值不同,但协方差矩阵相同,因此形状相同。不同,因此位置不同。

    2.3 高斯判别分析(GDA)与logistic回归的关系

    这是https://www.cnblogs.com/yinheyi/p/6131875.html的一张图

    例如现在我想获得在高斯判别分析中P(y=1|x)概率值的走向,从X轴左边开始,由于这里下方的叉叉×表示y=0的情况,圈圈表示y=1的情况,从左往右的过程中y=1的情况可能性越来越大,其形状就和sigmoid函数一样,上图中的losgtic回归网线就是p(y=1|x) = p(x |y=1)p(y=1) / p(x)的曲线。两个高斯分布交界的地方就是logistic曲线等于0.5的地方,因为在这一点p(y = 0)p(y =1)的概率相同。其计算可由贝叶斯公式可以得到

    P(x|y)可以直接由高斯判别函数的y值得到,p(y=1)可以由伯努利模型得到,p(x)如图中红色的部分得到。

    如果p(x|y)符合多元高斯分布,那么p(y|x)符合logistic回归模型。反之,不成立。为什么反过来不成立呢?因为GDA有着更强的假设条件和约束。

    如果事先知道训练数据满足多元高斯分布,那么GDA能够在训练集上是最好的模型。然而,我们往往事先不知道训练数据满足什么样的分布,不能做很强的假设。Logistic回归的条件假设要弱于GDA,因此更多的时候采用logistic回归的方法,也就是说即使不知道训练数据满足何种分布方式,logistic回归也能保持其稳定性。

    例如,训练数据满足泊松分布,

    ,或者其他类型的指数分布簇,那么p(y|x)也是logistic回归的。这个时候如果采用GDA,那么效果会比较差,因为训练数据特征的分布不是多元高斯分布,而是泊松分布,所以通常不知道训练数据满足何种分布。这也是logistic回归用的更多的原因。

    3. 生成模型—朴素贝叶斯模型

    在GDA中,我们要求特征向量x是连续实数向量。如果x是离散值的话,可以考虑采用朴素贝叶斯的分类方法。

    假如要分类垃圾邮件和正常邮件。分类邮件是文本分类的一种应用。

    假设采用最简单的特征描述方法,首先找一部英语词典,将里面的单词全部列出来。然后将每封邮件表示成一个向量,向量中每一维都是字典中的一个词的0/1值,1表示该词在邮件中出现,0表示未出现。

    比如一封邮件中出现了“a”和“buy”,没有出现“aardvark”、“aardwolf”和“zygmurgy”,那么可以形式化表示为:

    假设字典中总共有5000个词,那么x是5000维的。

    对应到上面的问题上来,把每封邮件当做一次随机试验,那么结果的可能性有。意味着pi有个,参数太多,不可能用来建模。

    换种思路,我们要求的是p(y|x),根据生成模型定义我们可以求p(x|y)和p(y)。假设x中的特征是条件独立的。这个称作朴素贝叶斯假设。如果一封邮件是垃圾邮件(y=1),且这封邮件出现词“buy”与这封邮件是否出现“price”无关,那么“buy”和“price”之间是条件独立的。

    回到问题中

    这里p(x2|y,x1)=p(x2|y)就可以理解成x2buy,x1price,也就是我知不知道price出现和buy有没有出现并没有关系。

    这里我们发现朴素贝叶斯假设是约束性很强的假设,“buy”从通常上讲与“price”是有关系,我们这里假设的是条件独立。(注意条件独立和独立是不一样的)

    建立形式化的模型表示:



    那么我们想要的是模型在训练数据上概率积能够最大,即最大似然估计如下:

    注意这里是联合概率分布积最大,说明朴素贝叶斯是生成模型。

    求解得:

    最后一个式子是表示y=1的样本数占全部样本数的比例,前两个表示在y=1或0的样本中,特征Xj=1的比例。

    然而我们要求的是(没错,不管什么模型,最后都是给一个新样本判断它的类型)

    实际是求出分子即可,分母对y=1和y=0都一样。

    当然,朴素贝叶斯方法可以扩展到x和y都有多个离散值的情况。对于特征是连续值的情况,我们也可以采用分段的方法来将连续值转化为离散值。具体怎么转化能够最优,我们可以采用信息增益的度量方法来确定(参见Mitchell的《机器学习》决策树那一章)。

    比如房子大小可以如下划分成离散值:

    4 拉普拉斯平滑

    朴素贝叶斯方法有个致命的缺点就是对数据稀疏问题过于敏感。

    比如前面提到的邮件分类,现在新来了一封邮件,邮件标题是“NIPS call for papers”。我们使用更大的网络词典(词的数目由5000变为35000)来分类,假设NIPS这个词在字典中的位置是35000。然而NIPS这个词没有在之前的训练数据中出现过,这封邮件第一次出现了NIPS那我们算概率的时候如下:

    由于NIPS在以前的不管是垃圾邮件还是正常邮件都没出现过,那么结果只能是0了。

    显然最终的条件概率也是0。

    原因就是我们的特征概率条件独立,使用的是相乘的方式来得到结果。为了解决这个问题,我们打算给未出现特征值,赋予一个“小”的值而不是0。

    具体平滑方法如下:

    假设离散型随机变量z有{1,2,…,k}个值,我们用表示每个值的概率。假设有m个训练样本中,z的观察值是其中每一个观察值对应k个值中的一个。那么根据原来的估计方法可以得到

    说白了就是z=j出现的比例。

    拉普拉斯平滑法将每个k值出现次数事先都加1,通俗讲就是假设他们都出现过一次。

    那么修改后的表达式为:

    每个z=j的分子都加1,分母加k。可见

    这个有点像NLP里面的加一平滑法,当然还有n多平滑法了,这里不再详述。

    回到邮件分类的问题,修改后的公式为:

    5. 文本分类的事件模型——多项式事件模型

    回想一下我们刚刚使用的用于文本分类的朴素贝叶斯模型,这个模型称作多值伯努利事件模型(multi-variate Bernoulli event model)。在这个模型中,我们首先随机选定了邮件的类型(垃圾或者普通邮件,也就是p(y)),然后一个人翻阅词典,从第一个词到最后一个词,随机决定一个词是否要在邮件中出现,出现标示为1,否则标示为0。然后将出现的词组成一封邮件。决定一个词是否出现依照概率p(xi|y)。那么这封邮件的概率可以表示为,其中xi01n50000

    让我们换一个思路,这次我们不先从词典入手,而是选择从邮件入手。让i表示邮件中的第i个词,xi表示这个词在字典中的位置,那么xi取值范围为{1,2,…|V|},|V|是字典中词的数目。这样一封邮件可以表示成,n可以变化,因为每封邮件的词的个数不同。然后我们对于每个xi随机从|V|个值中取一个,这样就形成了一封邮件。这相当于重复投掷|V|面的骰子,将观察值记录下来就形成了一封邮件。当然每个面的概率服从p(xi|y),而且每次试验条件独立。这样我们得到的邮件概率是。居然跟上面的一样,那么不同点在哪呢?注意第一个的n是字典中的全部的词,下面这个n是邮件中的词个数。上面xi表示一个词是否出现,只有0和1两个值,两者概率和为1。下面的xi表示|V|中的一个值,|V|个p(xi|y)相加和为1。上面的x向量都是0/1值,下面的x的向量都是字典中的位置。

    这里要注意词典的功能,我们可以这样对比理解两种方法:第一种方法是固定词典,每次将邮件的内容对照着词典里的50000个词比较,看哪些词出现(注意,这是出现,没有去计算出现多少次,因为X只有01两种选择),那么第二种方法就是将邮件的所有词都对应到词典的位置中,例如邮件中第一个词是buy,但是对应的词典的位置可能是{20},第二个词是price,对应的位置可能是{1},但是这都没关系,因为这个模型并不关心词在字典中的位置,也就是说邮件里的所有词可以任意排序。词典在这里的功能就像一个中介,因为每个邮件的单词数是不固定的,但是词典的位置是固定,这个位置就是这个词,所以我们统计词典中这个位置出现的次数,就是统计得到对应的单词出现的次数。我们最后是根据一个新邮件中给定的词典位置这个特征,来计算出这个邮件总偏向出现哪些词,从而判断它是否为一个垃圾邮件。

    形式化表示为:

    m个训练样本表示为:

    表示第i个样本中,共有ni个词,每个词在字典中的编号为

    那么我们仍然按照朴素贝叶斯的方法求得最大似然估计概率为

    解得,

    个人对这个表达式在两种模型表达式的区别理解:

    第一个模型为多值伯努利事件模型,理解为有m个样本邮件,其中我确定的s个为垃圾邮件,这s个垃圾邮件中都出现了buy这个词,那么buy的比例就是n/m

    第二个模型为多项式事件模型,理解为有m个样本邮件,其中有s个垃圾邮件,这s个垃圾邮件每个邮件的单词数为ni个,那么这s个垃圾邮件总共有s*Σni个单词。而每个垃圾邮件中出现buy这个词的个数为si,那么这s个垃圾邮件一共出现了s*Σsi个buy单词,那么buy的比例就是Σsi/Σni,也就是考虑了每个邮件中词出现的个数

    与以前的式子相比,分母多了个ni,分子由0/1变成了k。

    举个例子:

    X1

    X2

    X3

    Y

    1

    2

    -

    1

    2

    1

    -

    0

    1

    3

    2

    0

    3

    3

    3

    1

    假如邮件中只有a,b,c这三词,他们在词典的位置分别是1,2,3,前两封邮件都只有2个词,后两封有3个词。

    Y=1是垃圾邮件。

    那么,




    假如新来一封邮件为b,c那么特征表示为{2,3}。

    那么

    那么该邮件是垃圾邮件概率是0.6。

    注意这个公式与朴素贝叶斯的不同在于这里针对整体样本求的,而朴素贝叶斯里面针对每个特征求的,而且这里的特征值维度是参差不齐的。

    这里如果假如拉普拉斯平滑,得到公式为:

    表示每个k值至少发生过一次,这里V50000,表示有50000中可能的位置值

    另外朴素贝叶斯虽然有时候不是最好的分类方法,但它简单有效,而且速度快,其次朴素贝叶斯实际也是指数分布簇,使用它最后得到的结果同样是logistic回归线性分类器

    6. 总结

    本文大部分还是对照着吴恩达老师的中文笔记注释,其中大部分标红的部分为个人的在看视频时的一些理解,希望对大家有帮助,如果文中出现了一些错误的话,也希望大家包含,批评指正。

    展开全文
  • 转载时请注明来源:http://www.cnblogs.com/jerrylead 1判别模型与生成模型 上篇报告中提到的回归模型是判别模型,也就是根据特征值来求结果的概率。形式化表示为,在参数确定的
    原文地址为:
    判别模型、生成模型与朴素贝叶斯方法
    

    转载时请注明来源:http://www.cnblogs.com/jerrylead
    1判别模型与生成模型

    上篇报告中提到的回归模型是判别模型,也就是根据特征值来求结果的概率。形式化表示为clip_image002[8],在参数clip_image004[8]确定的情况下,求解条件概率clip_image006[8]。通俗的解释为在给定特征后预测结果出现的概率。

    比如说要确定一只羊是山羊还是绵羊,用判别模型的方法是先从历史数据中学习到模型,然后通过提取这只羊的特征来预测出这只羊是山羊的概率,是绵羊的概率。换一种思路,我们可以根据山羊的特征首先学习出一个山羊模型,然后根据绵羊的特征学习出一个绵羊模型。然后从这只羊中提取特征,放到山羊模型中看概率是多少,再放到绵羊模型中看概率是多少,哪个大就是哪个。形式化表示为求clip_image008[12](也包括clip_image010[8],y是模型结果,x是特征。

    利用贝叶斯公式发现两个模型的统一性:

    clip_image011[8]

    由于我们关注的是y的离散值结果中哪个概率大(比如山羊概率和绵羊概率哪个大),而并不是关心具体的概率,因此上式改写为:

    clip_image001[4]

    其中clip_image003[4]称为后验概率,clip_image005[4]称为先验概率。

    clip_image007[4],因此有时称判别模型求的是条件概率,生成模型求的是联合概率。

    常见的判别模型有线性回归、对数回归、线性判别分析、支持向量机、boosting、条件随机场、神经网络等。

    常见的生产模型有隐马尔科夫模型、朴素贝叶斯模型、高斯混合模型、LDA、Restricted Boltzmann Machine等。

    这篇博客较为详细地介绍了两个模型:

    http://blog.sciencenet.cn/home.php?mod=space&uid=248173&do=blog&id=227964

    2高斯判别分析(Gaussian discriminant analysis)

    1) 多值正态分布

    多变量正态分布描述的是n维随机变量的分布情况,这里的clip_image009变成了向量,clip_image011[10]也变成了矩阵clip_image013。写作clip_image015[4]。假设有n个随机变量X1,X2,…,Xn。clip_image009[1]的第i个分量是E(Xi),而clip_image017[4]

    概率密度函数如下:

    clip_image018[28]

    其中|clip_image020[8]clip_image013[1]的行列式,clip_image013[2]是协方差矩阵,而且是对称半正定的。

    clip_image009[2]是二维的时候可以如下图表示:

    clip_image022

    其中clip_image009[3]决定中心位置,clip_image013[3]决定投影椭圆的朝向和大小。

    如下图:

    clip_image024

    对应的clip_image013[4]都不同。

    2) 模型分析与应用

    如果输入特征x是连续型随机变量,那么可以使用高斯判别分析模型来确定p(x|y)。

    模型如下:

    clip_image025[6]

    输出结果服从伯努利分布,在给定模型下特征符合多值高斯分布。通俗地讲,在山羊模型下,它的胡须长度,角大小,毛长度等连续型变量符合高斯分布,他们组成的特征向量符合多值高斯分布。

    这样,可以给出概率密度函数:

    clip_image026[8]

    最大似然估计如下:

    clip_image027[8]

    注意这里的参数有两个clip_image009[4],表示在不同的结果模型下,特征均值不同,但我们假设协方差相同。反映在图上就是不同模型中心位置不同,但形状相同。这样就可以用直线来进行分隔判别。

    求导后,得到参数估计公式:

    clip_image028[4]

    clip_image030[6]是训练样本中结果y=1占有的比例。

    clip_image032[4]是y=0的样本中特征均值。

    clip_image034[6]是y=1的样本中特征均值。

    clip_image013[5]是样本特征方差均值。

    如前面所述,在图上表示为:

    clip_image035[8]

    直线两边的y值不同,但协方差矩阵相同,因此形状相同。clip_image009[5]不同,因此位置不同。

    3) 高斯判别分析(GDA)与logistic回归的关系

    将GDA用条件概率方式来表述的话,如下:

    clip_image036[8]

    y是x的函数,其中clip_image037[8]都是参数。

    进一步推导出

    clip_image038[4]

    这里的clip_image040[4]clip_image041[8]的函数。

    这个形式就是logistic回归的形式。

    也就是说如果p(x|y)符合多元高斯分布,那么p(y|x)符合logistic回归模型。反之,不成立。为什么反过来不成立呢?因为GDA有着更强的假设条件和约束。

    如果认定训练数据满足多元高斯分布,那么GDA能够在训练集上是最好的模型。然而,我们往往事先不知道训练数据满足什么样的分布,不能做很强的假设。Logistic回归的条件假设要弱于GDA,因此更多的时候采用logistic回归的方法。

    例如,训练数据满足泊松分布,clip_image042[4]

    clip_image043[6],那么p(y|x)也是logistic回归的。这个时候如果采用GDA,那么效果会比较差,因为训练数据特征的分布不是多元高斯分布,而是泊松分布。

    这也是logistic回归用的更多的原因。

    3朴素贝叶斯模型

    在GDA中,我们要求特征向量x是连续实数向量。如果x是离散值的话,可以考虑采用朴素贝叶斯的分类方法。

    假如要分类垃圾邮件和正常邮件。分类邮件是文本分类的一种应用。

    假设采用最简单的特征描述方法,首先找一部英语词典,将里面的单词全部列出来。然后将每封邮件表示成一个向量,向量中每一维都是字典中的一个词的0/1值,1表示该词在邮件中出现,0表示未出现。

    比如一封邮件中出现了“a”和“buy”,没有出现“aardvark”、“aardwolf”和“zygmurgy”,那么可以形式化表示为:

    clip_image044[8]

    假设字典中总共有5000个词,那么x是5000维的。这时候如果要建立多项式分布模型(二项分布的扩展)。

    多项式分布(multinomial distribution)

    某随机实验如果有k个可能结局A1,A2,…,Ak,它们的概率分布分别是p1,p2,…,pk,那么在N次采样的总结果中,A1出现n1次,A2出现n2次,…,Ak出现nk次的这种事件的出现概率P有下面公式:(Xi代表出现ni次)

    clip_image045[6]

    对应到上面的问题上来,把每封邮件当做一次随机试验,那么结果的可能性有clip_image047[6]种。意味着pi有clip_image047[7]个,参数太多,不可能用来建模。

    换种思路,我们要求的是p(y|x),根据生成模型定义我们可以求p(x|y)和p(y)。假设x中的特征是条件独立的。这个称作朴素贝叶斯假设。如果一封邮件是垃圾邮件(y=1),且这封邮件出现词“buy”与这封邮件是否出现“price”无关,那么“buy”和“price”之间是条件独立的。

    形式化表示为,(如果给定Z的情况下,X和Y条件独立):

    clip_image049[6]

    也可以表示为:

    clip_image051[6]

    回到问题中

    clip_image052[8]

    这个与NLP中的n元语法模型有点类似,这里相当于unigram。

    这里我们发现朴素贝叶斯假设是约束性很强的假设,“buy”从通常上讲与“price”是有关系,我们这里假设的是条件独立。(注意条件独立和独立是不一样的)

    建立形式化的模型表示:

    clip_image054[8]

    df29d801c3c44beb96d8bb9f5c766894.jpe

    clip_image058[10]

    那么我们想要的是模型在训练数据上概率积能够最大,即最大似然估计如下:

    clip_image059

    注意这里是联合概率分布积最大,说明朴素贝叶斯是生成模型。

    求解得:

    clip_image060[8]

    最后一个式子是表示y=1的样本数占全部样本数的比例,前两个表示在y=1或0的样本中,特征Xj=1的比例。

    然而我们要求的是

    clip_image062

    实际是求出分子即可,分母对y=1和y=0都一样。

    当然,朴素贝叶斯方法可以扩展到x和y都有多个离散值的情况。对于特征是连续值的情况,我们也可以采用分段的方法来将连续值转化为离散值。具体怎么转化能够最优,我们可以采用信息增益的度量方法来确定(参见Mitchell的《机器学习》决策树那一章)。

    比如房子大小可以如下划分成离散值:

    clip_image064

    4拉普拉斯平滑

    朴素贝叶斯方法有个致命的缺点就是对数据稀疏问题过于敏感。

    比如前面提到的邮件分类,现在新来了一封邮件,邮件标题是“NIPS call for papers”。我们使用更大的网络词典(词的数目由5000变为35000)来分类,假设NIPS这个词在字典中的位置是35000。然而NIPS这个词没有在训练数据中出现过,这封邮件第一次出现了NIPS。那我们算概率的时候如下:

    clip_image065[8]

    由于NIPS在以前的不管是垃圾邮件还是正常邮件都没出现过,那么结果只能是0了。

    显然最终的条件概率也是0。

    clip_image066[4]

    原因就是我们的特征概率条件独立,使用的是相乘的方式来得到结果。

    为了解决这个问题,我们打算给未出现特征值,赋予一个“小”的值而不是0。

    具体平滑方法如下:

    假设离散型随机变量z有{1,2,…,k}个值,我们用clip_image068[6]来表示每个值的概率。假设有m个训练样本中,z的观察值是clip_image069[6]其中每一个观察值对应k个值中的一个。那么根据原来的估计方法可以得到

    clip_image070[4]

    说白了就是z=j出现的比例。

    拉普拉斯平滑法将每个k值出现次数事先都加1,通俗讲就是假设他们都出现过一次。

    那么修改后的表达式为:

    clip_image071[4]

    每个z=j的分子都加1,分母加k。可见clip_image072[4]

    这个有点像NLP里面的加一平滑法,当然还有n多平滑法了,这里不再详述。

    Technorati 标签: Machine Learning

    回到邮件分类的问题,修改后的公式为:

    clip_image073[4]

    5文本分类的事件模型

    回想一下我们刚刚使用的用于文本分类的朴素贝叶斯模型,这个模型称作多值伯努利事件模型(multi-variate Bernoulli event model)。在这个模型中,我们首先随机选定了邮件的类型(垃圾或者普通邮件,也就是p(y)),然后一个人翻阅词典,从第一个词到最后一个词,随机决定一个词是否要在邮件中出现,出现标示为1,否则标示为0。然后将出现的词组成一封邮件。决定一个词是否出现依照概率p(xi|y)。那么这封邮件的概率可以标示为clip_image074[8]

    让我们换一个思路,这次我们不先从词典入手,而是选择从邮件入手。让i表示邮件中的第i个词,xi表示这个词在字典中的位置,那么xi取值范围为{1,2,…|V|},|V|是字典中词的数目。这样一封邮件可以表示成clip_image075[8],n可以变化,因为每封邮件的词的个数不同。然后我们对于每个xi随机从|V|个值中取一个,这样就形成了一封邮件。这相当于重复投掷|V|面的骰子,将观察值记录下来就形成了一封邮件。当然每个面的概率服从p(xi|y),而且每次试验条件独立。这样我们得到的邮件概率是clip_image076。居然跟上面的一样,那么不同点在哪呢?注意第一个的n是字典中的全部的词,下面这个n是邮件中的词个数。上面xi表示一个词是否出现,只有0和1两个值,两者概率和为1。下面的xi表示|V|中的一个值,|V|个p(xi|y)相加和为1。是多值二项分布模型。上面的x向量都是0/1值,下面的x的向量都是字典中的位置。

    形式化表示为:

    m个训练样本表示为:clip_image077[6]

    clip_image078[6]clip_image079[6]

    表示第i个样本中,共有ni个词,每个词在字典中的编号为clip_image080[6]

    那么我们仍然按照朴素贝叶斯的方法求得最大似然估计概率为

    clip_image081[6]

    解得,

    clip_image082[6]

    与以前的式子相比,分母多了个ni,分子由0/1变成了k。

    举个例子:

    X1

    X2

    X3

    Y

    1

    2

    -

    1

    2

    1

    -

    0

    1

    3

    2

    0

    3

    3

    3

    1

    假如邮件中只有a,b,c这三词,他们在词典的位置分别是1,2,3,前两封邮件都只有2个词,后两封有3个词。

    Y=1是垃圾邮件。

    那么,

    clip_image084[6]

    f856bc7bc827dabb341d56f49065b476.jpe

    clip_image088[6]

    假如新来一封邮件为b,c那么特征表示为{2,3}。

    那么

    clip_image090[6]

    clip_image092

    那么该邮件是垃圾邮件概率是0.6。

    注意这个公式与朴素贝叶斯的不同在于这里针对整体样本求的clip_image094,而朴素贝叶斯里面针对每个特征求的clip_image096,而且这里的特征值维度是参差不齐的。

    这里如果假如拉普拉斯平滑,得到公式为:

    clip_image097[6]

    表示每个k值至少发生过一次。

    另外朴素贝叶斯虽然有时候不是最好的分类方法,但它简单有效,而且速度快。


    转载请注明本文地址: 判别模型、生成模型与朴素贝叶斯方法
    展开全文
  • 首先从监督学习来认识 ...2.监督学习的方法又可以分为生成方法和判别方法,所学到的模型分布称为生成模型和判别模型。3.生成方法由数据学习联合概率分布P(X,Y)P(X,Y),然后求出条件概率分布P(Y|X)P(Y|X)作为

    首先从监督学习来认识
    1.监督学习的主要任务就是学习一个模型,应用这一模型,对给定的输入预测相应的输出。这一模型的一般形式为决策函数: Y=f(X)
    或条件概率分布: P(Y|X)

    2.监督学习的方法又可以分为生成方法和判别方法,所学到的模型分布称为生成模型和判别模型。

    3.生成方法由数据学习联合概率分布 P(X,Y) ,然后求出条件概率分布 P(Y|X) 作为预测的模型。即生成模型: P(Y|X)=P(X,Y)P(X)
    之所以称为生成方法,是因为模型表示了给定输入X产生输出Y的生成关系: P(Y|X)
    典型的生成模型有:朴素贝叶斯法、隐马尔科夫模型、高斯混合模型。

    4.判别方法由数据直接学习决策函数 f(X) 或者条件概率分布 P(Y|X) 作为预测的模型,即判别模型。
    典型的判别模型包括:KNN、感知机、决策树、线性回归、逻辑斯蒂回归模型、支持向量机、神经网络、boosting提升方法。


    昨晚已经写完了,然后电脑突然关机,打开之后,什么都没有了,,心碎……..


    朴素贝叶斯法

    1.朴素贝叶斯法是利用贝叶斯定理来进行分类的方法。它具有以下优点:

    • 简单,快速,有效
    • 能很好处理噪声,缺失数据
    • 对小和大样本都可以
    • 比较容易获得预测的概率估计

    缺点:

    • 要求特征间平等及重要性相同,特征相互独立(通常不会存在,这也是为什么要叫naive的原因)
    • 对主要是大量数字特征的数据集不太适合
    • 估计概率不如分类可靠(所以一般用它来分类)

    2.朴素贝叶斯算法的学习与分类:

    输入特征向量是n维向量的集合,记为 xχ ,输出为类标记 yγ ;
    X是定义在输入空间 χ 上的随机向量,Y是定义在输出空间 γ 上的随机变量.

    训练数据

    学习流程:

    (1)朴素贝叶斯法通过训练数据集学习联合概率分布p(X,Y)。首先学习先验概率分布及条件概率分布。
    先验概率分布:
    先验分布
    条件概率分布:
    条件概率分布
    ,于是学习到联合概率分布P(X,Y)。

    这里条件概率分布 P(X=x|Y=ck) 的估计参数有 KnjSj 个。假设每一个特征 x(j) 可能取值有 Sj 个, j=1,2,...,n ,Y可能取值有K个。
    其参数太多不可能用来建模。

    换种思路,我们要求的是 p(Y=ck|x) ,根据生成模型定义我们可以求p(x|y)和p(y)。假设X中的特征是条件独立的,这个称作朴素贝叶斯假设。
    具体形式:
    条件独立

    那么联合概率分布为:
    P(X,Y)=P(Y)P(X|Y)=kP(ck)P(X|ck)=kP(ck)iP(X(j)|ck)

    (2)朴素贝叶斯分类时,对给定的输入X,通过学习到的模型计算后验概率分布 P(Y=ck|X=x) ,将后验概率最大的类作为x的类输出。

    X

    后验概率:
    后验概率
    整理得到,朴素贝叶斯分类器的基本公式:

    这里写图片描述

    于是,朴素贝叶斯分类器可以表示为:
    【上式对分母而言,所有的 ck 都是一样的。】

    这里写图片描述

    (3)朴素贝叶斯法的参数估计
    在朴素贝叶斯法中,学习先验概率和条件概率,因此也要估计其值。

    对于给定的训练数据集,得到联合似然函数:
    L=iP(Xi,Yi)
    这里是联合概率最大,因此朴素贝叶斯模型是生成模型。

    先验概率P(Y=c_k)的极大似然估计是:

    这里写图片描述
    设第j个特征可能取值的集合为 {aj1,aj2,...,ajsj} ,条件概率的极大似然估计是:
    这里写图片描述
    ,式中 xjiijajl 是第j个特征可能取的第 l 个值,I

    贝叶斯估计:

    朴素贝叶斯用来进行文本分类通常存在一个问题,如果训练的数据中某个词没有出现过,那么该词的概率就变成了0,从而如公式所示: P(Y=ck)=0 ,那么:
    P(Y=ck|X=x)=00=0

    整个计算的垃圾邮件概率就变成了0,这显然不合理,于是就有了拉普拉斯估计的应用——Laplace smoothing,我们给它预估一个值这样就可以避免问题的出现了。

    条件概率的贝叶斯估计是:
    这里写图片描述
    式中, λ>=0 等价于在随机变量各个取值的频数上赋予一个正数 λ ,当 λ=0 时,就是极大似然估计。常取 λ=1 ,这时称为拉普拉斯平滑【Laplace smoothing】,也可以理解成,所每一种取值都至少出现一次。
    对任何 l=1,2,...,sjk=1,2,...,K ,有

    这里写图片描述
    表明条件概率的贝叶斯估计确实为一种概率分布。同样,先验概率的贝叶斯估计是:
    这里写图片描述

    可以参见 :
    http://www.cnblogs.com/jerrylead/archive/2011/03/05/1971903.html

    易于理解。
    李航博士的《统计学习方法》


    朴素贝叶斯法中,假设输入变量都是条件独立的,如果假设它们之间存在概率依存关系,模型就变成了贝叶斯网络。

    展开全文
  • 6、朴素贝叶斯的面试题 1、朴素贝叶斯与LR的区别 简单来说:朴素贝叶斯生成模型,根据已有样本进行贝叶斯估计学习出先验概率P(Y)和条件概率P(X|Y),进而求出联合分布概率P(XY),最后利用贝叶斯定理求解P(Y|X), 而...
  • 朴素贝叶模型原理1.1朴素贝叶斯模型:将频率当成概率(不可靠)1.2 朴素贝叶斯模型:条件概率的参数估计2. 朴素贝叶斯的目标函数总结: 0. 概念/术语 贝叶斯公式 贝叶斯定理:在 B 出现的前提下 A 出现的概率,等于...
  • 系统学习朴素贝叶斯-三种模型

    千次阅读 2018-03-11 22:54:41
    众所周知,朴素贝叶斯是一种简单但是非常强大的线性分类器。它在垃圾邮件分类,疾病诊断中都取得了很大的成功。它只所以称为朴素,是因为它假设特征之间是相互独立的,但是在现实生活中,这种假设基本上是不成立的。...
  • 一. 朴素贝叶斯 在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同。... 但是朴素贝叶斯却是生成方法,也就是直接找出特征输出Y和特征X的联合分布P(X,Y),然后用P(Y|X)=P(X,Y)/P(...
  • 生成学习算法之朴素贝叶斯算法

    千次阅读 2016-09-02 21:37:02
    2 朴素贝叶斯算法 在GDA中,特征向量是连续的实值向量。现在让我们讨论一种不同的学习算法,在这个算法中,是离散值。 对于我们的激励的例子,考虑使用机器学习建立一个电子邮件的垃圾邮件过滤器。这里,我们希望...
  • 朴素贝叶斯以及三种常见模型推导

    千次阅读 2018-12-26 10:44:03
    朴素贝叶斯 在机器学习中,朴素贝叶斯分类器是一系列以假设特征之间强(朴素)独立下运用贝叶斯定理为基础的简单概率分类器。 朴素贝叶斯算法Naive Bayes定义中有两个关键定义:特征之间强假设独立和贝叶斯定理.这...
  • 朴素贝叶斯(Naive Bayesian)与语言模型(Language Model) 前不久面试了美团,不出意外得失败了,面试中问了我关于朴素贝叶斯的知识,然而我没有回答好,现在仅以此文重新来看我之前认为简单的朴素贝叶斯,本文...
  • 朴素贝叶斯模型(naive bayes)

    千次阅读 2019-04-14 12:38:59
    在讲具体的原理之前,先说说朴素贝叶斯的几个特点:1、朴素贝叶斯是一种典型的生成式模型,有监督学习可以分为两类:判别模型和生成模型,我们所熟悉的神经网络,支持向量机和logistic regression,决策树等都是判别...
  • 本文来源于: 博客:...  感谢作者的分享,非常感谢   概率论相关数学公式 条件概率: 相互独立事件: 贝叶斯定理: ...朴素贝叶斯分类器  众所周知,朴素贝叶斯是一种简...
  • 朴素贝叶斯(Naive Bayes)模型简介

    千次阅读 热门讨论 2015-07-24 19:59:18
    朴素贝叶斯模型是一个简单却很重要的模型,在文本分类中,由于它出奇的简单实现和令人惊讶的表现,因此实际应用中,它都值得是第一个尝试的基准模型。本文接下来将从文本分类这个具体应用中介绍朴素贝叶斯模型。文本...
  • 朴素贝叶斯 Naive Bayes贝叶斯定理根据条件概率公式: 在B条件下A发生的概率: P(A∣B)=P(AB)P(B)\ P(A\mid B) = \frac{P(AB)}{P(B)} 在A条件下B发生的概率: P(B∣A)=P(AB)P(A)\ P(B\mid A) = \frac{P(AB)}{P(A)}...
  • 1.朴素贝叶斯的基本概念1.1贝叶斯定理:朴素贝叶斯(Naive Bayers)算法是一种基于概率统计的分类方法。它在条件独立假设的基础上,使用贝叶斯定理构建算法,在文本处理领域有广泛的应用。公式如下:1.2朴素贝叶斯的...
  • 【前言】在《从零开始学Python【37】--朴素贝叶斯模型(理论部分)》中我们详细介绍了朴素贝叶斯算法的基本概念和理论知识,在这一期我们继续介绍该算法的实战案例。将会对...
  • 使用Sklearn学习朴素贝叶斯算法

    千次阅读 2020-10-20 13:32:50
    上一篇文章我向大家介绍了朴素贝叶斯工作的理论部分,需要看的小伙伴请移步:贝叶斯分类器,接下来,我们基于Sklearn机器学习库来使用以下具体的贝叶斯分类器算法。 1,sklearn中的贝叶斯分类器 Sklearn基于数据...
  • 从线性模型角度理解朴素贝叶斯

    千次阅读 2018-02-03 15:17:58
    以前看朴素贝叶斯的时候只知道它属于生成模型,这几天回顾的时候发现理解的不够深,在这里总结一下,如果有不对的地方,欢迎指正。 0. 生成模型与判别模型 判别模型:判别模型关心的是给定输入x" role=...
  • 1判别模型与生成模型 上篇报告中提到的回归模型是判别模型,也就是根据特征值来求结果的概率。形式化表示为,在参数确定的情况下,求解条件概率。通俗的解释为在给定特征后预测结果出现的概率。 比如说要确定...
  • 最大熵模型就是假设有些条件已知,未知的几个随机变量希望他们是等概率的,这样得到的熵最大,换句话说鸡蛋不要放在同一个篮子里。 先说条件熵为啥定义成这个样子,实际上就是某些条件已知,在这些条件上分别算熵...
  • 朴素贝叶斯算法

    2019-09-21 18:33:50
    前置知识: ... 朴素贝叶斯算法:https://blog.csdn.net/qq_32172681/article/details/101112211 1.、半朴素贝叶斯的“半” ...前面说到,朴素贝叶斯(NB)的‘朴素’就体现在它假设各属性之间没有相互依赖,可以...
  • 转自木东居士的数据挖掘面试题之:朴素贝叶斯 1.什么是贝叶斯决策论? 贝叶斯决策论是概率框架下实施决策的基本方法。要了解贝叶斯决策论,首先得先了解以下几个概念:先验概率、条件概率、后验概率、误判损失、...
  • 朴素贝叶斯和情感分类

    千次阅读 2019-08-01 17:05:26
    5 朴素贝叶斯作为一种语言模型 6 评估指标:精确度,召回率,F-measure 7 测试集和交叉验证 8 特征选择 9 小结 朴素贝叶斯和情感分类 我们将介绍朴素贝叶斯算法,并将其应用于文本分类,即为整个文本或文档...
  • 也就是说,如果一个单词在之前的垃圾邮件和非垃圾邮件中都部曾出现过,那么,朴素贝叶斯模型认为这个词在任何一封邮件出现的概率为0.  如果,这封邮件是一封垃圾邮件,但通过公式得到的是:     这样得到的...
  • 本博客为(系列四)的笔记,对应的视频是:【(系列四) 线性分类1-背景】、【(系列四) 线性分类2-感知机(Perceptron)】、【(系列四) 线性分类3-线性判别分析(Fisher)-模型定义】、【(系列四) 线性分类4-线性判别...
  • 有逻辑回归,朴素贝叶斯-隐马尔科夫模型-最大熵马尔科夫模型-条件随机场等 硬分类:使用的是非概率模型,形式为决策函数,即输入x到输出y的一个映射,且输出唯一,分类结果就是决策函数的决策结果;SVM,LDA,PLA等 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,045
精华内容 2,418
关键字:

朴素贝叶斯生成模型建模