李宏毅机器学习——1.Regression

本文介绍了机器学习中的线性回归模型,通过股市预测和宝可梦攻击力预测作为应用实例。详细阐述了线性回归的模型步骤,包括模型假设、模型评估和模型优化,特别是使用梯度下降法寻找最优参数。并通过不同复杂度模型的训练和测试结果,探讨了过拟合问题及正则化的应用。

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

1.定义:

找到一个函数function,通过输入特征X,输出一个数值Scaler。

2.应用举例:
  • 股市预测
    输入:过去十年股票的变动、新闻资讯等
    输出:预测股市明天的平均值
  • Pokemon(宝可梦)精灵攻击力预测
    输入:进化前的CP值、物种、血量(HP)、重量(weight)、高度(height)
    输出:进化后的CP值
3.模型步骤
  • Step1:模型假设,选择模型框架(线性模型)
  • Step2:模型评估,如何判断众多模型的好坏(损失函数)
  • Step3:模型优化,如何筛选最优的模型(梯度下降)

实例:预测宝可梦进化后的Combat Power(CP)值

Step1:Model
假设线性模型: y = b + ∑ w i x i y=b+\sum_{}w_ix_i y=b+wixi

Step2:Goodness of function
收集训练数据,如下图所示:

有了这些真实的数据,如何衡量模型的好坏呢?可以通过损失函数(Loss Function)来衡量模型的好坏。
方法:定义一个Loss Function L,它的Input:a function,它的output:how bad it is
L ( f ) = ∑ n = 1 10 ( y ^ n − f ( x c p n ) ) 2 L(f)=\displaystyle\sum_{n=1}^{10}(\hat{y}^n-f(x_{cp}^n))^2 L(f)=n=110(y^nf(xcpn))2,将 f ( x ) = y = b + w ⋅ x f(x)=y=b+w \cdot x f(x)=y=b+wx代入 L ( f ) L(f) L(f),得到 L ( f ) = L ( w , b ) = ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p n ) ) 2 L(f)=L(w,b)=\displaystyle\sum_{n=1}^{10}(\hat{y}^n-(b+w\cdot x_{cp}^n))^2 L(f)=L(w,b)=n=110(y^n(b+wxcpn))2,代表真实值与预测值之间的估测误差。
Step3:Best Function
如何筛选最优的模型(即最优的参数w和b)?已知损失函数为L,需要找到一个最优的 f ∗ f^* f,使得L最小。

可以采用梯度下降(Gradient Descent):
先假设一个简单的情况: L ( w ) L(w) L(w)只有一个参数w,即求解的问题:找到一个 w ∗ w^* w使 L ( w ) L(w) L(w)最小。即 w ∗ = a r g m i n w L ( w ) w^*=\displaystyle argmin_{w}L(w) w=argminwL(w)
方法:1.随机选取一个初始点 w 0 w^0 w0
     2.计算 d L d w ∣ w = w 0 \frac{dL}{dw}|_{w=w^0} dwdLw=w0,即当前的斜率
      - 当>0时,减少 w w w,即左移
      - 当<0时,增加 w w w,即右移
     3.根据学习率 η \eta η移动 w w w w 1 = w 0 − η d L d w ∣ w = w 0 w^1=w^0 -{\eta}\frac{dL}{dw}|_{w=w^0} w1=w0ηdwdLw=w0
     4.重复步骤2和3,直到找到最低点…

对于Linear Regression,无Local minima,梯度下降基本上都能找到最优点。

对于两个参数 w w w b b b,过程是类似的,需要做的是偏微分。求解的问题: w ∗ , b ∗ = a r g m i n w , b L ( w , b ) w^*,b^*=argmin_{w,b}L(w,b) w,b=argminw,bL(w,b)
方法:1.随机选取初始点 w 0 , b 0 w^0,b^0 w0b0
     2.计算 ∂ L ∂ w ∣ w = w 0 , b = b 0 \frac{\partial L}{\partial w}|_{w=w^0,b=b^0} wLw=w0,b=b0 ∂ L ∂ b ∣ w = w 0 , b = b 0 \frac{\partial L}{\partial b}|_{w=w^0,b=b^0} bLw=w0,b=b0,则 w 1 = w 0 − η ∂ L ∂ w ∣ w = w 0 , b = b 0 w^1=w^0 -{\eta}\frac{\partial L}{\partial w}|_{w=w^0,b=b^0} w1=w0ηwLw=w0,b=b0 b 1 = b 0 − η ∂ L ∂ b ∣ w = w 0 , b = b 0 b^1=b^0-{\eta}\frac{\partial L}{\partial b}|_{w=w^0,b=b^0} b1=b0ηbLw=w0,b=b0
     3.计算 ∂ L ∂ w ∣ w = w 1 , b = b 1 \frac{\partial L}{\partial w}|_{w=w^1,b=b^1} wLw=w1,b=b1 ∂ L ∂ b ∣ w = w 1 , b = b 1 \frac{\partial L}{\partial b}|_{w=w^1,b=b^1} bLw=w1,b=b1,则 w 2 = w 1 − η ∂ L ∂ w ∣ w = w 1 , b = b 1 w^2=w^1 -{\eta}\frac{\partial L}{\partial w}|_{w=w^1,b=b^1} w2=w1ηwLw=w1,b=b1 b 2 = b 1 − η ∂ L ∂ b ∣ w = w 1 , b = b 1 b^2=b^1-{\eta}\frac{\partial L}{\partial b}|_{w=w^1,b=b^1} b2=b1ηbLw=w1,b=b1
     4.反复迭代后得到最优解
