线性模型

线性模型

线性模型可以说是比较简单的一种监督学习,通常可以表述成

hθ=θ0+θ1x++b h θ = θ 0 + θ 1 x + ⋯ + b

写成向量形式就是
f(x)=ωTx+b f ( x ) = ω T x + b

线性回归(Liner Regression)

线性回归可以定义为:

h(x)=i=0nθixi=θTx h ( x ) = ∑ i = 0 n θ i x i = θ T x

用h(x) 来预测y,而判断h(x)拟合的直线是否能尽量靠近这些点,可以用cost function来描述:
J(θ)=i=1m12(hθ(x(i))y(i))2 J ( θ ) = ∑ i = 1 m 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2

而求得最优的h(x)则转换成了让 J(θ) J ( θ ) 的值最小。

这里使用平方和而不是绝对值原因在于,这样求出来的是likelihood最大。还有若第一组绝对值差是1,3,第二组是2,2,绝对值差求和是一样,4=4, 算平方差就不一样了,10 > 8。所以平方项还能达到惩罚偏差值线性增大的效果,最终图上看就是尽可能让直线靠近所有点。

可以参考为什么最小二乘需要均方误差

求解costfunction最小的方法

梯度下降(gradient descent algorithm)

α α 是学习速率

θj:=θjαθjJ(θ) θ j := θ j − α ∂ ∂ θ j J ( θ )

对于单个训练数据的例子:
θjJ(θ)=θj12(hθ(x(i))y(i))2=212(hθ(x(i))y(i))θj(hθ(x(i))y(i))=(hθ(x(i))y(i))θj(i=0nθixiy)=(hθ(x(i))y(i))xj ∂ ∂ θ j J ( θ ) = ∂ ∂ θ j 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 = 2 ⋅ 1 2 ( h θ ( x ( i ) ) − y ( i ) ) ⋅ ∂ ∂ θ j ( h θ ( x ( i ) ) − y ( i ) ) = ( h θ ( x ( i ) ) − y ( i ) ) ∂ ∂ θ j ( ∑ i = 0 n θ i x i − y ) = ( h θ ( x ( i ) ) − y ( i ) ) x j

所以 θj θ j 的更新为:
θj:=θjα(hθ(x(i))y(i))x(i)j=θj+α(y(i)hθ(x(i)))x(i)j θ j : = θ j − α ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) = θ j + α ( y ( i ) − h θ ( x ( i ) ) ) x j ( i )

几乎是最常使用的基本算法,需要了解其本质原理。
更多详细参考 梯度下降(Gradient Descent)

矩阵方程法(the normal equations)

θ=(XTX)1XTy θ = ( X T X ) − 1 X T y

此外矩阵方程法常用到SVD求解逆矩阵,但计算复杂度都较大,当n>10000时基本不推荐使用,实际安利极少应用到。
下面有几个参考
矩阵方程线性代数分析
矩阵方程的矩阵推导

牛顿法(Newton Method)

牛顿方法是使用迭代的方法寻找使f(θ)=0的θ值,在这里θ是一个真实的值,不是一个参数,只不过θ的真正取值不确定。牛顿方法数学表达式为:

θ:=θf(θ)f(θ) θ := θ − f ( θ ) f ′ ( θ )

先随机选一个点,然后求出f在该点的切线,即f在该点的导数。该切线等于0的点,即该切线与x轴相交的点为下一次迭代的值。直至逼近f等于0的点。
牛顿法
部分情况会使用到,应用面没有梯度下降广泛。
相关参考如下:
牛顿法通俗解释

对数几率回归(Logistic Regression)

现在如果有一个0和1的e二分类问题的,可以套进去线性回归去解。只要中间加一个sigmoid函数即可,
sigmiod function
把线性回归套进去就是 h(θ)=g(θTx)=11+eθTx h ( θ ) = g ( θ T x ) = 1 1 + e − θ T x )
建立好模型即可求解costfunction了,但与liner model 不同,套入sigmoid后,这个函数不是凸函数,不好求解。

J(θ)=i=1m12(hθ(x(i))y(i))2 J ( θ ) = ∑ i = 1 m 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2

而且 h(x)y h ( x ) − y 算出来是一个概率,多个训练数据的概率相加是没意义的,得相乘。 p(x,y)=p(x)×p(y) p ( x , y ) = p ( x ) × p ( y )

对数几率模型损失函数推导

分别求出两种分类的概率并合在一起:

P(y=1|x;θ)=hθ(x)P(y=0|x;θ)=1hθ(x)P(y|x;θ)=(hθ(x))y(1hθ(x))1y P ( y = 1 | x ; θ ) = h θ ( x ) P ( y = 0 | x ; θ ) = 1 − h θ ( x ) ⇒ P ( y | x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) 1 − y

极大似然的参数表达式:
L(θ)=p(y⃗ |X;θ)=i=1mp(y(i)|x(i);θ)=i=1m(hθ(x(i)))y(i)(1hθ(x))1y(i) L ( θ ) = p ( y → | X ; θ ) = ∏ i = 1 m p ( y ( i ) | x ( i ) ; θ ) = ∏ i = 1 m ( h θ ( x ( i ) ) ) y ( i ) ( 1 − h θ ( x ) ) 1 − y ( i )

对数极大似然函数:
l(θ)=logL(θ)=i=1m(y(i)loghθ(x(i))+(1y(i))log(1hθ(x)) l ( θ ) = log ⁡ L ( θ ) = ∑ i = 1 m ( y ( i ) log ⁡ h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ) )

