李宏毅机器学习课程梳理【一】:Regression及其案例研究

本文通过预测宝可梦进化后的战斗能力值(CP),介绍了回归分析的基本原理与应用流程。涵盖线性模型建立、损失函数定义、梯度下降法寻优等关键步骤,并探讨了模型优化与过拟合问题。

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


摘要
本文主要梳理Regression实现的操作过程,以预测宝可梦进化后的CP值为例,运用线性模型,逐步考虑影响预测误差的因素并且对模型进行优化,最终得到较小的误差。

1 对Regression的理解

Regression指找一个function,此function的输入为所需要的特征值,输出均为数值(scalar)

2 预测宝可梦进化后的战斗力(CP)案例

任务:找一个function,其input为某一只宝可梦的所有相关属性值,output为预测的宝可梦进化后的CP值,越准越好

相关符号:

  • x c p x_{cp} xcp表示进化前的宝可梦战力(用下标来表示某一个完整个体里面的某一属性);
  • x 1 x^1 x1表示一只杰尼龟(用上标来表示一个完整个体的编号);
  • 用y来代表function的output;
  • y ^ 1 {\hat{y}}^1 y^1表示杰尼龟进化后正确的观测值

2.1 Step1: Model

即找 A set of function
本例中找一个Linear Model: y = b + w * x c p x_{cp} xcp
其中b与w是常数,它们取不同的值,得到 f 1 f_1 f1, f 2 f_2 f2
step1:model上图中使用的Linear model: y = b + ∑ w i x i \sum_{} w_ix_i wixi
其中 x i x_i xi为输入的各种不同属性的属性值(attribute value),叫做特征(feature)
w i w_i wi: weight, b: bias

2.2 Step2: Goodness of Function

由于本例为监督学习,所以需要收集的是function的input和output(?根据“怎么告诉机器,我想找什么样的函式”来决定收集什么数据?
逐渐展现联系如上图,我们已经设计好模型,现在需要搜集训练集数据
十只宝可梦训练集数据如上图,将十只宝可梦的属性值画入坐标系中
L(f)如上图,现在需要定义一个L(f),这个函数的作用是衡量Model里的各个函数有多好(有多不好)
注意:Loss function的输入是一个函数
本例中Loss Function的输出是输入的函数多不好,L(f) = L(w,b) = ∑ n = 1 10 [ y ^ n − ( b + w ∗ x c p n ) ] 2 \displaystyle\sum_{n=1}^{10}{[{\hat{y}}^n-(b+w*x_{cp}^n)]}^2 n=110[y^n(b+wxcpn)]2
可以直观反映【实际正确的观测值】与【Model预测值】的差距,故L(f)越小越好
Loss function的形状绘图如上图,将Loss function的形状绘图,图像上的每一个点代表一个function,找到loss最低的一个function(绘图可省略,不能从图上找best function

2.3 Step3: Best Function and Gradient Descent

现在要利用Loss function找出Function set中最好的function,记作 f ∗ f^* f或者 w ∗ , b ∗ w^*, b^* w,b
本例中Model使用的是Linear model,可选处理方法包括closed-form solution和gradient descent

  • closed-form solution:
    把特定的微分方程的解用基本函数(例如多项式、三角函数、对数指数函数等等)及特殊函数给表达出来,线性代数中同样可以这么理解。局限性:仅适合求Linear regression
  • gradient descent:
    只要L(f)是可微分的,都可以拿来处理出Best function或者参数

现在以一个参数的L(w)为例,欲找到一个 w w w得到 w ∗ = a r g min ⁡ w L ( w ) w^* = arg\min\limits_w L(w) w=argwminL(w),操作如下:

  1. 随机选取一个 w 0 w^0 w0,以后会有方法找到一个使L(w)值比较好的 w 0 w^0 w0
  2. 计算 w = w 0 w=w^0 w=w0时,L(w)对w的微分,即 w 0 w^0 w0点处切线斜率
  3. 当结果小于0时,增加w的取值;当结果大于0时,减小w的取值
    梯度下降法
  4. 参数更新幅度只与两个方面有关,一个是 d L d w ∣ w = w 0 \dfrac{dL}{dw}|_{w=w^0} dwdLw=w0的值的大小【微分值越大,更新幅度越大】;另一个是常数项 η \eta η,叫做learning rate【是一个事先定好的数值,值越大,更新幅度越大,学习效率越高】
  5. 于是得到 w 1 = w 0 − η d L d w ∣ w = w 0 w^1=w^0-\eta\dfrac{dL}{dw}|_{w=w^0} w1=w0ηdwdLw=w0
  6. 重复步骤2~5

可能会找到的是local minimum,只找到局部最优解,而非全局最优解。不过linear regression不会遇到这个问题,因为它是convex function
局部最优解本案例中有两个参数,易推广到两个参数
2个参数的梯度下降下面可视化一下刚才的两个参数的计算过程
每个点代表一个函数

2.4 Results

最后计算出 b ∗ , w ∗ b^*,w^* b,w, 对于Training Data来说,结果如下图
训练集结果可视化重要的是,对于Testing Data来说,结果如下
测试集
结果一般会比Training Data上的误差大一点

3 对Model优化

3.1 在10个数据的Training Data基础上

定义 y = b + w 1 ∗ x c p + w 2 ∗ ( x c p ) 2 y=b + w_1*x_{cp} + w_2*(x_{cp})^2 y=b+w1xcp+w2(xcp)2,引入二次方在这里插入图片描述Model再引入三次项,Testing Data的error为18.1
Model再引入四次项,Testing Data的error为28.8,见下图
过拟合过于复杂的Model易导致过拟合

3.2 在60个数据的Training Data基础上

很多情况预测值不只受一个因素影响
本例中还受物种的影响,需彻底重构Model
分物种Model
这样Testing Data的error降到14.3

3.3 优化时增加影响因素导致过拟合的解决办法

Back to step 2: Regularization(正则化).
在定义Loss function时增加knowledge,重新定义一个function的好坏,来找到比较好的function.
本例Regularization是加上一项 λ Σ ( w i ) 2 \lambda\Sigma(w_i)^2 λΣ(wi)2.
注:regularization的过程不考虑bias
L = ∑ n = 1 10 [ y ^ n − ( b + w ∗ x c p n ) ] 2 + λ Σ ( w i ) 2 L=\displaystyle\sum_{n=1}^{10}{[{\hat{y}}^n-(b+w*x_{cp}^n)]}^2+\lambda\Sigma(w_i)^2 L=n=110[y^n(b+wxcpn)]2+λΣ(wi)2
需要理解, w i w_i wi越接近0,function就是一个越平滑的function,受到的干扰越小,结果越好。
λ \lambda λ是常数值,值越大,function越平滑。
正则后结果

4 总结与展望

首先理解机器学习就是自动找函式,其次研究找到的函式为数值的Regression,然后完成预测宝可梦进化后的CP值的过程,进而学习到找Model、定义Loss function与寻找Best function之中的操作,初步认知Gradient Descent的操作过程,最后认知过拟合与正则优化。
优化后对于Testing Data的误差为11.1,那么如果将其做成一个系统上传到网络,其实会得到大于11.1的误差,下一篇会引入验证集的概念、Gradient Descent算法等内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值