正规方程法和梯度下降法(【机器学习】浅谈正规方程法&梯度下降)
🤵♂️ 个人主页: @计算机魔术师
👨💻 作者简介:CSDN内容合伙人 ,全栈领域优质创作者 。🌐 推荐一款找工作神器网站: 牛客网🎉🎉|笔试题库|面试经验|实习招聘内推
还没账户的小伙伴 速速点击链接跳转牛客网登录注册 开始刷爆题库 ,速速通关面试吧🙋♂️该文章收录专栏 ✨— 机器学习 —✨
@toc
正规方程法(最小二乘)与梯度下降法都是为了求解线性回归的最优参数 ,但是不同的是正规方程法只需要一步就可以得到代价函数最优点 ,而梯度下降则是迭代下降 ,看起来似乎正规方程法要好得多 ,但实际梯度下降使用场景更多 ,下面我们介绍这两种算法以及优缺点
一 、梯度下降
1.1 一个参数
我们从最简单的线性方程解释 ,后面推广到的多个参数的方程典型的房价预测问题
我们假设其数据模型为线性回归模型 ,方程如下
h
θ
(
x
)
h_\theta(x)
hθ(x) =θ
1
∗
x
\theta_1*x
θ1∗x 我们希望能求出θ
1
\theta_1
θ1参数 ,让方程h
θ
(
x
)
h_\theta(x)
hθ(x) 更加拟合数据 ,梯度下降的方法就是通过求代价函数最小得到最优参数或者局部最优参数的 ,代价函数 代价函数就是实际数据与数学模型(这里是一元一次方程)所预测的差值的平方之和的平均值,(其中
y
y
y 为真实预测值)J
θ
(
x
)
J_\theta(x)
Jθ(x) =∑
x
=
1
n
(
h
θ
(
x
)
−
y
)
2
n
\sum_{x=1}^n \frac{(h_\theta(x) - y)^2}{ n }
∑x=1nn(hθ(x)−y)2 (代价函数方程J
θ
(
x
)
J_\theta(x)
Jθ(x) )如:
蓝线的长度就是代价函数 ,可以看到代价函数越大拟合效果越差 ,代价函数越小,拟合效果越好 。
其中关于 所求方程
h
θ
(
x
)
h_\theta(x)
hθ(x)(左图)和θ
1
\theta_1
θ1 的的代价函数(
θ
1
)
(\theta_1)
(θ1)(右图)如下图:可以看到当方程越拟合数据 ,代价函数越小 ,当代价函数
J
(
θ
1
)
J(\theta_1)
J(θ1)值为0时 ,回归方程h
θ
(
x
)
h_\theta(x)
hθ(x)完全拟合数据 ,此时我们要做的就是让代价函数变小 。
(后面所讲的正规方程解法就是直接令代价函数为0 ,求解θ
\theta
θ参数的)1.2梯度下降核心方程
迭代求解方程
θ
1
\theta_1
θ1 =θ
1
\theta_1
θ1 -α
∗
δ
J
(
θ
1
)
δ
θ
1
\alpha*\frac{δJ(\theta_1)}{δ\theta_1}
α∗δθ1δJ(θ1)其中
α
\alpha
α是学习率 ,δ
J
(
θ
)
δ
θ
\frac{δJ(\theta_0)}{δ\theta_0}
δθ0δJ(θ0) 是对代价函数J
(
θ
1
)
J(\theta_1)
J(θ1)求关于θ
1
\theta_1
θ1 的偏导数 ,由于只有一个参数(一阶) ,所以这里的方程δ
J
(
θ
1
)
δ
θ
1
\frac{δJ(\theta_1)}{δ\theta_1}
δθ1δJ(θ1) 也可以表示为d
J
(
θ
1
)
d
θ
1
\frac{dJ(\theta_1)}{d\theta_1}
dθ1dJ(θ1)(即求导数) 。
原理讲解 当θ
1
\theta_1
θ1 所在的代价函数区间是单调递增的 ,如下图(红线标记) ,
此时d
J
(
θ
1
)
d
θ
1
\frac{dJ(\theta_1)}{d\theta_1}
dθ1dJ(θ1) (即h
θ
(
x
)
h_\theta(x)
hθ(x)的斜率)大于0 ,则θ
1
\theta_1
θ1 =θ
1
\theta_1
θ1 -α
∗
δ
J
(
θ
1
)
δ
θ
1
\alpha*\frac{δJ(\theta_1)}{δ\theta_1}
α∗δθ1δJ(θ1) 为θ
1
\theta_1
θ1 减去一个正数 ,θ
1
\theta_1
θ1往左边退(向代价函数最小值靠近), 当θ
1
\theta_1
θ1 所在的代价函数区间是单调递减时的如图(蓝线标记) ,此时θ
1
\theta_1
θ1 =θ
1
\theta_1
θ1 -α
∗
δ
J
(
θ
1
)
δ
θ
1
\alpha*\frac{δJ(\theta_1)}{δ\theta_1}
α∗δθ1δJ(θ1) 为θ
1
\theta_1
θ1 减去一个负数 ,θ
1
\theta_1
θ1往右边退(向代价函数最小值靠近)
1.3学习率
α
\alpha
α
有时我们的迭代方程下降时,可能很缓慢 ,
需要走很多步(化很久时间)才能到达局部最优或者全局最优 如下图:此时学习率
α
\alpha
α的作用就是调整步子长度 ,让其更快的下降到局部最优或者全局最优
注意:α
\alpha
α需要根据数据调节 , 设置大了 ,走一步太大了跳到对面那一头了 ,与想要的结果违背 ,如图 设置小了 ,步子又太小 ,所以设置α
\alpha
α也是一个细活1.4两个参数
两个参数
θ
1
\theta_1
θ1,θ
\theta_0
θ0,方程为h
θ
(
x
)
h_\theta(x)
hθ(x) =θ
+
\theta_0 +
θ0+θ
1
∗
x
\theta_1*x
θ1∗x迭代求解方程 (注意:参数是同步更新的 ,你的腿只能走一步)
θ
\theta_0
θ0 =θ
\theta_0
θ0 -α
∗
δ
J
(
θ
)
δ
θ
\alpha*\frac{δJ(\theta_0)}{δ\theta_0}
α∗δθ0δJ(θ0)θ
1
\theta_1
θ1 =θ
1
\theta_1
θ1 -α
∗
δ
J
(
θ
1
)
δ
θ
1
\alpha*\frac{δJ(\theta_1)}{δ\theta_1}
α∗δθ1δJ(θ1)此时的代价函数为
J
(
θ
,
θ
1
)
J(\theta_0,\theta_1)
J(θ0,θ1) ,如下图(是一个碗状 ,与一个参数的图像一样都是凹函数)为了更好理解 ,我们可以绘制出其的等高线
则目标所求的既是 等高线中心 或 碗底,即让代价函数最小
1.5多个参数
在问题案例中 ,往往有个参数
θ
i
(
i
=
1
,
2
,
3...
)
\theta_i(i=1,2,3...)
θi(i=1,2,3...)此时的代价方程则时关于多个
θ
i
\theta_i
θi参数 ,如图迭代求解方程 (注意:参数是同步更新的,你的腿只能走一步)
θ
\theta_0
θ0 =θ
\theta_0
θ0 -α
∗
δ
J
(
θ
)
δ
θ
\alpha*\frac{δJ(\theta_0)}{δ\theta_0}
α∗δθ0δJ(θ0)θ
1
\theta_1
θ1 =θ
1
\theta_1
θ1 -α
∗
δ
J
(
θ
1
)
δ
θ
1
\alpha*\frac{δJ(\theta_1)}{δ\theta_1}
α∗δθ1δJ(θ1)θ
2
\theta_2
θ2 =θ
2
\theta_2
θ2 -α
∗
δ
J
(
θ
2
)
δ
θ
2
\alpha*\frac{δJ(\theta_2)}{δ\theta_2}
α∗δθ2δJ(θ2)…
θ
n
\theta_n
θn =θ
n
\theta_n
θn -α
∗
δ
J
(
θ
n
)
δ
θ
n
\alpha*\frac{δJ(\theta_n)}{δ\theta_n}
α∗δθnδJ(θn)从中也可以看到在梯度下降迭代中 ,有两个最优结果(其他案例可能有许多) ,
整个迭代过程可以形象的理解为 你现在在山顶 ,要找一条最快的路下山 ,山底就是你的目标地点 ,也就是代价函数最小
1.6数据标准化
梯度下降在量化纲位不同 ,如果数
据范围分别是是【0~1000 ,0 ~5】或者【-0.00004 ~ 0.00002 ,10 ~ 30】, 那么在使用梯度下降算法时 ,他们的等高线是一个又窄又高的等高线 ,如下图:在梯度下降算法中 ,参数更新就会如上图左右震荡 ,收敛缓慢,我们就需要对特征进行特征缩放—数据标准化
详解见文章
【机器学习】梯度下降之数据标准化二 、正规解法
对正规解法来说 ,一般例子是对代价函数
J
(
θ
)
J(θ)
J(θ)求偏导数 ,令其为 0 便可以直接算出 最优参数θ
θ
θ,但大多数情况下%
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!