内容纲要

欢迎转载,作者:Ling,注明出处:机器学习:原理简明教程06-逻辑斯谛回归与最大熵模型

参考:《统计学习方法》

 

一句话概括(逻辑回归):线性回归是通过寻找一个最佳的拟合直线解决问题,cost函数为最小二乘,使用的方法是梯度下降学习参数,逻辑回归用于分类,是采用了sigmod函数变形后的指数函数模型,r然后后选择一个cost函数,通过梯度下降不断学习参数而得到最佳模型。

一句话概括(最大熵模型):最大熵模型是在满足经验期望和理论期望相等的约束条件下,求条件熵的最大化问题,它通过拉格朗日方法化简,最后得到概率的一个判别式,概率判别式无法直接求参数,需要通过GIS求近似参数,GIS通过比较经验期望和理论期望是否接近,不断进行更新,直到两者比较接近为止。

 

对数线性模型

  • 逻辑斯谛回归
  • 最大熵模型

 

逻辑斯谛分布

ml_logsticAndMaxEnt_001

 

二项逻辑斯蒂回归模型

ml_logsticAndMaxEnt_002

ml_logsticAndMaxEnt_003

 

模型参数估计

ml_logsticAndMaxEnt_004

π表示概率P,上面有为啥可以替换成w*x

 

多项逻辑斯谛回归

ml_logsticAndMaxEnt_005

ml_logsticAndMaxEnt_006

 

补充两个材料介绍:线性逻辑回归以及逻辑回归与分类,目前讲得最好的

线性逻辑回归与梯度下降

逻辑回归与分类

 

梯度下降算法:向偏导数方向递减,每次根据所有样本进行参数更新

h = sigmoid(dataMatrix*weights)     #矩阵内积

error = (labelMat - h)              #向量减法

weights += alpha * dataMatrix.transpose() * error  #矩阵内积

 

随机梯度下降:梯度下降算法在每次更新权值向量的时候都需要遍历整个数据集,该方法对小数据集尚可。但如果有数十亿样本和成千上万的特征时,它的计算复杂度就太高了。一种改进的方法是一次仅用一个样本点的回归误差来更新权值向量,这个方法叫随机梯度下降算法。好处是在线学习,即来了新样本,不必全部重新计算。

h = sigmoid(sum(dataMatrix[i]*weights)) #挑选(伪随机)第i个实例来更新权值向量

error = classLabels[i] - h

weights = weights + dataMatrix[i] * alpha * error

 

改进的随机梯度下降算法:既然随机梯度上升算法最终给出的参数不好,那是否仅仅是因为参数没有足够收敛,而算法本质是优秀的呢?对此,可以逐步减小步长,避免参数周期性的抖动。

alpha = 4/(1.0+j+i)+0.0001 #步长递减,但是由于常数存在,所以不会变成0

randIndex = int(random.uniform(0,len(dataIndex)))   #总算是随机了

h = sigmoid(sum(dataMatrix[randIndex]*weights))

error = classLabels[randIndex] - h

weights = weights + alpha * error * dataMatrix[randIndex]

del(dataIndex[randIndex])  #删除这个样本,以后就不会选到了

 

三者收敛速度比较

ml_logsticAndMaxEnt_007

 

最大熵

熵(李航:60页):

ml_logsticAndMaxEnt_008

ml_logsticAndMaxEnt_009

说明:熵越大,越无序,概率越平均,在信息论文表示信息传输需要的最小空间

 

最大熵原理(李航:80页):

ml_logsticAndMaxEnt_010

 

例子

ml_logsticAndMaxEnt_011

 

定义

ml_logsticAndMaxEnt_012

ml_logsticAndMaxEnt_013

 

最大熵学习(李航:83页):

ml_logsticAndMaxEnt_014

ml_logsticAndMaxEnt_015

ml_logsticAndMaxEnt_016

说明:

  • 即:对P(Y/X)先求导,然后在求使得熵最大的w
  • 为何最大熵模型用的是条件熵,因为更好求解

例子

ml_logsticAndMaxEnt_017

ml_logsticAndMaxEnt_018

注:该例子比较容易通过求导w获得最后概率值,但是实际问题有n个w,很难一一求导求极值,所以需要之后的GIS方法

 

极大似然估计(李航:87,不看也行)

ml_logsticAndMaxEnt_019

ml_logsticAndMaxEnt_020

 

模型学习的最优化算法

    常用的方法有改进的迭代尺度法、梯度下降法、牛顿法或拟牛顿法,牛顿法或拟牛顿法一般收敛速度更快。

 

GIS算法:非常好的资料

1. 初始化所有λi 为任意值,一般可以设置为0,即:

ml_logsticAndMaxEnt_021

其中λ的上标(t)表示第t论迭代,下标i表示第i个特征,n是特征总数。

2.  重复下面的权值更新直至收敛:

ml_logsticAndMaxEnt_022

收敛的判断依据可以是λi 前后两次的差价足够小。其中C一般取所有样本数据中最大的特征数量

1) 19式子表示,如果理论和实际期望差不多,λ不要調整,如果如果两者相差比较大,理论的过大,调小λ,否则调大

2)

ml_logsticAndMaxEnt_023

3)

ml_logsticAndMaxEnt_024

N为样本数,f为(xj,yj)的组合是否出现,i表示(xj,yj)在所有xy组合的下标,就是第几个xy组合

该式子表示样本期望,p表示每个样本概率,都是1/N

ml_logsticAndMaxEnt_025

权值乘以到底组合是否存在,n是所有x,y组合数,全部累加,除以Z,该式子是理论期望

4)整个公式含义:就是已经给出一个经验公式,然后通过该公式更新权值。该公式的两个期望,样本期望是固定的,通过统计x,y不同组合数得到n个值,理论期望需要借助上一轮的权值计算,主要通过迭代N个样本得到

注意n与N区别

 

改进的迭代尺度法 :

ml_logsticAndMaxEnt_026

ml_logsticAndMaxEnt_027

ml_logsticAndMaxEnt_028

ml_logsticAndMaxEnt_029

拟牛顿法

ml_logsticAndMaxEnt_030

ml_logsticAndMaxEnt_031