zoukankan      html  css  js  c++  java
  • 最大熵原理

    1. 前言

    最大熵模型(maximum entropy model, MaxEnt)也是很典型的分类算法了,它和逻辑回归类似,都是属于对数线性分类模型。在损失函数优化的过程中,使用了和支持向量机类似的凸优化技术。而对熵的使用,让我们想起了决策树算法中的ID3和C4.5算法。理解了最大熵模型,对逻辑回归,支持向量机以及决策树算法都会加深理解。本文就对最大熵模型的原理做一个小结。

    2. 信息论回顾

    2.1 信息熵

    熵度量了事物的不确定性,越不确定的事物,它的熵就越大。在没有外部环境的作用下,事物总是向着熵增大的方向发展,所以熵越大,可能性也越大。

    [H(X)=-sum_{i=1}^np_{(i)}logp_{(i)} ]

    2.2 条件熵

    X确定时,Y的不确定性度量。
    在X发生是前提下,Y发生新带来的熵。

    [H(Y|X)=H(X,Y)-H(X)=-sum_{x,y}p(x,y)logp(y|x) ]

    2.3 联合熵

    (X,Y)在一起时的不确定性度量

    [H(X,Y)=-sum_{x,y}p(x,y)logp(x,y) ]

    2.4 互信息(信息增益)

    表示两个变量X与Y是否有关系,以及关系的强弱。

    [I(X,Y)=∫_X∫_YP(X,Y)logfrac{P(X,Y)}{P(X)P(Y)} ]

    [I(X,Y)=H(Y)-H(Y|X) ]

    [I(X,Y)=H(Y)+H(X)-H(X,Y) ]

    可以看出,I(X,Y)可以解释为由X引入而使Y的不确定度减小的量,这个减小的量为H(Y|X)。所以,如果X,Y关系越密切,I(X,Y)就越大,X,Y完全不相关,I(X,Y)为0,所以互信息越大,代表这个特征的分类效果越好。

    3. 最大熵模型的定义

    最大熵模型假设分类模型是一个条件概率分布(P(Y|X)),X为特征,(Y)为输出。

    给定一个训练集((x_1,y_1),(x_2,y_2),...,(x_m,y_m)),其中x为n维特征向量,y为类别输出。我们的目标就是用最大熵模型选择一个最好的分类类型。

    在给定训练集的情况下,我们可以得到总体联合分布(P(X,Y))的经验分布(P'(X,Y))和边缘分布(P(X))的经验分布(P'(X))(P'(X,Y))即为训练集中(X,Y)同时出现的次数除以样本总数m,(P'(X))即为训练集中(X)出现的次数除以样本总数m。

    用特征函数(f(x,y))描述输入x和输出y之间的关系。定义为:

    [f(x,y)=egin{cases} 1, & x,y;has;some;relation\ 0, & others end{cases} ]

    可以认为只要出现在训练集中出现的((x_i,y_i)),其(f(x_i,y_i)=1). 同一个训练样本可以有多个约束特征函数。

    特征函数(f(x,y))关于经验分布(P'(X,Y))的期望值,用(E_P(f))表示为:

    [E_{P'}(f) = sumlimits_{x,y}{P'}(x,y)f(x,y) ]

    特征函数(f(x,y))关于条件分布(P(Y|X))和经验分布(P'(X))的期望值,用(E_P(f))表示为:

    [E_{P}(f) = sumlimits_{x,y}{P'}(x)P(y|x)f(x,y) ]

    如果模型可以从训练集中学习,我们就可以假设这两个期望相等。即:

    [E_{{P'}}(f) = E_{P}(f) ]

    上式就是最大熵模型学习的约束条件,假如我们有M个特征函数(f_i(x,y)(i=1,2...,M))就有(M)~个约束条件。可以理解为我们如果训练集里有m个样本,就有和这m个样本对应的M个约束条件。

    这样我们就得到了最大熵模型的定义如下:

    假设满足所有约束条件的模型集合为:

    [E_{{P'}}(f_i) = E_{P}(f_i) (i=1,2,...M) ]

    定义在条件概率分布(P(Y|X))上的条件熵为:

    [H(P) = -sumlimits_{x,y}{P'}(x)P(y|x)logP(y|x) ]

    我们的目标是得到使(H(P))最大的时候对应的(P(y|x)),这里可以对(H(P))加了个负号求极小值,这样做的目的是为了使(-H(P))为凸函数,方便使用凸优化的方法来求极值。

    4. 最大熵模型小结

    最大熵模型在分类方法里算是比较优的模型,但是由于它的约束函数的数目一般来说会随着样本量的增大而增大,导致样本量很大的时候,对偶函数优化求解的迭代过程非常慢,scikit-learn甚至都没有最大熵模型对应的类库。但是理解它仍然很有意义,尤其是它和很多分类方法都有千丝万缕的联系。 

    惯例,我们总结下最大熵模型作为分类方法的优缺点:

    最大熵模型的优点有:

    1. 最大熵统计模型获得的是所有满足约束条件的模型中信息熵极大的模型,作为经典的分类模型时准确率较高。
    2. 可以灵活地设置约束条件,通过约束条件的多少可以调节模型对未知数据的适应度和对已知数据的拟合程度

    最大熵模型的缺点有:

    1. 由于约束函数数量和样本数目有关系,导致迭代过程计算量巨大,实际应用比较难。
  • 相关阅读:
    微软一站式技术框架(AllInOne Code Framework(AIO)) 登陆 MSDN中国首页
    The stepbystep guide of making a C# (or VB.NET) Windows 7 Trigger Start Service
    AllInOne Code Framework: 微软一站式开发技术框架 示例命名规则和目录结构说明
    Windows 7 新特性 Shell Library 编程接口介绍
    一步一步教你如何编写VC#,VB.NET或VC++代码玩转Windows Shell Known Folders
    微软一站式开发技术框架解决方案 年内展望
    AllInOne Code Framework: 微软一站式开发技术框架解决方案 2009730 新增sample code简介
    AllInOne Code Framework: 微软一站式开发技术框架 2009917 新增代码示例简介
    AllInOne Code Framework: 微软一站式开发技术框架解决方案 2009826 新增sample code简介
    微软 AllInOne Code Framework (AIO) 客户端应用程序 期待您的见解
  • 原文地址:https://www.cnblogs.com/huangyc/p/10403554.html
Copyright © 2011-2022 走看看