Logistic Regression

来源:互联网 发布:禁止系统安装软件 编辑:程序博客网 时间:2024/05/16 17:10

Logistic Regression

Logistic 函数

f(x)=11+ex

函数图像


这里写图片描述

逻辑斯蒂回归是分类算法,其分类原理是利用Logistic函数计算对当前数据计算其属于某一类的后验概率P(Y|X),选取最大的后验概率对应的类别作为分类标签

二分类

对于训练数据集{x1,x2,x3,...,xm},其对应的类别:yiϵ{0,1}
对某条数据x,计算其在 0 1 类的后验概率


P(Y=1|x)=ewTx+b1+ewTx+b=11+e(wTx+b)


P(Y=0|x)=11+ewTx+b=e(wTx+b)1+e(wTx+b)

其中:w是权值系数,b是偏置,wx都是列向量
根据其最大的后验概率对于的类别作为分类标签

在实际计算中往往在x中增加一个为1的常数值,将偏置b写如w
x=(1,xT)T
w=(b,wT)T
上面的形式变成:


P(Y=1|x)=11+ewTx=ewTx1+ewTx


P(Y=0|x)=ewTx1+ewTx=11+ewTx

几率
表示一个事件发生的概率与不发生概率的比值,设发生的概率是p
则几率:p1p
对数几率
几率的对数
logp1p

在逻辑斯蒂回归模型中,对数几率:logP(Y=1|x)1P(Y=1|x)=wTx
可以看出输出Y=1的对数几率是输入x的线性函数,或者说输出Y=1的对数几率是由输入x的线性函数表示的模型,这就是逻辑斯蒂回归模型

如何求参数w?
利用极大似然估计进行求解
对于训练数据集{x1,x2,x3,...,xm},其对应的类别:yiϵ{0,1}

π(xi)=P(Y=1|xi)

1π(xi)=P(Y=0|xi)
似然函数:
L(w)=i=ni=1π(xi)yi[1π(xi)]1yi
取对数
logL(w)=i=mi=1{yilogπ(xi)+(1yi)log[1π(xi)]}

可以对logL(w)求导,利用梯度下降法或者拟牛顿法进行求解。

上面的logL(w)可以看做事训练误差,在其他有关介绍逻辑斯蒂回归模型中,其损失函数往往是对训练误差取平均值,同时我们知道极大似然估计我们需要求logL(w)的最大值,而梯度下降法或者拟牛顿法求解的往往是函数的极小值,极大转换成极小,只需要在函数前面加上负号。关于梯度上升法原理也是一样,用来求解极大值问题,其每次沿着梯度变化最大的方向修改w
最终我们得到逻辑斯蒂回归问题的损失函数:


J(w)=1mlogL(w)=1mi=mi=1{yilogπ(xi)+(1yi)log[1π(xi)]}

这里的损失函数是对数损失函数,常见的几种损失函数《统计学习方法》中有介绍
对上式求导,直接利用梯度下降法对w进行求解
先整理上式
J(w)=1mlogL(w)=1mi=mi=1{yilogπ(xi)+(1yi)log[1π(xi)]}
=1mi=mi=1{yilogπ(xi)1π(xi)+log[1π(xi)]}
=1mi=mi=1{yiwTxi+log[1π(xi)]}

先对后面求导
log[1π(xi)]w=11π(xi)(1)π(xi)w=π(xi)xi
其中:
π(xi)=11+ewTxi
π(xi)w=π(xi)(1π(xi))xi
若理解不透可以把π(xi)看成π(wTxi)
f(z)=11+ez
其导数:f(z)=f(z)(1f(z))
所以
J(w)w=1mi=mi=1{yiwTxi+log[1π(xi)]}w=1mi=mi=1[yiπ(xi)]xi

w的更新规则
w(n+1)=w(n)+ηΔw
其中:
Δw=J(w)w=1mi=mi=1[yiπ(xi)]xi

其中:yiπ(xi)可以理解为训练误差,这样就与最小二乘法中求解的梯度很类似
η是学习率或者说步长
这里是批量梯度下降法
对于随机梯度下降法
Δw=[yiπ(xi)]xi
xi是从训练集中随机取一个值,每次更新w的时候只是利用一个训练数据的误差进行更新

也可以根据拟牛顿法、BFGS等求解

多分类

one-vs-all
利用二分类的思想,把其中一类当作正类,其他类当作负类,运行一次分出一类,当有k类时候运行k-1次分出k类
one-vs-one
softmax regression方法,这个特别是在神经网络的最后输出层用到的多。
对于训练数据集{x1,x2,x3,...,xm},其对应的类别:yiϵ{1,2,3,...,k},使用one-vs-all策略可以将两类分类器扩展为多类分类器,即将选取任意一类,再将其它所有类看成是一类,构建一个两类分类器,这样一共需要K-1个分类器。

对于给定的测试输入 x,我们想用假设函数针对每一个类别j估算出概率值 p(Y=j|x)。也就是说,我们想估计 x 的每一种分类结果出现的概率。因此,我们的假设函数将要输出一个 k 维的向量(向量元素的和为1)来表示这 k个估计的概率值。 具体地说,我们的假设函数 h(x) 形式如下:


这里写图片描述

其中 w1,w2,,wk 是模型的参数。请注意 1kj=1ewTjx 这一项对概率分布进行归一化,使得所有概率之和为 1
当是k类的问题,根据h(x)中元素的最大值对于的类别作为分类标准
softmax 回归算法的代价函数

J(w)=1mmi=1j=kj=1I(yi=j)log(P(yi=j)|xi)

其中:I(x),当x为真的时候为1,假的时候为0,可以看出预测类别与真实类别相等时候,log(P(yi=j)|xi)对代价函数有影响。
可以看到,Softmax代价函数与logistic 代价函数在形式上非常类似,只是在Softmax损失函数中对类标记的 k 个可能值进行了累加。注意在Softmax回归中将x 分类为类别 j 的概率为:

P(y=j|x;w)=ewTjxkl=1ewTlx

求解过程也是通过迭代的方式

优缺点

优点
1.实现简单
2.分类时计算量非常小,速度很快,存储资源低
3.可以输出数据属于某一类的概率
缺点
1.容易欠拟合,一般准确度不太高
2.只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分;
3.当输入数据中某些变量是噪声的时候影响预测模型
4.输入样本点需要相互独立,否则将会倾向于这些相关数据点

逻辑斯蒂回归与神经网络的区别

逻辑斯蒂回归模型图
这里写图片描述

神经网络模型图
这里写图片描述
可以看出:
1.Logistic Regression是一个单层神经网络
2.多个LR组合在一起形成神经网络模型
激活函数
1.LR中用到的是逻辑斯谛函数或者说是sigmoid函数
2.神经网络中可以用sigmoid函数 也可以用其他函数如:tanh函数等
这里写图片描述
最优解
1.LR的损失函数是凸函数,存在最优解,通过梯度下降法或者其他算法能够找到这个最优解
2.将多个LR组合在一起后形成的神经网络,损失函数不能够保证还是凸函数,通过反馈神经网络算法求解的可能陷入局部最优解
多分类
1.LR对于多分类,可以 利用One-vs-All or One-vs-One进行,对于one vs all的代价比较高, one vs one 可以是softmax算法
2.神经网络多分类中最后一层softmax算法
性能
1.LR简单,消耗内存小
2.NN模型复杂,代价高
其他
神经网络算法比较多,用处各有不同,分类、回归、语义识别、翻译等
参考1:UFLDL

参考2:《统计学习方法》
参考2:MLFAQ
.

0 0
原创粉丝点击