[机器学习-1.1]线性回归之基础

这篇博客介绍了线性回归的基础,从房价预测问题出发,讲解了从最大似然到最小二乘的原理,包括线性回归的解析解和梯度下降方法,并探讨了复杂度惩罚因子在防止过拟合中的作用,如L1和L2正则化。
摘要由CSDN通过智能技术生成

机器学习之线性回归基础

由房价估计到线性回归

让我们思考一个实际问题:
即同一时段房价是否是可预测的?
我们直觉上知道一个城市的商品房的每平米价格由很多因素影响,也就是说,我们或许可以从这些影响因素中挖掘出有用的信息,来预测房价。
如果我们收集了大量的房屋信息数据,我们可以用表格来展示这些数据:

项目卧室数(x0)楼层(x1)卧室朝向(x2)层高(xn)RMB/m2(y)
1
2
3
m

表格的每一行代表的是一个样本,一共m个样本,构成了数据集。
每一个样本,由n个特征数据 x(从卧室数到层高)和标签数据 y(RMB/m2)构成。
我们猜想,能不能用如下的这样的公式,利用x值,映射出y值,也就实现了预测的效果。
Θ 0 + Θ 1 x 1 + Θ 2 x 2 + ⋯ ⋯ + Θ n x n = y \Theta _{0} + \Theta _{1}x_{1} + \Theta _{2}x_{2} + \cdots \cdots +\Theta _{n}x_{n} = y Θ0+Θ1x1+Θ2x2++Θnxn=y
Θ \Theta Θ x x x的下标表示特征序号,如果我们把上式表征为一个自变量为 x x x的函数 ,我们有:
Θ 0 + Θ 1 x 1 + Θ 2 x 2 + ⋯ ⋯ + Θ n x n = h θ ( x ) \Theta _{0} + \Theta _{1}x_{1} + \Theta _{2}x_{2} + \cdots \cdots +\Theta _{n}x_{n} = { h }_{ \theta }(x) Θ0+Θ1x1+Θ2x2++Θnxn=hθ(x)
简写为连加形式:
∑ i = 0 n θ i x i = h θ ( x ) , 其 中 x 0 = 1 \sum _{ i=0 }^{ n }{ { \theta }_{ i } } { x }_{ i }={ h }_{ \theta }(x),其中{ x }_{ 0 }=1 i=0nθixi=hθ(x),x0=1
也可以表示为矩阵形式,默认向量是纵向量:
θ T → ⋅ x → = h θ ( x ) \overset { \rightarrow }{ { \theta }^{ T } } \cdot \overset { \rightarrow }{ x } ={ h }_{ \theta }(x) θTx=hθ(x)
如以上公式所表示的,只要我们求出合适的 θ i {\theta}_{i} θi值,利用给定的房屋特征值,就能预测出房屋价格。
以上方法,我们将其称之为线性回归模型,这是解决如房价估计一类数值型预测问题的普适性方法。
由此,我们将房屋预测问题,以及何其类似的数值预测问题,转化为求 θ i {\theta}_{i} θi的问题。
那么,我们如何量化,并最终得到最优的参数 θ i {\theta}_{i} θi组合呢?

从最大似然到最小二乘

