一、一般线性回归
基本形式:f(x)=w1x1+w2x2+...+wdxd+b,d个自变量,1个因变量。
用向量形式写成:f(x)=wTx+b,其中w=(w1;w2;...;wd).
用最小二乘法对w和b进行估计。
把w和b吸收入向量形式w^=(w;b) 于是f(x)=w^X,f(x)可写成向量形式y=(y1;y2;⋯;ym). y=w^X
X=⎛⎝⎜⎜⎜⎜x11x21⋮xm1x12⋯x1dx22⋯x2d⋮xm2⋯xmd11⋮1 ⎞⎠⎟⎟⎟⎟=⎛⎝⎜⎜⎜⎜⎜xT1xT2⋮xTm11⋮1⎞⎠⎟⎟⎟⎟⎟
目标函数是:min
Ew^=(y−Xw^)T(y−Xw^) 对
w^求偏导可得:
∂Ew^∂w^=2XT(Xw^−y)=0 .
((y−xw)2对x求偏导可得2x(xw−y))(1)当 XTX为满秩矩阵时:
解得:w^=(XTX)−1XTy
(2)现实任务中,XTX往往不是满秩矩阵,常见的做法是引入正则化项。
二、广义线性回归
如果因变量指数级变化,则把因变量取对数:lny=wTx+b,然后用一般的线性模型的方法求解。
更一般的,考虑单调可微函数g(.),令g(y)=wTx+b
三、对数几率模型
1、对数几率模型
考虑二分类任务,其因变量只有两个取值{0,1},但线性回归模型产生的预测值是连续值,于是我们把预测值转化为0/1值。最理想的是“单位阶跃函数”:
y=⎧⎩⎨⎪⎪0, z<0;0.5, z=0;1, z>0,
即若预测值z>0则判为正例,<0则判为反例,预测值为临界值0则可任意判别。但单位阶跃函数不连续,无法用回归的方法求解。
于是通常我们寻找一单调可微的函数,在一定程度上近似单位阶跃函数
对数几率函数:
y=11+e−z是一个常用的替代函数,
y的取值我们是没办法知道的。 其图像为:
代入回归方程:
y=11+e−(wTx+b)⇒lny1−y=wTx+b y1−y称为几率,对几率取对数称为对数几率(Logit)
2、求解对数几率模型
方法一:
y的取值在(0,1)上变化,我们可以将y视为类后验概率估计p(y=1|x),则Logit模型可重写为
lnp(y=1|x)p(y=0|x)=wTx+b
于是解得:
p(y=1|x)=ewTx+b1+ewTx+b p(y=0|x)=11+ewTx+b 通过极大似然法来估计参数
w和
b.极大似然函数:
max l(w,b)=∏p(yi|xi)
对似然函数取对数可得:
lnl(w,b)=∑mi=1lnp(yi|xi) 而p(yi|xi)=yip(y=1|x)+(1−yi)p(y=0|x)
令
β=(w;b),x^=(x;1),则wTx+b=βTx^. 代入对数似然函数,等价于最小化:
lnl(β)=∑i=1m(−yiβTx^i+ln(1+eβTx^i))
这是关于
β的高阶可导连续凸函数,根据凸优化理论,经典的数值优化算法如梯度下降法、牛顿法等都可求得其最优解。
机器学习-损失函数
梯度下降法(梯度上升算法求函数最大值,梯度下降算法求函数最小值)
牛顿法
本文用牛顿法求其解:
β∗=arg minlnl(β)
牛顿求函数极值的迭代公式为:
xn+1=xn−f′(x)f′′(x) 于是第t+1轮迭代解得更新公式为:
βt+1=βt−(∂2lnl(β)∂β∂βT)−1∂lnl(β)∂β
其中:
∂lnl(β)∂β=−∑i=1Mx^i(yi−p(y=1|x))
∂2lnl(β)∂β∂βT=∑i=1mx^ix^Tip(y=1|x)(1−p(y=1|x))
方法二:
由于y=11+e−(wTx+b),因此可初始化w的值,然后计算出y的估计值,然后用梯度上升算法来求解w的值。
四、logistic回归Python代码