赞
踩
本文介绍逻辑回归方法。
逻辑回归(logistic regression)也称“对数几率回归”或“逻辑斯谛回归”,是统计学习中的经典分类方法。最大熵是概率模型学习的一个准则,将其推广到分类问题得到最大熵模型(maximum entropy model)。逻辑回归模型与最大熵模型都属于对数线性模型。
【定义:逻辑分布(logistic distribution)】设X是连续随机变量,X服从逻辑分布是指X具有下列分布函数和密度函数:
式中, 为位置参数, 为形状参数。
对数几率分布的密度函数 和分布函数 的图形如下图。分布函数属于对数几率函数,其图形是一条S形曲线(sigmoid curve)。该曲线以点 为中心对称,即满足: 。曲线在中心附近增长速度较快,在两端增长速度较慢。形状参数 的值越小,曲线在中心附近增长得越快。
二项逻辑回归模型(binomial logistic regression model)是一种分类模型,由条件概率分布 表示。形式为参数化的对数几率分布。这里随机变量 取值为实数,随机变量 取值为1或0。
【定义:逻辑回归模型】二项逻辑回归模型是如下的条件概率分布:
这里, 是输入, 是输出, 和 是参数, 称为权值向量, 称为偏置, 为 和 的内积。
对于给定的输入实例 x,求得 和 。逻辑回归比较两个条件概率值的大小,将实例x分到概率值较大的那一类。
有时为了方便,将权值向量和输入向量加以扩充,仍记作 ,即:
, ,
这时,逻辑回归模型如下:
,
一个事件的几率(odd)是指该事件发生的概率与该事件不发生的概率的比值。如果事件发生的概率是p,那么该事件的几率是 ,该事件的对数几率(log odds)或logit函数是: 。
对逻辑回归,有: ,这就是说,在逻辑回归模型中,输出 的对数几率是输入 的线性函数。或者说输出 的对数几率是由输入 的线性函数表示的模型,即逻辑回归模型。
换个角度,对输入 进行分类的线性函数 ,其值域为实数域。注意这里 。通过逻辑回归模型定义,可将线性函数 转换为概率: ,这时线性函数的值越接近正无穷,概率值就越接近1;线性函数的值越接近负无穷,概率值就越接近0。这样的模型就是逻辑回归模型。
逻辑回归模型学习时,对于给定的训练数据集 ,其中 ,可以应用极大似然法估计模型参数,从而得到逻辑回归模型。
设: , ,似然函数为:
对数似然函数为:
对 求极大值,得到 的估计值。
这样,问题就变成了以对数似然函数为目标函数的最优化问题。逻辑回归学习中通常采用的方法是梯度下降法及牛顿法。
假设 的极大似然估计值是 ,那么学到的逻辑回归模型为:
, 。
多项逻辑回归模型(multi-nominal logistic regression model)可用于多类分类。假设离散型随机变量Y的取值集合是 ,那么多项逻辑回归模型是:
这里,。
最大熵模型(maximum entropy model)由最大熵原理推导实现。
最大熵原理是概率模型学习的一个准则。最大熵原理认为,学习概率模型时,在所有可能的概率模型(分布)中,熵最大的模型是最好的模型。通常用约束条件来确定概率模型的集合,所以最大熵原理也可以表述为满足约束条件的模型集合中选取熵最大的模型。
假设离散随机变量X的概率分布是 ,则其熵是: ,
熵满足下列不等式: ,式中, 是 的取值个数,当且仅当 的分布是均匀分布时右边的等号成立。这就是说,当 服从均匀分布时,熵最大。
直观地,最大熵原理认为要选择的概率模型首先必须满足已有的事实,即约束条件。在没有更多信息的情况下,那些不确定的部分都是“等可能的”。最大熵原理通过熵的最大化来表示等可能性。“等可能”不容易操作,而熵则是一个可优化的数值指标。
最大熵原理是统计学习的一般原理,将它应用到分类得到最大熵模型。
假设分类模型是一个条件概率分布 , 表示输入, 表示输出, 和 分别是输入和输出的集合。这个模型表示的是对于给定的输入 ,以条件概率 输出 。
给定一个训练数据集 ,学习的目标是用最大熵原理选择最好的分类模型。
首先考虑模型应该满足的条件。给定训练数据集,可以确定联合分布 的经验分布和边缘分布 的经验分布,分别以 和 表示,这里:
其中, 表示训练数据中样本 出现的频率, 表示训练数据中输入 出现的频数, 表示训练样本容量。
用特征函数(feature function) 描述输入x和输出y之间的某一个事实。其定义是:
它是一个二值函数,当x和y满足这个事实时取值为1,否则取值为0。
特征函数 关于经验分布 的期望值,用 表示: 。
特征函数 关于模型 与经验分布 的期望值,用 表示: 。
如果模型能够获取训练数据中的信息,那么就可以假设这两个期望值相等,即:,或
将 上两式作为模型学习的约束条件,假如有n个特征函数 ,那么就有n个约束条件。
【定义:最大熵模型】假设满足所有约束条件的模型集合为:
定义在条件概率分布 上的条件熵为:
则模型集合C中条件熵 最大的模型称为最大熵模型。式中对数为自然对数。
最大熵模型的学习过程就是求解最大熵模型的过程。最大熵模型的学习可以形式化为约束最优化问题。
对于给定的训练数据集 以及特征函数 ,最大熵模型的学习等价于约束最优化问题:
按照最优化问题的习惯,将求最大值问题改写为等价的求最小值问题:
求解约束最优化问题所得出的解,就是最大熵模型学习的解。下面是具体推导过程。
将约束最优化的原始问题转换为无约束最优化的对偶问题。通过求解对偶问题求解原始问题。
首先,引进拉格朗日乘子 ,定义拉格朗日函数 :
最优化的原始问题是: ,对偶问题是: 。由于拉格朗日函数 是P的凸函数,原始问题的解与对偶问题的解是等价的。这样,可以通过求解对偶问题来求解原始问题。
首先,求解对偶问题内部的极小化问题 。 是w的函数,将其记作:
称为对偶函数,同时,将其解记作: ,
具体地,求 对 的偏导数:
令偏导数等于0,在 的情况下,解得:
由于 ,得: ,
其中, 。
称为规范化因子; 是特征函数; 是特征的权值。由2上两式表示的模型 就是最大熵模型,这里w是最大熵模型中的参数向量。
之后,求解对偶问题外部的极大化问题: ,将其解记为 ,即: 。这就是说,可以应用最优化算法求解对偶函数 的极大化,得到 , 用来表示 。这里 是学习到的最优模型(最大熵模型)。也就是说,最大熵模型的学习归结为对偶函数 的极大化。
已知训练数据的经验概率分布 ,条件概率分布 的对数似然函数表示为:
当条件概率分布 是最大熵模型时,对数似然函数 为:
对偶函数 :
最后一步用到 。比较以上两式,可得:
可以将最大熵模型写成更一般的形式:
这里, 为输入, 为输出, 为权值向量, 为任意实值特征函数。
最大熵模型与逻辑回归模型有类似的形式,它们又称为对数线性模型(log linear model)。模型学习就是在给定的训练数据条件下对模型进行极大似然估计或正则化的极大似然估计。
逻辑回归模型,最大熵模型学习归结为以似然函数为目标函数的最优化问题,通常通过迭代算法求解。从最优化的观点看,这时的目标函数具有很好的性质。它是光滑的凸函数,因此多种最优化的方法都适用,保证能找到全局最优解。常用的方法有改进的迭代尺度法、梯度下降法、牛顿法或拟牛顿法。牛顿法或拟牛顿法一般收敛速度更快。
改进的迭代尺度法(improved iterative scaling, IIS)是一种最大熵模型学习的最优化算法。
已知最大熵模型为:
对数似然函数为: ,目标是通过极大似然估计学习模型参考,即求对数似然函数的极大值 。
IIS的想法是:假设最大熵模型当前的参数向量是 ,我们希望找到一个新的参数向量
对于给定的经验分布
利用不等式
将右端记为:
于是有: ,即 是对数似然函数改变量的一个下界。
如果能找到适当的 使下界 提高,那么对数似然函数也会提高。然而,函数 中的 是一个向量,含有多个变量,不易同时优化。IIS试图一次只优化其中一个变量 ,而固定其他变量 。
为达到这一目的,IIS进一步降低下界 。具体地,IIS引进一个量 ,因为 是二值函数,故 表示所有特征在 出现的次数。这样 可以改写为:
利用指数函数的凸性以及对任意 ,有 ,且 这一事实,根据Jensen不等式,得到:
于是有:
记:
于是得到:
求
上式中,除 外不含任何其他变量。令偏导数为0,得到:
于是依次对 求解以上方程可以求出 。
【改进的迭代尺度算法IIS】
输入:特征函数 ;经验分布 ,模型 ;
输出:最优参数值
(1)对所有
(2)对每一
a. 令 是方程:
b. 更新 值:
(3)如果不是所有 都收敛,重复步骤(2)。
这一算法关键的一步是(a),即求解 。如果 是常数,即对任何x,y,有
如果 不是常数,那么必须通过数值计算求 。简单有效的方法是牛顿法。牛顿法通过迭代求得
只要适当选取初始值
对于最大熵模型而言,
目标函数:
梯度:
其中:
【最大熵模型学习的BFGS算法】
输入:特征函数 ;经验分布
输出:最优参数值
(1)选定初始点
(2)计算
(3)由 求出 ;
(4)一维搜索:求 使得:
(5)置 ;
(6)计算
(7)置 ,转(3)。
sklearn.linear_model.LogisticRegression 参数如下:
参数 | 参数类型和取值范围 | 说明 |
penalty | {'l1','l2', 'elasticnet','none'} | 惩罚项,正则化选择参数,默认'l2'。 l1和l2分别对应L1正则化和L2正则化。penalty的选择会影响损失函数优化算法(solver)的选择:如果是L2正则化,可选{'newton-cg','lbfgs','sag'}算法;如果是L1正则化,只能选择'liblinear';如果是'elasticnet',只能选择'saga'算法;如果是'none'(不支持'liblinear')则不作正则化。 |
dual | 布尔型 | 是否使用对偶算法,默认'False'不使用。 对偶算法仅适用于l2正则化和liblinear算法。如果样本数量大于特征数量推荐使用'False'。 |
tol | 浮点型 | 允许提前停止。默认值是:1e-4。 |
C | 浮点型 | 正则强度的倒数,必须为正的浮点数。默认值1.0。 与支持向量机中一样,较小的值指定了更强的正则化。 |
fit_intercept | 布尔型 | 指定是否将常量(也称偏差或截距)添加到决策函数。默认是True。 |
intercept_scaling | 浮点型 | 仅用于算法是'liblinear'且fit_intercept是True时。 |
class_weight | 字典或‘balanced' | 样本权重。 |
random_state | 整型,随机状态实例 | 当solver参数取{'sag','sgag','liblinear'}时,用于随机抽取数据。 |
solver | {'newton-cg','lbfgs', 'liblinear','sag','saga'} | 优化算法选择参数,默认'lbfgs'。有4种算法可以选择: (a) liblinear:使用开源的liblinear库,内部使用了坐标轴下降法来迭代优化损失函数。 (b) lbfgs:拟牛顿法的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。 (c) newton-cg:也是牛顿法家族的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。 (d) sag:即随机平均梯度下降,是梯度下降法的变种,和普通梯度下降法的区别是每次迭代仅仅用一部分的样本来计算梯度,适合于样本数据多的时候,SAG是一种线性收敛算法,这个速度远比SGD快。 |
max_iter | 整型 | 求解程序收敛所需的最大迭代次数。默认值100。 |
multi_class | {'auto','ovr', 'multinomial'} | 默认'auto'。 多类选项可以是'ovr'或'multinomial'。 如果选择的选项是'ovr',那么二元问题适合每个标签。 另外最小化损失是整个概率分布中的多项式损失拟合。 不适用于liblinear算法。 |
verbose | 整型,随机状态实例 | 对于liblinear和lbfgs算法,将verbose设置为任何正数以表示详细程度。默认值为0。 |
warm_start | 布尔型 | 热启动。默认值为False。 当为True时,重复使用之前的调用来初始化,否则擦除之前的结果。支持{'lbgfs','newton-cg','sag','saga'}。对liblinear没用。 |
n_jobs | 整型 | 设置并行,默认值为None。 如果multi_class='ovr',指定对类进行并行化时使用的CPU内核数。当solver是'liblinear'时,无论multi_class是什么,该参数都会被忽略。-1表示使用所有处理器。None一般表示1,除非它在joblib.parallel_backend上下文中。 |
l1_ratio | 浮点型 | Elastic-Net混合参数,范围是[0,1]。默认是None。 只用于penalty='elasticnet'时。l1_ratio=0等效于penalty='l2';l1_ratio=1等效于penalty='l1'。0<l1_ratio<1则是L1与L2的组合。 |
参考:
[1]. 李航. 统计学习方法(第二版)
[2]. 周志华.机器学习
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。