文章目录

  • 一、模型model
  • 二、较好的函数function
  • 三、最好的函数function
  • 3.1 一维函数
  • 3.2 二维函数
  • 3.3 局部最优解和全局最优解
  • 3.4 模型的泛化(Generalization)能力
  • 3.5 隐藏的因素(hidden factors)
  • 3.5 正则化(Regularization)


一、模型model

  • 一个函数function的集合:
  • 其中wi代表权重weight,b代表偏置值bias
  • 𝑥𝑖可以取不同的属性,如: 𝑥𝑐𝑝, 𝑥ℎ𝑝, 𝑥𝑤,𝑥

2SLS两阶段回归代码_ide

  • 我们将𝑥𝑐𝑝拿出来作为未知量,来寻找一个最优的线性模型Linear model:
    2SLS两阶段回归代码_算法_02

二、较好的函数function

  • 损失函数Loss function 𝐿:
  • L的输入Input是一个函数 f ,输出output则是一个具体的数值,而这个数值是用来评估输入的函数 f 到底有多坏
  • 2SLS两阶段回归代码_ide_03代表真实值,而2SLS两阶段回归代码_ide_04代表预测值,2SLS两阶段回归代码_2SLS两阶段回归代码_05代表真实值与预测值之间的总误差
    2SLS两阶段回归代码_2SLS两阶段回归代码_06
  • 将函数 f 用w,b替换,则可以写成下面这样
    2SLS两阶段回归代码_回归_07
  • 当 L 越小时,则说明该函数 f 越好,也就是该模型越好。在下图中的每一个点都代表一个函数 f

三、最好的函数function

  • 梯度下降Gradient Descent:就是求最好函数的过程
  • $f^{} 2SLS两阶段回归代码_算法_08w{*},b{}:$代表最好的权重weight和偏置值bias
    2SLS两阶段回归代码_机器学习_09
    2SLS两阶段回归代码_2SLS两阶段回归代码_10
    2SLS两阶段回归代码_2SLS两阶段回归代码_11

3.1 一维函数

下图代表Loss函数求梯度下降(Gradient Descent)的过程,首先随机选择一个2SLS两阶段回归代码_2SLS两阶段回归代码_12。在该点对w求微分,如果为负数,那么我们增大2SLS两阶段回归代码_2SLS两阶段回归代码_12的值;如果为正数,那么我们减小2SLS两阶段回归代码_2SLS两阶段回归代码_12的值。

  • 2SLS两阶段回归代码_2SLS两阶段回归代码_15
  • 2SLS两阶段回归代码_2SLS两阶段回归代码_16,其中 η 代表学习率:Learning rate,意味着每次移动的步长(step)
  • 2SLS两阶段回归代码_算法_172SLS两阶段回归代码_机器学习_18代表初始点2SLS两阶段回归代码_机器学习_19要移动的下一个点,就这样一直迭代(Iteration)下去,最终就会找到我们的局部最优解:Local optimal solution

2SLS两阶段回归代码_ide_20

2SLS两阶段回归代码_ide_21

2SLS两阶段回归代码_回归_22

3.2 二维函数

  • 对二维函数$Loss $ 2SLS两阶段回归代码_ide_23求梯度下降:2SLS两阶段回归代码_算法_24
  • 2SLS两阶段回归代码_ide_25
  • 随机初始化2SLS两阶段回归代码_2SLS两阶段回归代码_26,然后计算2SLS两阶段回归代码_ide_272SLS两阶段回归代码_回归_28
  • 2SLS两阶段回归代码_2SLS两阶段回归代码_29
  • 2SLS两阶段回归代码_2SLS两阶段回归代码_30

2SLS两阶段回归代码_2SLS两阶段回归代码_31

3.3 局部最优解和全局最优解

  • 公式化(Formulation)2SLS两阶段回归代码_2SLS两阶段回归代码_32和$
    \frac{\partial L}{\partial b}$:
  • 2SLS两阶段回归代码_ide_33
  • 2SLS两阶段回归代码_机器学习_34
  • 2SLS两阶段回归代码_回归_35
  • 在非线性系统中,可能会存在多个局部最优解:

3.4 模型的泛化(Generalization)能力

  • 将根据loss函数找到的最好模型拿出来,分别计算它在训练集(Training Data)和测试集(Testing Data)上的均方误差(Average Error),当然我们只关心模型在测试集上的具体表现如何。
  • 2SLS两阶段回归代码_回归_36
  • 由于原来的模型均方误差还是比较大,为了做得更好,我们来提高模型的复杂度。比如,引入二次项(xcp)2
  • 2SLS两阶段回归代码_2SLS两阶段回归代码_37
  • 继续提高模型的复杂度,引入三次项(xcp)3
  • 2SLS两阶段回归代码_2SLS两阶段回归代码_38
  • 继续提高模型的复杂度,引入三次项(xcp)4,此时模型在训练集上的均方误差变得更小了,但测试集上的反而变大了,这种现象被称为模型的过拟合(Over-fitting)
  • $y = b + w1∙x_{cp} + w2∙(x_{cp})2+ w3∙(x_{cp})3+ w4∙(x_{cp})4 $ Average Error = 28.8

2SLS两阶段回归代码_回归_39

3.5 隐藏的因素(hidden factors)

  • 当我们不仅仅只考虑宝可梦的cp值,将宝可梦的物种因素也考虑进去的话,在测试集上的均方误差降低到了14.3

2SLS两阶段回归代码_ide_40

2SLS两阶段回归代码_算法_41

  • 当我们继续考虑其他的因素,比如每只宝可梦的身高Height,体重weight,经验值HP。模型此时变得更加复杂了,让我们来看看它在测试集上的具体表现如何,非常不幸模型再次出现过拟合。

2SLS两阶段回归代码_算法_42

3.5 正则化(Regularization)

  • 为了解决过拟合的问题,我们需要重新设计一下损失函数 L,原来的损失函数只计算了方差,而没有考虑到含有干扰的输入对模型的影响。因此我们在 L 后面加上一项: 2SLS两阶段回归代码_回归_43
  • 重新设计的损失函数 L :2SLS两阶段回归代码_算法_44
  • 很显然根据下面的实验,我们取得了更好的表现,2SLS两阶段回归代码_回归_45

2SLS两阶段回归代码_机器学习_46