kylin

醉里论道,醒时折花。

kylin

李宏毅machine learning学习笔记——Regression

资料

pdf video B站
链接 链接 链接

例子:预测宝可梦进化后的武力值(cp)

输入

  • X来表示一只宝可梦
  • Xi来表示宝可梦进化前的种种特性(feature)
    • Xcp 现在的cp值
    • Xs 物种
    • Xhp hp值
    • Xw 体重
    • Xh 身高

输出

  • 这只宝可梦进化后的cp值:Y

Model

假设输入与输出间存在Y = w·Xcp 这样的关系(这里省略了X的其他属性)

由于wb可以为任何值。这里我们将各种数值带入到bw中,就得到了一个Model(A set of function)

  • f1:Y = 10+9·Xcp
  • f2:Y = 9.8+9.2·Xcp
  • f3:Y = - 0.8-1.2·Xcp

最后得到一个Linear Model

Loss function

Loss function用来衡量Model中的function,它的InputModel中的fn,它的Output可以是这个fn与正确的数值的差平方和。
由于fn是由bw的数值决定的,由此可得Loss function L(w,b)如下图所示

找到最优f*——Gradient Descent(梯度下降法)

f*是Model中的一个f,使Loss function能取到最小值

假设只有一个参数w

  1. 寻找一个w0的位置,计算L在w0的位置的微分dL/dw|w=w0。
  2. 移动w的到w1的位置,w1 <- w0 - η*dL/dw|w=w0 (η被称为learning rate——步长,是一个可设置的常量)如果当前位置的微分的绝对值很大,则说明距离目标点越远,反之则越近,等于0的时候不再移动。
  3. 直到找到一个wt,使dL/dw|w=wt = 0

如下图所示,梯度下降法并不能够保证一定能找到global minima或是local minima,找到的也可能是saddle point

回到两个参数的情况,将所有的偏微分排成一个向量,这个向量就被称为梯度

优化Model

通过以上的方式我们找到一个函数f y = 188.4+2.7*xcp,如图所示,并不是所有的点都能拟合函数,讲参数带入Loss function得到error为35.0 依然比较大。这时我们需要想办法优化我们的model。我们用相同的方法分别尝试了1-5次方程。从下图中可以看出,在training data中的error越来越小,但是在testing data上,误差变化却并不与在training data上一致,甚至在5次方程中,误差达到了200+,这个现象被称为overfitting

二次
三次
四次
五次
overfitting

function 并不是越复杂越好。

tips

  • 是否是现行模型取决于wby = b+w1*xcp + w2*xcp^2 依然是一个linear model
  • linear regression的场景中不用担心wt会出现在saddle point的位置