整理成一个更简洁的公式

问题:当用Gradient Descent解决 L ( θ ) = a r g m i n θ L ( θ ) L(\theta)=argmin_{\theta}L(\theta) L(θ)=argminθL(θ)时,通过不断更新参数使得 L ( θ 0 ) > L ( θ 1 ) > L ( θ 2 ) > . . . . . . L(\theta^0)>L(\theta^1)>L(\theta^2)>...... L(θ0)>L(θ1)>L(θ2)>......求得最优解,一定正确吗?
不一定,原因是Gradient Descent存在的问题:1.Local Minima(当前最优点)2.Saddle Poient(微分为0但不是极值的点)3.very slow at plateau(很平的地方趋近与0)

w w w b b b偏微分的求法:由公式 L ( w , b ) = ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p n ) ) 2 L(w,b)=\displaystyle\sum_{n=1}^{10}(\hat{y}^n-(b+w\cdot x_{cp}^n))^2 L(w,b)=n=110(y^n(b+wxcpn))2求得 ∂ L ∂ w = ∑ n = 1 10 2 ( y ^ n − ( b + w ⋅ x c p n ) ) ( − x c p n ) \frac{\partial L}{\partial w}=\displaystyle\sum_{n=1}^{10}2(\hat{y}^n-(b+w\cdot x_{cp}^n))(-x_{cp}^n) wL=n=1102(y^n(b+wxcpn))(xcpn) ∂ L ∂ b = ∑ n = 1 10 2 ( y ^ n − ( b + w ⋅ x c p n ) ) ( − 1 ) \frac{\partial L}{\partial b}=\displaystyle\sum_{n=1}^{10}2(\hat{y}^n-(b+w\cdot x_{cp}^n))(-1) bL=n=1102(y^n(b+wxcpn))(1)

4.实例结果如下:

