本文主要是介绍逻辑回归的前因后果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
逻辑回归的前因后果
LR的泛化形式 – 广义线性模型
最简单的线性回归模型,函数对于x和w都是线性的:
它是二维坐标系中的一条直线,或者三维空间中的一个平面,在高维空间则是超平面。为了把它用于分类,可以给它加一个激活函数,把值域压缩到小区间,比如(0, 1)之间,这就是广义线性模型:
当激活函数是logistic-sigmoid函数时,这个分类方法就是LR:
从回归方法演化而来,LR虽用于分类,它的输出却不是{0,1}两类,而是一个连续的函数,所以名字还叫“回归”而不是“分类”。
为什么用logistic-sigmoid函数
首先,LR是判别模型,即它直接求后验概率,那么想象一下,一个只有两类的后验概率应该是什么形状?
用例子说明,假设男女比例相等,男女两类的先验概率:p(男人)=1/2,p(女人)=1/2
现在给先验概率加一个条件:身高,即知道一个人的身高,猜它是男的概率,是女的概率。高个子通常是男的,但也可能是女的。在各种不同身高条件下,有了一系列后验概率:
p(男|150)=1/8 | p(男|160)=1/5 | p(男|170)=1/2 | p(男|180)=4/5 | p(男|190)=7/8
p(女|150)=7/8 | p(女|160)=4/5 | p(女|170)=1/2 | p(女|180)=1/5 | p(女|190)=1/8
如下图,后验概率就应该是比较平缓的S形:
我们就照这个形状去找,发现sigmoid很合适。当然S形函数不只它一个,比如用-1和1表示两类时,常用的tanh,也可以用于拟合后验概率。
但是理由不止于此,logistic-sigmoid其实来源于条件概率(class-conditional)符合协方差相同的高斯分布的假设。在生成模型中,假设各个类内的分布,即class-conditional符合高斯分布,且协方差矩阵相等,推导可知,高斯分布中x的2次幂抵消,成为sigmoid激活函数中的线性函数。
当我们训练w时我们在训练什么
后验概率公式最外层是个sigmoid,它形状固定不变,但是从不同尺度看上去效果会不一样,小尺度分类模糊,大尺度分类明确,形状不变,只是观感不同,如下图,(a)图其实只是(b)图的局部放大。
对于输入x,如果我们训练得到的是一个很小的w,那么sigmoid函数的每个输入 wTx 都很小,整个数据集区分效果如(a)图;如果我们训练得到的是一个很大的w,数据集区分效果如(b)图。
比如通过身高x判断性别,区分度就不高,训练得到的参数w很小,而对于完全可分数据,训练得到的w就很大,近似阶跃函数。样本较少时,可能遇到完全可分的情况,容易出现过拟合。
理解 wTϕ
wTϕ 不考虑x的非线性,即 wTx ,以二维面上的两类样本为例,样本平面就是 x1 , x2 扩展成的平面, z=wTx 是面上的点到样本平面的投影距离,当z=0,即 wTx=0 是样本平面和取值平面的交线,对应样本的判别函数。
交叉熵or最小二乘
线性回归用最小二乘(LS)做参数估计,它是最大似然估计(MLE)的一种特殊形式,LS比MLE多一个额外条件:误差符合高斯分布,LS形如 L=12(y−t)2 ,此处t只能取0,1,而估计值y却是连续的,离散值和连续值的差不能很好的描述误差值,LS不适合逻辑回归。
交叉熵损失函数是用MLE推导得来(参考PRML 4.3.2):
它有两个和项,分别对应t的两个离散值,这样就没有离散值和连续值求差的问题了,直觉理解,y越接近t,损失越小:
当t=1,若要最小化 L=−lny ,就需要最大化 y,y∈(0,1) ,就期望 y 尽量等于1。
当t=0,若要最小化
此处交叉熵损失函数是从MLE推导的,其实也可以直接去理解它的定义(可以参考cross-entropy )它可以表示两个概率分布的距离。
牛顿法vs梯度下降
由于sigmoid引入了非线性,似然函数没有解析解,可以使用梯度下降或这牛顿法。
梯度下降用一阶导数,找到最陡的斜坡,滚下去。
牛顿法用二阶导数,求一阶导数
梯度下降计算量少,迭代次数多,对函数的连续性、平滑性要求低;牛顿法计算要用海森矩阵,计算量大,但收敛快,由于二阶导数,对函数的连续性、平滑性要求更高。
这篇关于逻辑回归的前因后果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!