跳转至

机器学习学习笔记

教程:李宏毅2020深度学习(完整版)国语

P3. Regression - Case Study

如何用机器学习解决问题:

  1. 定义预测函数
  2. 定义损失函数:函数对训练数据的损失越小,这个函数就越好,表示损失程度的函数就是损失函数
  3. 选出最优函数——梯度下降法(Gradient Descent)

梯度下降法可以得到一个局部最优解(Local optimal):

image-20210327145622194

但在线性方程中,不用担心这个问题:

image-20210327150418004

这里举了个例子,用pokemon的“进化前cp值”去预测“进化后的cp值”:

​ 用二次函数比一次函数模型来做,testing data的average error要更好:

image-20210327151226587

但用三次函数时,发现效果反而更差了:

image-20210327151427436

这就是过拟合(Overfitting):

image-20210327151538310

改进的方法是,损失函数中加一项,表示“尽可能地使输出对输入不敏感”(平滑),正则化“Regularization”:

image-20210329143441391

平滑,但不希望太平滑:

image-20210329143740916

4.Basic Concept

error分为bias & variance

image-20210330094943240

简单的model,variance会比较小;

复杂的model,bias会比较小(图里黑线为假设的目标函数,蓝线是用不同数据集算出的函数平均出(?)的函数)

image-20210330095640282

bias大的解决方法,考虑欠拟合、过拟合,改进model:

  • 欠拟合可能是模型不够复杂、存在未考虑的input(特征)
  • 过拟合可能是模型过于复杂

variance大的解决方法:

  • 增加数据集容量
  • 之前提到的正则化

image-20210330100338100

模型的选择

数据集分为:

  • 网上公开的Testing Set
  • 别人私有的Testing Set

用网上公开的数据集筛选出的模型,对于私有的Testing Set肯定会有更高的误差。

正确的做法是:把数据集分为:Training Set / Validation Set,千万不要参考“验证数据集”筛选(修改)模型。

image-20210330101803887

一种方法是,把数据集分为3份,两份用来训练一份用来训练,做三次,找出Avg Err最小的模型:

image-20210330102221477