我们直觉上知道,再厉害的模型,都不可能百分百预测到我们需要的结果。那么预测值和真实值之间就会存在误差,用 ε \varepsilon ε 来表示误差。因此,我们有公式:
ε ( j ) = y ( j ) − θ T → ⋅ x → { \varepsilon }^{ (j) } = { y }^{ (j) }-\overset { \rightarrow }{ { \theta }^{ T } } \cdot \overset { \rightarrow }{ x } ε(j)=y(j)θTx
其中,上标 ( j ) (j) (j)代表样本序号, j = 1 , 2 ⋯ ⋯ m j=1,2\cdots \cdots m j=1,2m.
那么, ε ( j ) { \varepsilon }^{ (j) } ε(j)越小,代表预测值同真实值之间的差值越小,模型的拟合能力越强。
于是,我们需要做的就是最小化误差。
我们知道,这个误差,是由非常多的独立因素,叠加造成的随机现象,那么由于中心极限定理,我们可以得到:
ε ∼ N ( 0 , σ 2 ) \varepsilon \sim N(0,{ \sigma }^{ 2 }) εN(0,σ2)
也就是说,误差服从正态分布。
由此我们可以得到随机变量 ε ( j ) { \varepsilon }^{ (j) } ε(j)的概率密度函数:
p ( ε ( j ) ) = 1 2 π σ e ( − ( ε ( j ) ) 2 2 σ 2 ) p({ \varepsilon }^{ (j) })=\frac { 1 }{ \sqrt { 2\pi } \sigma } { e }^{ (-\frac { { ({ \varepsilon }^{ (j) }) }^{ 2 } }{ 2{ \sigma }^{ 2 } } ) } p(ε(j))=2π σ1e(2σ2(ε(j))2)
联立误差公式,我们得到条件概率密度函数:
p ( y ( j ) ∣ x ( j ) ; θ ) = 1 2 π σ e ( − ( y ( j ) − θ T → ⋅ x → ) 2 2 σ 2 ) p\left( { { y }^{ (j) } }|{ { x }^{ (j) };\theta } \right) =\frac { 1 }{ \sqrt { 2\pi } \sigma } { e }^{ (-\frac { { ({ y }^{ (j) }-\overset { \rightarrow }{ { \theta }^{ T } } \cdot \overset { \rightarrow }{ x } ) }^{ 2 } }{ 2{ \sigma }^{ 2 } } ) } p(y(j)x(j);θ)=2π σ1e(2σ2(y(j)θTx)2)
为了使误差尽可能小,我们就要尽可能得到一个合适的 θ \theta θ值使得得到y的概率尽可能的大。
我们将数据集中的每个样本的条件概率密度连乘得到似然函数,似然函数表示如下:
L ( θ ) = ∏ j = 1 m p ( y ( j ) ∣ x ( j ) ; θ ) = ∏ j = 1 m 1 2 π σ e ( − ( y ( j ) − θ T → ⋅ x → ) 2 2 σ 2 ) L(\theta )=\prod _{ j=1 }^{ m }{ p\left( { { y }^{ (j) } }|{ { x }^{ (j) };\theta } \right) =\prod _{ j=1 }^{ m }{ \frac { 1 }{ \sqrt { 2\pi } \sigma } { e }^{ (-\frac { { ({ y }^{ (j) }-\overset { \rightarrow }{ { \theta }^{ T } } \cdot \overset { \rightarrow }{ x } ) }^{ 2 } }{ 2{ \sigma }^{ 2 } } ) } } } L(θ)=j=1mp(y(j)x(j);θ)=j=1m2π σ1e(2σ2(y(j)θTx)2)
似然函数两边取对数:
ℓ ( θ ) = ln ⁡ L ( θ ) = ∑ j = 1 m ln ⁡ 1 2 π σ − 1 2 σ 2 ∑ j = 1 m ( y ( j ) − θ T → ⋅ x → ) 2 \ell (\theta )=\ln { L(\theta )= } \sum _{ j=1 }^{ m }{ \ln { \frac { 1 }{ \sqrt { 2\pi } \sigma } } } -\frac { 1 }{ 2{ \sigma }^{ 2 } } \sum _{ j=1 }^{ m }{ { ({ y }^{ (j) }-\overset { \rightarrow }{ { \theta }^{ T } } \cdot \overset { \rightarrow }{ x } ) }^{ 2 } } (θ)=lnL(θ)=j=1mln2π σ12σ21j=1m(y(j)θTx)2
求似然函数的最大值,也就是求对数似然的最大值, ∑ j = 1 m ln ⁡ 1 2 π σ \sum _{ j=1 }^{ m }{ \ln { \frac { 1 }{ \sqrt { 2\pi } \sigma } } } j=1mln2π σ1是定值,因此,最大似然问题,转化成最小二乘问题:
min ⁡ J ( θ ) = min ⁡ 1 2 σ 2 ∑ j = 1 m ( y ( j ) − θ T → ⋅ x → ) 2 \min { J(\theta ) } =\min { \frac { 1 }{ 2{ \sigma }^{ 2 } } \sum _{ j=1 }^{ m }{ { ({ y }^{ (j) }-\overset { \rightarrow }{ { \theta }^{ T } } \cdot \overset { \rightarrow }{ x } ) }^{ 2 } } } minJ(θ)=min2σ21j=1m(y(j)θTx)2
J ( θ ) J(\theta) J(θ)是我们的目标函数。
至此,我们将数值拟合问题,通过似然函数,转化成最小二乘问题。
接下来,我们就要求目标函数的最小值,
这里我们有两个方法:
方法一:求驻点,得到解析解;
方法二:利用渐进方法,得到近似解。

