线性模型

来源:互联网 发布:win10共享网络 编辑:程序博客网 时间:2024/05/16 08:35

一、一般线性回归

基本形式:f(x)=w1x1+w2x2+...+wdxd+bd个自变量,1个因变量。
用向量形式写成:f(x)=wTx+b,其中w=(w1;w2;...;wd).
用最小二乘法对wb进行估计。
wb吸收入向量形式w^=(w;b) 于是f(x)=w^Xf(x)可写成向量形式y=(y1;y2;;ym). y=w^X

X=x11x21xm1x12x1dx22x2dxm2xmd111 =xT1xT2xTm111

目标函数是:minEw^=(yXw^)T(yXw^)
w^求偏导可得:
Ew^w^=2XT(Xw^y)=0 .
(yxw)2对x求偏导可得2x(xwy)

(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+ez是一个常用的替代函数,y的取值我们是没办法知道的。 其图像为:
这里写图片描述
代入回归方程:y=11+e(wTx+b)lny1y=wTx+b
y1y称为几率,对几率取对数称为对数几率(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
通过极大似然法来估计参数wb.极大似然函数:
max  l(w,b)=p(yi|xi)

对似然函数取对数可得:lnl(w,b)=mi=1lnp(yi|xi)
p(yi|xi)=yip(y=1|x)+(1yi)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=xnf(x)f′′(x)
于是第t+1轮迭代解得更新公式为:
βt+1=βt(2lnl(β)ββT)1lnl(β)β

其中:
lnl(β)β=i=1Mx^i(yip(y=1|x))

2lnl(β)ββT=i=1mx^ix^Tip(y=1|x)(1p(y=1|x))

方法二:

由于y=11+ewTx+b),因此可初始化w的值,然后计算出y的估计值,然后用梯度上升算法来求解w的值。

四、logistic回归Python代码

原创粉丝点击