使用训练集(10组数据上图)和测试集(另外10组数据)的平均误差来验证训练好的模型的好坏。
1.最简单的线性模型
Model: y = b + w ⋅ x c p y=b+w\cdot x_{cp} y=b+wxcp
Best Function: b = − 188.4 , w = 2.7 b=-188.4,w=2.7 b=188.4,w=2.7
Average error:Training= 1 10 ∑ n = 1 10 e n \frac{1}{10}\displaystyle\sum_{n=1}^{10}e^n 101n=110en=31.9  Testing=35.0
2.进一步优化模型
Model: y = b + w 1 ⋅ x c p + w 2 ⋅ x c p 2 y=b+w_1\cdot x_{cp}+w_2\cdot x_{cp}^2 y=b+w1xcp+w2xcp2
Best Function: b = − 10.3 , w 1 = 1.0 , w 2 = 2.7 ∗ 1 0 − 3 b=-10.3,w^1=1.0,w^2=2.7*10^{-3} b=10.3,w1=1.0,w2=2.7103
Average error:Training= 1 10 ∑ n = 1 10 e n \frac{1}{10}\displaystyle\sum_{n=1}^{10}e^n 101n=110en=15.4  Testing=18.4 (better)
3.进一步优化模型
Model: y = b + w 1 ⋅ x c p + w 2 ⋅ x c p 2 + w 3 ⋅ x c p 3 y=b+w_1\cdot x_{cp}+w_2\cdot x_{cp}^2+w_3\cdot x_{cp}^3 y=b+w1xcp+w2xcp2+w3xcp3
Best Function: b = 6.4 , w 1 = 0.66 , w 2 = 4.3 ∗ 1 0 − 3 , w 3 = − 1.8 ∗ 1 0 − 6 b=6.4,w^1=0.66,w^2=4.3*10^{-3},w^3=-1.8*10^{-6} b=6.4,w1=0.66,w2=4.3103,w3=1.8106
Average error:Training= 1 10 ∑ n = 1 10 e n \frac{1}{10}\displaystyle\sum_{n=1}^{10}e^n 101n=110en=15.4  Testing=18.1(even better)
4.更复杂的模型
Model: y = b + w 1 ⋅ x c p + w 2 ⋅ x c p 2 + w 3 ⋅ x c p 3 + w 4 ⋅ x c p 4 y=b+w_1\cdot x_{cp}+w_2\cdot x_{cp}^2+w_3\cdot x_{cp}^3+w_4\cdot x_{cp}^4 y=b+w1xcp+w2xcp2+w3xcp3+w4xcp4
Average error:Training= 1 10 ∑ n = 1 10 e n \frac{1}{10}\displaystyle\sum_{n=1}^{10}e^n 101n=110en=14.9  Testing=28.8 在测试集上的结果更差了(worse)
5.更复杂的模型
Model: y = b + w 1 ⋅ x c p + w 2 ⋅ x c p 2 + w 3 ⋅ x c p 3 + w 4 ⋅ x c p 4 + w 5 ⋅ x c p 5 y=b+w_1\cdot x_{cp}+w_2\cdot x_{cp}^2+w_3\cdot x_{cp}^3+w_4\cdot x_{cp}^4+w_5\cdot x_{cp}^5 y=b+w1xcp+w2xcp2+w3xcp3+w4xcp4+w5xcp5
Average error:Training= 1 10 ∑ n = 1 10 e n \frac{1}{10}\displaystyle\sum_{n=1}^{10}e^n 101n=110en=12.8  Testing=232.1 (so bad)
在训练集上表现更为优秀的模型,为什么在测试集上反而变差了?原因是模型在训练集上过拟合。
越复杂的模型,训练集上error越来越低,但不一定在测试集上有better performance。因此要选择合适的模型。

5.步骤优化:

Step1优化:2个input的四个线性模型合并到一个线性模型中
x s x_s xs代表物种:

改成Linear Function:
y = b 1 ⋅ δ ( x s = P ) + w 1 ⋅ δ ( x s = P ) x c p + b 2 ⋅ δ ( x s = W ) + w 2 ⋅ δ ( x s = W ) x c p + b 3 c d o t δ ( x s = C ) + w 3 ⋅ δ ( x s = C ) x c p + b 4 ⋅ δ ( x s = E ) + w 4 ⋅ δ ( x s = E ) x c p y=b_1\cdot {\delta}(x_s=P)+w_1\cdot {\delta}(x_s=P)x_{cp} +b_2\cdot {\delta}(x_s=W)+w_2\cdot {\delta}(x_s=W)x_{cp} +b_3cdot {\delta}(x_s=C)+w_3\cdot {\delta}(x_s=C)x_{cp} +b_4\cdot {\delta}(x_s=E)+w_4\cdot {\delta}(x_s=E)x_{cp} y=b1δ(xs=P)+w1δ(xs=P)xcp+b2δ(xs=W)+w2δ(xs=W)xcp+b3cdotδ(xs=C)+w3δ(xs=C)xcp+b4δ(xs=E)+w4δ(xs=E)xcp
其中
δ ( x s = P ) = { 1 x s = P 0 其 它 \delta(x_s=P)= \begin{cases} 1 & x_s= P\\ 0& 其它 \end{cases} δ(xs=P)={10xs=P
结果:Training=3.8,Testing=14.3
Step2优化:如果希望模型更强大表现更好(更多参数,更多input)
重新设计模型,加入血量,重量,高度等特征。

更多特征,更多input,数据量没有明显增加,仍旧导致过拟合。

Step3优化:加入正则化(Regularization)
更多特征,但是权重 w w w 可能会使某些特征权值过高,仍旧导致overfitting,所以加入正则化。
y = b + ∑ w i x i y=b+\sum w_ix_i y=b+wixi
损失函数: L = ∑ 1 n ( y ^ n − ( b + ∑ w i x i ) ) 2 + λ ∑ ( w i ) 2 L=\displaystyle\sum_{1}^n(\hat y^n-(b+\sum w_ix_i))^2+\lambda\sum(w_i)^2 L=1n(y^n(b+wixi))2+λ(wi)2,后面一项即为正则化项。
w w w越小,表示function较平滑,喜欢平滑的function,但不能太平滑。 b b b的值接近于0,对曲线平滑没有影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值