线性回归的解析解

目标函数 J ( θ ) J(\theta) J(θ)表示为矩阵形式:
J ( θ ) = 1 2 ( X θ − y ) T ⋅ ( X θ − y ) J(\theta ) = \frac { 1 }{ 2 } { (X\theta -y) }^{ T }\cdot (X\theta -y) J(θ)=21(Xθy)T(Xθy)
J ( θ ) J(\theta ) J(θ) θ \theta θ的偏导:
▽ θ J ( θ ) = X T X θ − X T y { \triangledown }_{ \theta }J(\theta )={ X }^{ T }X\theta -{ X }^{ T }y θJ(θ)=XTXθXTy
J ( θ ) J(\theta) J(θ)的驻点:
▽ θ J ( θ ) = X T X θ − X T y = 0 { \triangledown }_{ \theta }J(\theta )={ X }^{ T }X\theta -{ X }^{ T }y=0 θJ(θ)=XTXθXTy=0
得到:
θ = ( X T X ) − 1 X T y \theta ={ ({ X }^{ T }X) }^{ -1 }{ X }^{ T }y θ=(XTX)1XTy
若, X T X { X }^{ T }X XTX本身不可逆,我们加入扰动因子,使得,半正定的 X T X { X }^{ T }X XTX,成为正定矩阵,也就保证了其可逆:
θ = ( X T X + λ I ) − 1 X T y \theta ={ ({ X }^{ T }X+\lambda I) }^{ -1 }{ X }^{ T }y θ=(XTX+λI)1XTy
至此,我们得到线性回归方法的解析解。

线性回归的梯度下降方法

解析解总是给人一种数学方法的感觉,换句话说,就是给人感觉不够智能,那么,我们有没有一种智能的方法,寻找 θ \theta θ的最优解(局部最优解)呢?
现在我们想象,由两个参数, θ 1 {\theta}_{1} θ1 θ 2 {\theta}_{2} θ2,所有的数据组合,在目标函数 J ( θ ) J(\theta) J(θ)上的映射,形成了一个起伏不定的面,有许多的"山峰",也有许多的"山谷",我们自然可以尝试所有的数据组合,找到 J ( θ ) J(\theta) J(θ)的最低点,但实际上,考虑到穷搜算法的计算量,这种方法的是低效的。我们能不能让 θ \theta θ如同水流一样,"顺流而下"的找到最低点呢?答案是肯定的,我们可以用梯度下降方法找到最低点。
所谓 J ( θ ) J(\theta) J(θ)的梯度,就是 J ( θ ) J(\theta) J(θ)在某点的方向导数的最大情况。
所谓方向导数,就是 J ( θ ) J(\theta) J(θ)在某点上,沿某方向的的变化率,
那么 J ( θ ) J(\theta) J(θ)梯度就可以解释为 J ( θ ) J(\theta) J(θ)在某点上最大的变化率,梯度是一个矢量,有方向有大小。梯度可以表示为:
g r a d J ( θ 1 , θ 2 , θ 3 ⋯ θ n ) = ( ∂ J ∂ θ 1 , ∂ J ∂ θ 2 , ∂ J ∂ θ 3 , ⋯ ∂ J ∂ θ n ) grad\quad J({ \theta }_{ 1 },{ \theta }_{ 2 }{ ,\theta }_{ 3 }\cdots { \theta }_{ n })=(\frac { \partial J }{ \partial { \theta }_{ 1 } } ,\frac { \partial J }{ \partial { \theta }_{ 2 } } ,\frac { \partial J }{ \partial { \theta }_{ 3 } } ,\cdots \frac { \partial J }{ \partial { \theta }_{ n } } ) gradJ(θ1,θ2,θ3θn)=(θ1J,θ2J,θ3J,θnJ)
J ( θ ) J(\theta) J(θ)在每个方向上的偏导分量,构成一个合方向,其模值就是这一点的最大变化率。
简言之梯度下降算法,就是让 J ( θ ) J(\theta) J(θ)在每个方向分量上按照最大变化率变化,他们的总和将导致 J ( θ ) J(\theta) J(θ)的下降。
梯度下降算法公式如下:
θ i = θ i − α ∂ J ( θ ) ∂ θ i { \theta }_{ i }={ \theta }_{ i }-\alpha \frac { \partial J(\theta ) }{ \partial { \theta }_{ i } } θi=θiαθiJ(θ)
其中右边的 θ j { \theta }_{ j } θj代表这一步的值,左边的 θ j { \theta }_{ j } θj代表上一步的值, α \alpha α代表每次下降的程度。
∂ J ( θ ) ∂ θ i \frac { \partial J(\theta ) }{ \partial { \theta }_{ i} } θiJ(θ)的推导如下:
∂ J ( θ ) ∂ θ i = 1 2 ∂ ( h θ ( x ) − y ) 2 ∂ θ i = ( h θ ( x ) − y ) x i \frac { \partial J(\theta ) }{ \partial { \theta }_{ i } } =\frac { 1 }{ 2 } \frac { \partial { ({ h }_{ \theta }(x)-y) }^{ 2 } }{ \partial { \theta }_{ i } } =({ h }_{ \theta }(x)-y){ x }_{ i } θiJ(θ)=21θi(hθ(x)y)2=(hθ(x)y)xi
由此,我们得到批量梯度下降算法(BGD):
R e p e a t u n t i l c o n v e r g e n c e { θ i = θ i − α ∑ j = 1 m ( h θ ( x ( j ) ) − y ( j ) ) x i ( j ) } Repeat\quad until\quad convergence\{ \\ { \theta }_{ i }={ \theta }_{ i }\quad -\alpha \sum _{ j=1 }^{ m }{ ({ h }_{ \theta }({ x }^{ (j) })-{ y }^{ (j) }){ x }_{ i }^{ (j) } } \} Repeatuntilconvergence{θi=θiαj=1m(hθ(x(j))y(j))xi(j)}
为了克服BGD难以跳出局部最优解的问题,我们采用随机梯度下降算法(SGD):
L o o p { f o r j = 1 t o m { θ i = θ i − α ( h θ ( x ( j ) ) − y ( j ) ) x i ( j ) } } Loop\{ \\ for\quad j\quad =\quad 1\quad to\quad m\{ \\ { \theta }_{ i }={ \theta }_{ i }-\alpha ({ h }_{ \theta }({ x }^{ (j) })-{ y }^{ (j) }){ x }_{ i }^{ (j) }\} \} Loop{forj=1tom{θi=θiα(hθ(x(j))y(j))xi(j)}}
现在我们所使用的SGD,实际是一个BGD和上述SGD的折中版本,即为mini-batch SGD。采用若干样本的平均梯度作为更新方向。