根据sigmoid函数的性质 g(z)=g(z)(1g(z)) g ′ ( z ) = g ( z ) ( 1 − g ( z ) ) 代入前面的结论
θjl(θ)=(y1g(θTx)(1y)11g(θTx))θjg(θTx)=(y1g(θTx)(1y)11g(θTx))g(θTx)(1g(θTx))θjθTx=(y(1g(θTx))(1y)g(θTx))xj=(yhθ(x))xj ∂ ∂ θ j l ( θ ) = ( y 1 g ( θ T x ) − ( 1 − y ) 1 1 − g ( θ T x ) ) ∂ ∂ θ j g ( θ T x ) = ( y 1 g ( θ T x ) − ( 1 − y ) 1 1 − g ( θ T x ) ) g ( θ T x ) ( 1 − g ( θ T x ) ) ∂ ∂ θ j θ T x = ( y ( 1 − g ( θ T x ) ) − ( 1 − y ) g ( θ T x ) ) x j = ( y − h θ ( x ) ) x j

由于前面linear regression,我们求cost function的最小值,所以是减号 θj:=θjαθjJ(θ) θ j := θ j − α ∂ ∂ θ j J ( θ ) 对于logistic regression,我们要求的是likelihood最大,所以要换成加号。
θj:=θj+α(y(i)hθ(x(i)))x(i)j θ j := θ j + α ( y ( i ) − h θ ( x ( i ) ) ) x j ( i )

这样θ最终的迭代式子与跟前面linear regression就一样了。

正则化(Regularized)

为了解决过拟合问题,我们需要给予costfunction 一定的惩罚,而这个就称为正则化。

minθ12m(hθ(x(i)y(i))2)+λj=1nθ2j m i n θ 1 2 m ( h θ ( x ( i ) − y ( i ) ) 2 ) + λ ∑ j = 1 n θ j 2

λ是正则化参数。它决定了我们的θ参数的成本被夸大了多少。 使用上述costfuntion求和,我们可以平滑假设函数的输出以减少过度拟合。如果λ选择太大,它可能会使功能过度平滑并导致欠拟合。

正则化损失函数

梯度下降正则化

我们将 θ0 θ 0 与其余参数分开,对于 θ0 θ 0 我们不需要惩罚他.

Repeat {    θ0:=θ0α 1m i=1m(hθ(x(i))y(i))x(i)0    θj:=θjα [(1m i=1m(hθ(x(i))y(i))x(i)j)+λmθj]}          j{1,2...n} Repeat   {         θ 0 := θ 0 − α   1 m   ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i )         θ j := θ j − α   [ ( 1 m   ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) ) + λ m θ j ]                     j ∈ { 1 , 2... n } }

我们对 λmθj λ m θ j 进行一下变形,那么 θ θ 的更新可以表示为:
θj:=θj(1αλm)α1mi=1m(hθ(x(i))y(i))x(i)j θ j := θ j ( 1 − α λ m ) − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i )

上面等式中的第一项, 1αλm 1 − α λ m 将始终小于1.可以看到每次更新的时候都会减少 θj θ j 的值,但第二项和之前并没有变化。

矩阵法正则化

现在让我们使用非迭代正规方程的替代方法来逼近正则化。 要添加正则化,除了我们在括号内添加一项之外,等式与我们之前基本相同:

θ=(XTX+λL)1XTywhere  L=0111 θ = ( X T X + λ ⋅ L ) − 1 X T y where     L = [ 0 1 1 ⋱ 1 ]

L是一个左上角为0,对角线下方为1,其他地方为0的矩阵。还有当 X X 不是方正时,XTX是不可逆的。但是加上 λL λ ⋅ L 项,那么 XTX+λL X T X + λ ⋅ L 就变为可逆的了。

正则化项的区别

正则化项一般有L1和L2等,如果加入的是L2正则化项,就是Ridge回归,而Lasso回归用的是L1正则化项。

Ridge回归

cost function 如下:

J(θ)=12(XθY)T(XθY)+12α||θ||22 J ( θ ) = 1 2 ( X θ − Y ) T ( X θ − Y ) + 1 2 α | | θ | | 2 2

其中 α α 为常数系数,需要进行调优。 ||θ||2 | | θ | | 2 为L2范数。
Ridge回归的解法和一般线性回归大同小异。在不抛弃任何一个变量的情况下,缩小了回归系数,使得模型相对而言比较的稳定,但这会使得模型的变量特别多,模型解释性差。

Lasso回归

Lasso回归用的是L1正则化项,他的cost function表达式如下:

J(θ)=12n(XθY)T(XθY)+α||θ||1 J ( θ ) = 1 2 n ( X θ − Y ) T ( X θ − Y ) + α | | θ | | 1

其中n为样本个数, α α 为常数系数,需要进行调优。 ||θ||1 | | θ | | 1 为L1范数。
Lasso回归使得一些系数变小,甚至还是一些绝对值较小的系数直接变为0,因此特别适用于参数数目缩减与参数的选择,因而用来估计稀疏参数的线性模型。
但由于L1范数用的是绝对值之和,导致损失函数有不可导的点。最小二乘法,梯度下降法,牛顿法与拟牛顿法对它统统失效了。因此只能使用全新的求极值解法 坐标轴下降法(coordinate descent)和 最小角回归法( Least Angle Regression, LARS)。
参考 坐标轴下降法与最小角回归法小结

弹性网络(Elastic Net)

结合了L1、L2正则项,既可以减少无用特征还可以保证模型的稳定性。

J(θ)=12n(XθY)T(XθY)+α(p||θ||1+(1p)||θ||22) J ( θ ) = 1 2 n ( X θ − Y ) T ( X θ − Y ) + α ( p | | θ | | 1 + ( 1 − p ) | | θ | | 2 2 )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值