欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

李宏毅机器学习Regression

发布时间:2023/12/14 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 李宏毅机器学习Regression 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1.回归定义

  • regression就是寻找一个函数,通过输入特征,然后输出一个数值

2.模型步骤

  • Step1:模型假设,选择模型框架(linear model)
  • Step2:模型评估,如何判断众多模型的好坏(loss function)
  • Step3:模型优化,如何筛选最优的模型(Gradient Descent)

Step1:模型假设–linear model

一元线性模型(单个特征):最简单的模型(线性模型),并且假设因变量只有一个,即宝可梦进化前的cp值,则表达式为y=b+w⋅xcpy=b+w\cdot x_{cp}y=b+wxcp
多元线性模型(多个特征):对单变量模型进行泛化,生成多变量线性模型,表达式为y=b+∑wixiy=b+\sum w_ix_iy=b+wixi。其中xix_ixi表示的是每个特征的取值,wiw_iwi表示的是每个特征对应的权重,b表示的是偏置(bias).

Step2:模型评估–loss function

  • 使用损失函数(loss function)来衡量模型的好坏

统计10组原始数据L(f)=L(w,b)=∑n=110(yn−(b+w⋅xcpn))2L(f)=L(w,b)= \sum_{n=1}^{10} ( y^n−(b+w⋅x _{cp}^n)) ^2L(f)=L(w,b)=n=110(yn(b+wxcpn))2的值,和越小模型越好。
其中yyy表示的是真实值,后者表示的是预测值。
公式是对所有样本的误差求平方和。

Step3:模型优化–Gradient Descent

从理论上来说,如果存在评估标准和函数空间,就可以使用穷举法选择出最优函数。但实际上来说,这是不可取的,因为计算量太大而且耗时太长。所以我们需要在有限时间内(而且不能太慢),求出最优函数。
由此引出梯度下降法:


这里需要引入一个学习率的概念:移动的步长,上图中的η\etaη

  • 步骤1:随机选取一个w0w^0w0
  • 步骤2:计算微分,也就是当前的斜率,根据斜率来判定移动的方向:
    • 大于0减小w值
    • 小于0增加w值
  • 步骤3:根据学习率移动
  • 重复步骤2和步骤3,直到找到最低点

    梯度下降存在的问题
  • 局部最优点
  • 学习率太低导致迭代至收敛太慢
  • 学习率太高导致直接越过谷底,算法发散

不过对于局部最优点,线性回归问题不大,因为线性回归中的损失函数为凸函数,所以不存在局部最优点

3.验证模型好坏

  • 使用训练集和测试集的平均误差来验证模型的好坏

训练集上

测试集上

测试集上的误差大于训练集上的误差很正常。
但是是否存在更好的函数,使得训练数据和测试数据的评估误差都变小呢?根据泰勒公式,任何形式的函数都可以近似表示为若干个多项式函数之和。而我们现在使用的是线性函数,则可以尝试使用多项式函数降低数据误差。

4.优化模型

Step1:1元N次线性模型


可见,二次模型在训练集和测试集上的表现都比之前更优秀。
然后可以再试试三次,四次,五次……

  • 注意:其实不是只有图像是直线的就是线性模型,其他各种复杂的曲线也可以是线性模型,因为把xcp1=(xcp)2x_{cp}^{1}=(x_{cp})^2xcp1=(xcp)2看作一个特征,那么y=b+w1⋅xcp+w2⋅xcp1y = b + w_1\cdot x_{cp} + w_2\cdot x_{cp}^1y=b+w1xcp+w2xcp1其实就是线性模型

结果显示,到四次的时候,训练和测试综合效果最好,而五次中虽然训练误差最小,但是测试误差很大,此时过拟合——即在训练集上表现很好,但在测试集上表现很差(相对为欠拟合——训练集和测试集上表现都很差)。

由于高幂次函数空间包括了低幂次函数空间。虽然幂次的上升,会使得训练数据的误差不断减小,但是可能也会使得测试数据的误差急剧增加。

Step2:步骤优化

通过对Pokemons种类判断,将4个线性模型合并到一个线性模型中:



加入宝可梦种类作为自变量以后,即使是线性模型,训练和测试误差都很小:

考虑把宝可梦的体重、身高、HP都加入到自变量中:

把宝可梦种类加入到自变量中,如果使用二次函数进行拟合,就会出现过拟合的现象:

Step3:正则化

  • 更多特征,但是权重w可能会使某些特征权值过高,仍旧导致overfitting,所以加入正则化
  • 注意正则化项不包括偏置项
  • 正则化公式中的λ\lambdaλ取值越大,会使得函数越平滑。这是由于λ\lambdaλ的值越大,在尽量使损失函数变小的前提下,就会使得w越小,w越小就会使得函数越平滑(在很多应用场景中,并不是w越小模型越平滑越好,但是经验告诉我们 w 越小大部分情况下都是好的)。
  • λ\lambdaλ本质上表示的是惩罚项,惩罚项过大可能就会影响学习的效果,因为惩罚项过大,就会导致参数空间变得比较小,所以最终结果一般。

总结

以上是生活随笔为你收集整理的李宏毅机器学习Regression的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。