线性回归的复杂度惩罚因子

为了让拟合效果更进一步提升,我们采用高阶模型。高阶模型往往会导致一个问题,那就是过拟合。过拟合从参数意义上表现为某些 θ \theta θ异常大或小。此时,我们将目标函数增加 θ \theta θ的平方项来解决这个问题。这个防止过拟合的方法叫做L2正则。公式如下:
J ( θ ) = 1 2 ∑ j = 1 m ( y ( j ) − θ T → ⋅ x → ) 2 + λ ∑ j = 1 m θ j 2 J(\theta )=\frac { 1 }{ 2 } \sum _{ j=1 }^{ m }{ { ({ y }^{ (j) }-\overset { \rightarrow }{ { \theta }^{ T } } \cdot \overset { \rightarrow }{ x } ) }^{ 2 } } +\lambda \sum _{ j=1 }^{ m }{ { \theta }_{ j }^{ 2 } } J(θ)=21j=1m(y(j)θTx)2+λj=1mθj2
我们也将上式称为Ridge回归。
如果我们将平方项改为绝对值,称之为L1正则,可以得到:
J ( θ ) = 1 2 ∑ j = 1 m ( y ( j ) − θ T → ⋅ x → ) 2 + λ ∑ j = 1 m ∣ θ j ∣ J(\theta )=\frac { 1 }{ 2 } \sum _{ j=1 }^{ m }{ { ({ y }^{ (j) }-\overset { \rightarrow }{ { \theta }^{ T } } \cdot \overset { \rightarrow }{ x } ) }^{ 2 } } +\quad \lambda \sum _{ j=1 }^{ m }{ { \left| { \theta }_{ j } \right| } } J(θ)=21j=1m(y(j)θTx)2+λj=1mθj
我们称为Lasso回归。Lasso回归不止具有防止过拟合的功能,还可以降维。
通过这个简陋的图,大致可以理解为什么L1可以降维,而L2不可以。在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值