zoukankan      html  css  js  c++  java
  • 逻辑斯蒂回归2 -- 最大熵模型概念

    声明:

             1,本篇为个人对《2012.李航.统计学习方法.pdf》的学习总结。不得用作商用,欢迎转载,但请注明出处(即:本帖地址)。

             2,因为本人在学习初始时有非常多数学知识都已忘记。所以为了弄懂当中的内容查阅了非常多资料,所以里面应该会有引用其它帖子的小部分内容,假设原作者看到能够私信我。我会将您的帖子的地址付到以下。

             3。假设有内容错误或不准确欢迎大家指正。

             4。假设能帮到你,那真是太好了。

             尽管之前在决策树的ID3-ID4算法中已经使用过熵,只是那是使用熵来计算信息增益(比)。而这里既然是“最大熵模型”。那就先好好说明下熵吧。

    何谓熵?

             若仅仅看名字….What the hell is it!! 所以我来解释下其含义吧。

             事实上熵是对不确定性的一种測量。但为什么熵測量了不确定性?这就要说是其由来了。

             熵(entropy)最早起源于物理学,是用于度量一个热力学系统的无序程度。其表达式为:

                       △S(熵) = Q(能量) / T(温度)

             它表示一个系统在不受外部干扰时。其内部最稳定的状态。

             后来在翻译时,译者这么想:

                       首先。△S是求商获得的。那么译名中就有个“商”字吧,然后△S是能量于温度的商。都与温度,即火有关。那就加个“火”字旁吧。你看多形象~

             是。对物理学的熵非常形象。可对我们要掌握的信息论中的熵….我呵呵!

             好了。译名的事清楚了,那为什么熵代表了“系统的无序程度”呢?

             我们知道,不论什么粒子的常态都是随机运动,即“无序运动”。假设让粒子呈现“有序化”。则必须耗费能量。

    所以温度能够被看做是“有序化”的一种度量。那“熵(=能量/温度)”就能够看做是“无序化”的一种度量了(假设没有外部能量输入(分母越来越小),那封闭系统趋向越来越混乱(熵越来越大),打个例如的话:假设房间无人打扫,那仅仅会越来越乱)。

             于是,对物理学,“熵是对不确定性的一种測量”是不是也非常形象。可对我们要掌握的信息论中的熵,我呵呵!

    。。!

             算了,这个就这样了,我们也改变不了,总之记住“熵越大,则无序程度越大”后还是继续吧。

    熵的定义

             假设一个随机变量X的可能取值为X = {x1, x2,…, xk},其概率分布为P(X = xi) = pii = 1,2, ..., n),则随机变量X的熵定义为:

                  

                  由定义可知。熵仅仅依赖于X中类的分布,与X即样本总数无关,所以也可将H(X)记作H(P),即:

                  

    最大熵原理

             最大熵原理就一句话:学习概率模型时,在全部可能的概率模型分布中,熵最大的模型就是最好的模型。

             嗯。我不知道大家的情况。反正我在看到书上这句话时我100个不理解。

             看了书上这句话之后的说明后。

             我知道对于 满足不等式 0 <= H(P) <= log|X|      (|X|是X的取值个数)

             我也知道当且仅当X的分布是均匀分布时右边的等号成立,即:当X服从均匀分布时,熵最大。

             可不是“熵越大,则无序程度越大”吗?

             为什么“熵最大的模型就是最好的模型”啊。

             你说最大熵原理就是通过熵的最大化来表示等可能性。

             好吧。通过书上的说明我也明确了最大熵原理就是通过熵的最大化来表示等可能性。

             可不是“熵越大,则无序程度越大”吗?

             为什么“熵最大的模型或者说“等可能性”的模型就是最好的模型”啊!!

             (请原谅上面这些颇有个人感情色彩的话。实在是被书上N多必须查找其它资料才干搞懂的内容弄的难受。尤其我这样的理解记忆的….)

             最后查看了其它资料。看到了这么一段说明后最终豁然开朗:

                       为了准确的预计随机变量的状态,我们一般习惯性最大化熵,觉得在全部可能的概率模型(分布)的集合中。熵最大的模型是最好的模型。

    换言之,在已知部分知识的前提下,关于未知分布最合理的判断就是符合已知知识最不确定或最随机的判断,其原则是承认已知事物(知识),且对未知事物不做不论什么如果,没有不论什么偏见

                 比如。投掷一个骰子,假设问"每个面朝上的概率各自是多少",你会说是等概率,即各点出现的概率均为1/6由于对这个"一无所知"的色子,什么都不确定,而假定它每个朝上概率均等则是最合理的做法。从投资的角度来看。这是风险最小的做法,而从信息论的角度讲,就是保留了最大的不确定性,也就是说让熵达到最大。

     

           到此,“熵最大的模型就是最好的模型”大家应该没问题了吧。

             那么我们继续….

             在上面的内容中的“投掷骰子”的样例说明了最大熵原理。以下我们再举一个更通用的样例来进一步理解最大熵。

             样例:

                       如果随机变量X有5个取值{A, B, C,D, E},要预计各个值的概率P(A), P(B), P(C), P(D), P(E)

             解:

                       这些概率值满足下面约束条件:

                                P(A)+ P(B) + P(C) + P(D) + P(E) = 1

                       在没有其它约束条件的情况下,依据“最大熵原理”,最合理的推断就是全部取值的概率相等。即:

                                P(A)= P(B) = P(C) = P(D) = P(E) = 1/5

                       有时,我们能从一些先验知识中得到一些约束条件,如:

                                P(A)+ P(B) = 3/10

                                P(A)+ P(B) + P(C) + P(D) + P(E) = 1

                       那依据“最大熵原理”。最合理的推断就是全部A和B取值的概率相等。C、D、E平分剩下的概率,即:

                                P(A)= P(B) = 3/20

                                P(C)= P(D) = P(E) = 7/30

                       以此类推。

    最大熵模型的定义

             最大熵的原理清楚了后我们来看最大熵模型的定义。

             依据上面的样例我们能够引出最大熵模型的本质,即:它要解决的问题就是已知X时计算Y的概率,且尽可能的让Y的概率最大。(实践中,一定会给你一些条件X(如:P(A) + P(B) = 3/10),然后让你求事件Y(如:A、B、C、D、E)的概率)

             即:在已知X的情况下。计算Y最大可能的概率。

             咦?“在已知X的情况下,计算Y的概率”不就是“条件熵”定义么:条件熵就是在随机变量X已确定的条件下,随机变量Y的条件概率分布的熵对X的数学期望。

             那最大熵是不是求最大条件熵呢?

             条件熵的公式是:

             书上最大熵模型的公式是:

             哦,原来所谓的最大熵模型就是求最大条件熵。

             于是定义是:

                       对于一模型:

                                在用例如以下特征函数:

                                         

                                来描写叙述输入x和输出y之间的某一个事实时

                                该特征函数关于x和y的联合分布的期望值为:

                                         

                                该特征函数关于条件分布P(y|x)和边缘分布P(x) 的期望值为:

                                        

                                假设模型可以获取训练数据中的信息,则我们可以使用概率论的乘法定理:

                                         P(y|x)= p(x) P(y|x)

                                来如果(这是约束条件):

                                        

                                在此时令其条件熵最大

                                        

                                这就是最大熵模型

    最大熵模型的一般形式

             最大熵模型的一般形式是在进行“最大熵模型学习”时得到的。于是这里须要总结下最大熵模型的学习过程,而在总结学习过程之前先介绍下拉格朗日乘子法,由于最大熵模型学习时会用到这个。

             拉格朗日乘子法:

                       主要的拉格朗日乘子法就是求函数f(x1, x2, …) 在g(x1, x2, …) = 0 的约束条件下的极值的方法(我们的目标是求最大熵。这就是求极值了)。

                       其主要思想是引入一个新的參数λ(即拉格朗日乘子),将约束条件函数与原函数联系到一起,使之能配成与变量数量相等的等式方程。从而求出原函数极值的各个变量的解。

                       如果待求极值的目标函数是f(x,y),约束条件是φ(x,y)=M

                       那么就如果 g(x,y)=M-φ(x,y)        # 要让g(x1, x2, …) = 0

                       于是原函数f(x, y)就能变成例如以下函数:

                                f(x,y,λ) = f(x, y) + λg(x, y)                   #g(x, y) = 0,所以f(x,y, λ) = f(x, y) + 0 = f(x, y)

                       然后利用偏导数的方法列出方程:

                                ∂f/∂x=0

                                ∂f/∂y=0

                                ∂f/∂λ=0

                       就可求出x, y, λ的值,最后将x, y, λ代入就可以求解出极值了(假设不理解“为什么代入就可求解出极值”的话。请把导数的定义给弄懂)。

             好了,有了上面的基础我们就能继续了(事实上最大熵学习的步骤就是上面这些)。

             最大熵模型的学习过程:

                       输入:

                                训练数据集:T ={(x1, y1), (x2, y2), …, (xn, yn)}

                                特征函数fi(x, y),i = 1, 2, …,n

                       输出:

                                最大熵模型

                       解:

                                首先依据题目可知:

                                         1。全部情况的概率之和为1: 

                                         2,目的是求最大熵模型:

                                         3,既然是求最大熵模型,那必须满足最大熵模型的约束:

                                然后,依照最优化问题的习惯,我们将最大值问题改写为等价的求最小值问题。

                                于是我们的目的变成了求(其它可知情况没有变化):

                                        

                                PS:-H(p) 最小,不就是H(P) 最大了吗~

                                接着,是重要的一步:引进拉格朗日乘子:λ0, λ1, …, λn。来定义拉格朗日函数L(p, λ):

                                         

                                求L(p, λ) 对p(y|x) 的偏导数:

                                          

                                         

                                令偏导数等于0,解得:

                                        

                                这里我们为了描写叙述方便。将p(y|x)转换为:

                                        

                                依据之前的约束条件:

                                          

                                得:

                                          

                                所以:

                                        

                                到此,pλ(y|x)就是最大熵模型的一般形式

                                之后,求解对偶问题外部的极大化问题max(λ),将其解记为λ*,即:λ* = argmax(λ)。

             好了,了解了上面的过程,我们就能够总结出最大熵模型的一般形式了。其公式例如以下:

                      

             这里x∈Rn是输入,y∈{1, 2, …, K}是输出,λ∈Rn是权值向量,fi(x, y),i = 1, 2, …, n是随意实值特征函数。

        最大熵模型与逻辑斯蒂回归模型有类似的形势,它们又称为对数线性模型。

        模型的学习就是在给定的训练数据条件下对模型进行极大似然预计或正则化的极大似然预计。

    最大熵模型的样例

                       输入:

                                

                       求解:

                                最大熵模型

                       解:

                                依照最优化问题的习惯,我们将最大值问题改写为等价的求最小值问题,即:

                                         求:

                                由于仅仅有两个约束条件,所以引进两个拉格朗日乘子λ0。λ1。然后定义拉格朗日函数:

                                        

                                依据拉格朗日的对偶性,能够通过求解对偶最优化问题得到原始最优化问题的解,所以求解:

                                         maxλminpL(P,λ)

                                首先求解L(P, λ) 关于P的极小化问题。为此,求偏导数: 

                                         

                                另各偏导数等于0。解得:

                                         P(y1)= P(y2) = exp(-λ1 - λ0 - 1)

                                         P(y3)= P(y4) = P(y5) = exp(-λ0 - 1)

                                将解代入拉格朗日函数得:

                                        

                                在求解L(Pλ,λ) 关于λ 的极大化问题,即:

                                        

                                于是对L(Pλ,λ)。另其对λ0,λ1的偏导数为0,得到

                                         exp(-λ1- λ0 - 1) = 3/20

                                         exp(-λ0- 1) = 7/30

                                最后就得到要求的概率分布为:

                                         P(y1)= P(y2) = 3/20

                                         P(y3)= P(y4) = P(y5) = 7/30


    參考:

    http://blog.csdn.net/v_july_v/article/details/40508465?

    utm_source=tuicool&utm_medium=referral


  • 相关阅读:
    list集合对象日期排序
    Mongodb模糊,or,and查询和日期查询
    单例模式
    代理模式
    抽象工厂模式
    java 除数运算获取两位小数
    html5 canvas 使用总结
    @MockBean 注解后 bean成员对象为 null?
    Java8 BiFunction 简单用用
    如何正确安装Ubuntu
  • 原文地址:https://www.cnblogs.com/llguanli/p/8526368.html
Copyright © 2011-2022 走看看