线性回归问题

此系列笔记来源于

Coursera上吴恩达老师的机器学习课程


线性回归问题

回归问题中,根据已给的数据集,需要拟合出一个线性的函数,用以预测数据。

代价函数

均方误差函数 Mean squared error

J(θ0,θ1)=12mi=1m(hθ(x(i))y(i))2

前面有个二分之一是为了计算机更好的计算梯度下降,因为求导后12会被指数2消掉

我们假设拟合曲线为hθ(x)=θ1x,那么对于不同的θ1我们都可以计算出其对应的J(θ1)的值,那么便可以对J(θ)作出相关函数,便可以求得我们所要的最优解。

梯度下降算法

可以用来最小化代价函数 J

假设代价函数 J(θ0,θ1),并设置一个初始点

image-20220426135750710

我们从初始点开始,不断进行计算:

θj:=θjαθjJ(θ0,θ1)j=01

θj:=θjα1mi=1m(hθ(x(i))y(i))xj(i),(j=0,1)

最终也就到达了我们所要的代价函数最小值点

PS:

1、:=为赋值运算符,将右边的值赋给左边

2、在这里θ0θ1为同步更新,即

temp0:=θ0αθ0J(θ0,θ1)

temp1:=θ1αθ1J(θ0,θ1)

θ0:=temp0

θ1:=temp1

②式和3式不能颠倒,这将导致我们在计算②式的偏导时会产生错误,从而得出错误的答案

3、α是学习速率,它决定了我们在图中的每一步的size,而偏导θ1J(θ0,θ1)则决定了我们的移动方向,另外每一步的起点不同,那么最后所到达的终点也可能会不同。

4、在计算中我们不需要去减小α的值,因为随着梯度下降,我们的导数也会趋于零(当导数为0时,即得到了optimal minimum),随之我们的每次下降的步伐也将越来越小。

5、另外α如果太小那么最终求解时间会过长,α太大那么最终可能会使得函数值为无法converge,甚至diverge

多元线性回归

当线性回归函数涉及到多个变量时,便是多元线性回归

假设函数 hθ(x)=θ0+θ1x1+θ2x2+θ3x3+...+θnxn

θx 作为向量分别用矩阵表示,同时xj(i)表示第 i 组样例的第 j 个特征

[θ0θ1...θn][x0x1...xn],x0=1

就可以更精炼的得到:

hθ(x)=[θ0θ1...θn][x0x1...xn]=θTx

而此时梯度下降算法中,也从n=1变为 n1

θj:=θjα1mi=1m(hθ(x(i))y(i))xj(i),(j=0,1...,n)

特征放缩 和 均值归一

当特征值 θ 在很大的变量范围上、变量值不均匀时,会下降的很慢。

比如对于两个特征值,再画出轮廓图后可能是一个非常细长的椭圆。

而我们可以改变每个输入变量x(i)的范围,使得它们大致相同来缓解这一情况。

在这里我们将用到 特征放缩(Feature Scaling) 和 均值归一(Mean Normalization) 两个方法

特征放缩指 将输入值 除以 范围值(即最大值减最小值) 或者 标准差,均值归一指 将输入值 减去 平均值。

表示为:xi=xiμisi,si,μi

关于学习速率 α

对于学习速率 α 我们知道,如果选择的过大,可能会导致随着每次迭代,代价函数不断增加,如果选择的过小,可能会导致求最优解的迭代时间过长。

同时,我们还可以写一个自动收敛检测,当一次迭代的值 E 小于某个很小的值比如 103时,就停止迭代。然而一般这个阈值的确定十分困难。

关于特征值

有时候我们可以组合已知的特征,来得到新的特征,这样有时可能会令假设函数更优。

例如:我们可以组合x1,x2进行相乘,来得到一个新的特征x3,这样可以将两个特征合并成一个特征

多项式回归

对于一个假设函数 hθ(x)=θ0+θ1x1

如果该线性的假设函数并不适用于我们的问题,那么我们可以通过创造新的特征值来改变该函数使得其更符合实际问题,比如创造x2=x1x1,x3=x1x1x1

hθ(x)=θ0+θ1x1+θ2x2+θ3x3

但要注意的是,此时x2x3的范围分别是x1的次方和立方,因此特征放缩便十分重要了。

正规方程 Normal Equation

在最小化代价函数,求解 θ 时,我们往往会采用梯度下降的算法。但其实当数据量较小时,我们可以采用正规方程的方法求解。

解法如下:

θ=[θ0θ1...θn],y=[y1y2...yn],X=[(x(1))T(x(2))T...(x(m))T],(x(i))T=[x0(i)x1(i)...xn(i)] ,往往我们令x0(i)=1,则

θ=(XTX)1XTy

正规方程和梯度下降法的比较

梯度下降法:1、需要选择学习速率 2、需要迭代 3、O(kn2) 4、当 n 较大时运行速率更快

正规方程法:1、不需要选择学习速率 2、不需要迭代 3、O(n3),受计算逆矩阵影响 4、当 n 较大时运行速率缓慢

当矩阵XTX不可逆时,

这是一种比较少见的情况,我们一会采用删除一些无用的特征值(如两个特征值为线性关系、平方关系…)或者正规化方法。

另外在matlab、octave中,有pinv(A) 和 inv(A)两种方法。对呸于奇异矩阵或者非方阵可以用 pinv(A) 求其伪逆,且不会产生错误。

假设函数的式子(向量化)

hθ(x)=θTx

posted @   Yra  阅读(73)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示