线性回归简介和提示

本文深入探讨了线性回归的基本概念及应用,包括泰勒展开原理、成本函数定义、梯度下降法与正规方程法等核心算法。同时,还提供了丰富的工程实践技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

机器学习中的监督学习(Supervised Learning)依据目标(Target)变量的类型分为回归问题(Regression,目标变量为浮点数)和分类问题(Classification,目标变量为离散值)。

在遇到回归问题时,自然而然的就要想到简单的线性回归(Linear Regression)可不可以解决当前的问题。在选取了一些特征变量(Features)之后,我们可以通过组装更高幂次的项来模拟非线性的回归特性。

由于特定函数可以通过泰勒展开转化为多项式的形式(保留一定的精度),所以原则上可以通过此种方法模拟这类函数的非线性。

什么是泰勒展开?

泰勒(Taylor)中值定理 如果函数f(x)在含有x0的某个开区间(a,b)内具有直到(n+1)阶的导数,则对任一x(a,b),有

f(x)=f(x0)+f(x0)(xx0)+f′′(x0)2!(xx0)2++f(n)(x0)n!(xx0)n+Rn(x)

其中
Rn(x)=f(n+1)(ξ)(n+1)!(xx0)n+1

这里ξx0x之间的某个数。Rn(x)称为拉格朗日(Lagrange)余项。

线性回归

线性回归是假设特征向量与目标变量有以下的假设关系(Hypothesis)

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

θi称为参数(Parameter)或权重(Weight),其中x0恒等于1,称为截距项(Intercept Term)。
依此,有
J(θ)=12i=1m(hθ(x(i))y(i))2

此为成本函数(Cost Function)。

线性回归解法

如何选取合适的θ使得成本函数尽可能的小?
主要有梯度下降法(Gradient Descent)和正规方程法(Normal Equation)。

梯度下降法

LMS(Least Mean Squares)更新法则或Widrow-Hoff学习法则

θj:=θj+α(y(i)hθ(x(i)))x(i)j

其中α为学习率(Learning Rate),(y(i)hθ(x(i)))为误差项(Error Term)。

而基于应用LMS更新法则的方式不同,有两种使用方法:批处理梯度下降法(Batch Gradient Descent)和随机梯度下降法(Stochastic Gradient Descent,又名增量梯度下降法,Incremental Gradient Descent)。

批处理梯度下降法

重复以下更新法则直至收敛,

θj:=θjαθjJ(θ)=θj+αi=1m(y(i)hθ(x(i)))x(i)j(for every j)
随机梯度下降法

循环 {
 for i=1 to m {

θj:=θj+α(y(i)hθ(x(i)))x(i)j(for every j)

 }
}

一般来说,随机梯度法比批处理梯度法要更快收敛,这得益于随机梯度法每遇到一个训练用例时就进行相应的更新,而批处理梯度法需要费时费力的遍历所有训练用例后方可更新。尤其当训练用例数目急剧增长后,她们的差距便会变得更加明显。

正规方程法

把训练用例一行一行摆放进X

X=(x(1))T(x(2))T(x(m))T

把对应的目标值放入m维向量中:
y=y(1)y(2)y(m)

则,

J(θ)=12i=1m(hθ(x(i))y(i))2=12(Xθy⃗ )T(Xθy⃗ )

求导可得:
θJ(θ)=XTXθXTy⃗ 

令其为零,可得正规方程式:
XTXθ=XTy⃗ 

解之可得:
θ=(XTX)1XTy⃗ 

这里XRm×(n+1)m个训练用例,n个特征。y⃗ Rm

毋庸置疑,这里XTXR(n+1)×m×Rm×(n+1),计算复杂度与训练用例数目,m,相关。

XTXR(n+1)×(n+1)(XTX)1的计算复杂度只与特征数目,n,相关。

以上是不可避免的计算量,由于矩阵取逆的运算比较费时,当nm时,不宜使用此方法,而当nm时,可以使用此方法,并且比梯度下降更快。小编有个训练集大小390625×10,用梯度下降法1700s,而正规方程式法仅仅0.015002s(使用θ=(XTX)1(XTy⃗ ),用原公式0.075008s)。

工程实践经验

  1. 有时由于训练集合中使用的特征数目较少,导致Underfitting,这时小编会通过添加二次,三次甚至多次项的方法把特征数目人为增多;

  2. 但是这样的数据可能导致X矩阵的秩比较小,X成为或接近奇异的可能性较大,不能使用正规矩阵法直接求解,只能使用梯度下降法求解;

  3. 但如果原来的特征值不是都在1附近的话,新添加的特征值很可能变得很大或很小,这时直接用于训练的话,有些维度的导数过大或过小,导致结果不收敛,最后得到的θ向量也就没有了意义(最后的成本函数值可能很大);

  4. 这时可以使用正则化的方法把特征值变换至0附近,其实这就是把xN(μ,σ)变换成x^=xμσN(0,1)的方法(提示:不要对X的常数列(1,1,...1)T做正则化操作,否则你会得到一列0⃗ ,最后的成本函数也不正确,可能看到的是一堆NaN);

  5. 使用梯度下降法时,由于这个是迭代的方法,初始值可以影响求解的时间,简单的把初始向量设为0⃗ 不见得好,如果可能的话,可以把初始向量设为在最终θ的附近,当然这个很难,不过我们可以选择随机的给出θ值(提示,一般伪随机数rUniform(0,1),我们可以通过r^=(ba)r+aUniform(a,b)得到我们想要的数值范围内的随机数);

    初始值对一个非凹函数的求解关系很大(当然我们的线性回归是个凹函数),初始值可以使用其他简单模型求解得出,如一些二次型的函数既是凹函数又有矩阵解法,一般可以很快求得结果。把得出的初始值代入非凹函数,一般得到的结果质量会很好(不宜陷入局部解),运行时间也会有改进(迭代次数会减少)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值