逻辑回归 (Logistic regression)
一. 线性模型
线性模型试图学一个通过d个属性的线性组合来进行预测的函数
f(x)=w1x1+w2x2+...wdxd+bf(x)=w1x1+w2x2+...wdxd+b
f(x)=wTx+bf(x)=wTx+b
参数w,bw,b学得之后,模型就得以确定。
线性回归
回归任务的损失函数——平方误差
数据集D=(x1,y1),(x2,y2),...(xm,ym)D=(x1,y1),(x2,y2),...(xm,ym)
xx是一元 的,
(w∗,b∗)=argminw,b∑i=1m(f(xi)−yi)2(w∗,b∗)=argminw,b∑i=1m(f(xi)−yi)2
=argminw,b∑i=1m(yi−wxi−b)2=argminw,b∑i=1m(yi−wxi−b)2
=argminw,bE(w,b)=argminw,bE(w,b)
基于平方误差最小化来进行模型的求解的方法称为最小二乘法
对w,bw,b求导,令导数为0就得到最优解的闭式解
∂E(w,b)∂w=2(w∑i=1mx2i−∑i=1m(yi−b)xi)∂E(w,b)∂w=2(w∑i=1mxi2−∑i=1m(yi−b)xi)
∂E(w,b)∂b=2(mb−∑i=1m(y−wxi))∂E(w,b)∂b=2(mb−∑i=1m(y−wxi))
更一般的情况,样本x是由d个属性描述的,此时称为多元线性回归
f(X)=Xw=⎡⎣⎢⎢⎢⎢⎢⎢x(1)1x(1)2⋮x(1)mx(2)1x(2)2⋮x(2)m⋯⋯⋱⋯x(d)1x(d)2⋮x(d)m111⎤⎦⎥⎥⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢⎢⎢⎢w1w2⋮wdb⎤⎦⎥⎥⎥⎥⎥⎥⎥≈y=⎡⎣⎢⎢⎢⎢y1y2⋮ym⎤⎦⎥⎥⎥⎥f(X)=Xw=[x1(1)x1(2)⋯x1(d)1x2(1)x2(2)⋯x2(d)1⋮⋮⋱⋮xm(1)xm(2)⋯xm(d)1][w1w2⋮wdb]≈y=[y1y2⋮ym]
平方误差
w∗=argminw(y−Xw)T(y−Xw)w∗=argminw(y−Xw)T(y−Xw)
=argminwE(w)=argminwE(w)
求导
∂E(w)∂w=2XT(Xw−y)∂E(w)∂w=2XT(Xw−y)
导数为0
2XTXw=2XTy2XTXw=2XTy
XTXXTX为满秩矩阵(可逆矩阵)
w∗=(XTX)−1XTyw∗=(XTX)−1XTy
X 的列数大于行数,则XTXXTX不满秩 为什么??
广义线性模型
线性回归模型
y=wTx+by=wTx+b
对数线性回归模型
lny=y′=wTx+blny=y′=wTx+b
更一般地, g(.)g(.)单调可微。
y=g−1(wT,x+b)y=g−1(wT,x+b)
二. 逻辑回归(对数几率回归)
逻辑回归是一个分类算法,因为它的原理里面却残留着回归模型的影子。(回归模型+logistic function)
在广义线性模型中我们得到回归模型产生的预测值z=wTx+bz=wTx+b,
对于二分类任务只需要将z映射到y∈{0,1}y∈{0,1}。
逻辑回归就是用对数几率函数(logistic function)或者称sigmoid函数
y=11+e−z=11+e−(wTx+b)=e(wTx+b)e(wTx+b)+1y=11+e−z=11+e−(wTx+b)=e(wTx+b)e(wTx+b)+1
预测结果z大于0,判为正例;小于0判为反例。(阶跃函数也可以办得到)
但是logistic function 单调可微,不仅仅预测出类别,还可以得到近似概率。
把yy视为样本作为正例的可能性,则是其反例的可能性。
P(y=1|x)=e(wTx+b)e(wTx+b)+1P(y=1|x)=e(wTx+b)e(wTx+b)+1
P(y=0|x)=1e(wTx+b)+1P(y=0|x)=1e(wTx+b)+1
定义对数几率为
logP(y=1|x)P(y=0|x)=wTx+blogP(y=1|x)P(y=0|x)=wTx+b
对数几率是输入x的线性函数
模型+策略+算法
二元的逻辑回归算法的模型是学习条件概率
P(y=1|x)=e(wTx+b)e(wTx+b)+1P(y=1|x)=e(wTx+b)e(wTx+b)+1
P(y=0|x)=1e(wTx+b)+1P(y=0|x)=1e(wTx+b)+1
策略:令每个样本属于其真实标记的概率越大越好,(似然函数最大化)
给定数据集{(xi,yi)}mi=1{(xi,yi)}i=1m, 对数似然函数
l(w,b)=∑i=1mlnp(yi|xi;w,b)l(w,b)=∑i=1mlnp(yi|xi;w,b)
算法:
为方便表示,(w,b)(w,b)其实可以表示在一起,见上多元线性回归公式部分w=(w;b);x=(x,1)w=(w;b);x=(x,1)
令
P(y=1|x)=π(x),P(y=0|x)=1−π(x)P(y=1|x)=π(x),P(y=0|x)=1−π(x)
则
p(yi|xi;w)=π(x)yi(1−π(x))1−yip(yi|xi;w)=π(x)yi(1−π(x))1−yi
重写对数似然函数
l(w)=∑i=1mlnp(yi|xi;w)l(w)=∑i=1mlnp(yi|xi;w)
=∑i=1mln[π(x)yi(1−π(x))1−yi]=∑i=1mln[π(x)yi(1−π(x))1−yi]
=∑i=1m[yilnπ(xi)+(1−yi)ln(1−π(xi))]=∑i=1m[yilnπ(xi)+(1−yi)ln(1−π(xi))]
=∑i=1m[yilnπ(xi)1−π(xi)+ln(1−π(xi))]=∑i=1m[yilnπ(xi)1−π(xi)+ln(1−π(xi))]
=∑i=1m[yi(wTxi)−ln(1+ewTxi)]=∑i=1m[yi(wTxi)−ln(1+ewTxi)]
求梯度
∂L∂w=∑i=1myixTi−ewTxi1+ewTxixTi∂L∂w=∑i=1myixiT−ewTxi1+ewTxixiT
=∑i=1m(yi−π(xi))xTi=∑i=1m(yi−π(xi))xiT
更新公式
w=w−η∑i=1m(yi−π(xi))xTiw=w−η∑i=1m(yi−π(xi))xiT
梯度下降 更新公式 。。。收敛得到的解是最优解,因为目标函数是凸的
多项逻辑回归 多分类。。。
参考文献
【1】周志华 《机器学习》