01-regression_study

Regression

问题引入

宝可梦的CP(战斗能力)值
CP_forecast

任务

我们根据已有的宝可梦进化前后的信息,来预测某只宝可梦进化后的CP值大小。我们拥有宝可梦进化前后的数据,input是进化前宝可梦(包括他的各种属性值),output是进化后宝可梦的CP值;因此我们使用的方法是Supervised Learning。
Step1. 设计一个Model
regression_model
建立一些函数使其可以表示进化前后的关系,比如我可已设定这样一个函数:
y = b + w ∗ x c p y = b + w * x_{cp} y=b+wxcp
其中y是进化后该宝可梦的CP值, x c p x_{cp} xcp是进化前宝可梦的CP值,w and b are parameters。w和b可以是任意值,那么就得到了无穷多的function。
y = b + w ∗ x c p y = b + w * x_{cp} y=b+wxcp是一种Linear model。
所谓的Linear model就是把一个function写成 y = b + ∑ w i ∗ x i y = b + \sum w_i*x_i y=b+wixi的形式,其中b是常量,** w i w_i wi是各种参数, x i x_i xi**是输入的各种属性,比如在这个例子中可以是宝可梦的CP值,身高、体重等变量。
Step2. Goodness of Function
我们已经设计了很多的function,可以使用现有的数据来测试设计好的functions,比如杰尼龟
regression_goodness
进化前的CP值为612,进化后为979。
x 1 x^1 x1表示进化前的CP值 612
y ^ 1 \hat{y}^1 y^1表示期望值 979
多次用Training data,如十组数据( x 1 x^1 x1, y ^ 1 \hat{y}^1 y^1),( x 2 x^2 x2, y ^ 2 \hat{y}^2 y^2),……( x 10 x^{10} x10, y ^ 10 \hat{y}^{10} y^10)
如果我们把十只宝可梦的进化前后的CP值画到坐标系上:
regression_ten_data
图中每一个小点都代表一组数据,有了这些数据我们就可以知道这些function的Loss。
Loss function L:
Input : a function, output: how bad it is
Loss function就是衡量某一个function的好坏程度,其实就是衡量 w w w, b b b的好坏。
如何定义Loss函数
常见的做法如下:
L ( w , b ) = ∑ i = 1 n = 10 ( y ^ n − ( b + w ∗ x c p n ) ) 2 L(w,b) = \sum_{i=1}^{n=10}(\hat{y}^n - (b + w * x_{cp}^n))^2 L(w,b)=i=1n=10(y^n(b+wxcpn))2
其中:

  • x c p n x_{cp}^n xcpn是第n组数据的CP值;
  • ( b + w ∗ x c p n ) (b + w * x_{cp}^n) (b+wxcpn)是根据所设计好的该函数的w值,b值所计算预测出的CP值;
  • y ^ n \hat{y}^n y^n是实际进化后的真实CP值;
  • y ^ n − ( b + w ∗ x c p n ) \hat{y}^n - (b + w * x_{cp}^n) y^n(b+wxcpn)是预测误差
    根据上述方程即可计算出该函数的Loss
    regression_goodness_function
    比如上图中的红点代表当 w = -2, b = -180时,颜色越红函数越不好,越偏蓝色函数越好。就可以指出最好函数的大致方向。
    Step3: Best Function
    how_to_find_best
    目前在第一步我们设置了很多的w和b,也就是定义了很多的函数,在第二部我们用现有数据检测这些函数那些是好的,那些是坏的,那么现在我们的目的是要找的一个最好的函数表达进化前后的关系,找到这个最好的函数,也就是找这个w和b,方法是。Gradient Descent(梯度下降)。

如何找到一个最小的Loss值的function?
举一个简单的例子,如果我们需要的函数只有一个w,那么我们可以穷举所有的w,计算出w对应的Loss值,看哪一个w可以使Loss值最小,但这样的方法太复杂。
infty_w
Gradient Descent怎么做呢?
我们先随机选取一个 w 0 w_0 w0,我们计算在Loss 在 w = w 0 w_0 w0处的微分,如果微分是负的,说明Loss值正在下降,我们就应该增加w的值;如果是正的,说明Loss值在上升,就应该减少w的值。
increse_w
那么给w增大(减少)多少合适呢?
我们根据现在 w 0 w^0 w0点处的微分大小所决定:
w0->w1
上图中 η \eta ηlearning rate 当微分小于0时,应增大w,故 η \eta η前有符号。
learning_rate
此时我们得到了 w 1 w^1 w1,重复上述步骤,我们回到一个Local Optimal的地方,但是在Linear Learning上是没有Local Optimal的,我们最终还是会找到Global Optimal。
local_optimal
明白了上述一个参数的例子,我们回到刚开始的宝可梦的问题,有两个参数我们计算w和b的偏微分。在 w = w 0 , b = b 0 w = w^0,b = b^0 w=w0b=b0 时计算L对w, b的偏微分,并根据此偏微分和learning rate η \eta η 得到 w 1 , b 1 w^1, b^1 w1,b1 ,反复执行这个步骤得到最佳的w和b。
two_parameters
loss_color
上图中,颜色越蓝,Loss越小。
随机选取一个点,根据上述步骤走,结果如下:
gradient_descent_01
有一个令人担心的地方,如果Loss值如下图所示,会得到多个结果?
gradient_descent_02
不需要担心,在Linear regression,没有Local Optimal,随便选一个点,根据Gradient descent 找到的参数是同一组参数。
最后补充一些偏微分的求导:
pianweifen

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值