Regression:Case study——Pokemon example

Regression(回归)

简单的对李宏毅老师课上的pokemon的cp(Combat Power)预测整体流程进行梳理。

在总结之前,先了解何为"回归"(regression):
第一,我们将想要预测的是连续值,比如癌症程度早期、中期、晚期,此类学习任务我们就称之为"回归"(egression)
第二,我们将想要预测的是离散值,比如“健康”,“亚健康”,此类学习任务我们就称之为“分类”(classification)。除此之外,对涉及两项类别的分类,为“二分类”,并称其中一个类为“正类”(positive class),另一个为“反类”(negative class);涉及到多个类别时,称为“多分类”。

接下来,简单梳理一下整个example:
已知每个Pokemon都有cp(武力值 )、weight(重量)、height(身高)、hp(生命值),并且还有species(物种)。
任务:预测升级进化后的Pokemon的cp值

  • step 1: Model
    假设model为 y=b+w* x c p x_{cp} xcp,(w,x为参,可取任意值)此模型为线性模型;其中,y是升级进化后的cp值,b为偏差(bias), x c p x_{cp} xcp是x的cp值

  • step 2: Goodness of Function
    收集Training data,10只Pokemon的数据(假设data中每只Pokemon的升级进化后的真实值为 y r y_r yr);
    将Training data中的 x c p x_{cp} xcp带入到上面的model中得到一个预测值(b+w* x c p x_{cp} xcp),此时为判断function的好坏,有了一个新的函数产生Loss function L(Input:a function , output:how bad it is)
    L(f)=L(w,b)= ∑ i = 1 10 ( y r − ( b + w ∗ x c p ) ) 2 \displaystyle\sum_{i=1}^{10}(y_r-(b+w*x_{cp}))^2 i=110(yr(b+wxcp))2
    得到Loss function 的图像:
    Loss function
    在这个图像中,每个点都是一个function,每点都有确定的w,b的值,而颜色就是 output (how bad it is)越偏蓝色 function越好。

  • step 3: Best function
    找到一组w,b能得到最好的结果,采用**Gradient Descent(梯度下降)**这个方法要求loss function是可微分的( 代码见我另一篇博客Gradient Descent Demo)
    整个梯度下降过程大致如下:gradient descent
    在这个方法中我们有了新的小伙伴η(learning rate),就是对L(w)求微分,简单来说就是上述图片上的斜率;假设切线的斜率是负的,那么曲线就是左边高,右边低,w就应该往右边移动,才能让Loss变小;反之,如果斜率是正的,则应该往左边移动,减小w。注意:参数η是可以手动设置的,在Gradient Descent Demo中有体现。
    此外,在视频中,老师还讲到了两个参数时的梯度下降,此处不再讲述。

  • step 4: Result
    最后结果如图:在这里插入图片描述
    在上图中,我们使用了Training data计算了average error为31.9,我们所要做的function是为了预测一些没有在Training data里的数据,所以,找到了另外十组的Testing data来对该function做测试,最终得到的结果是35.0>31.9,说明该function的误差还是比较大的。
    之后要进行优化,后面的步骤是进行优化处理。

  • step 5: Select another model
    由于误差较大,我们可以选择其他的model,引入二次式、三次式甚至四次式之后我们所得的average error如下图所示:
    在这里插入图片描述
    这时,我们发现不是选择的model越复杂越好,会出现overfitting(过拟合)的情况,所以这就要求我们选择suitable model。同时也要扩大数据即collect more data,找其他隐藏的factors,来完善整个model。

  • step 6: Back to step 1 (Redesign the model)
    扩大了Training data,找到了hidden factors(species 物种),意味着要重新设计model。重回第一步,对应每一个物种都有一个一次函数,那么有m个物种,整个model就变成了有m个一次函数,这还是个 Liner model吗?看下图:
    linear model
    将m个式子合并,依旧还是 Liner model。得到的结果依旧不是很理想:Training data average error = 3.8,Testing data average error = 14.8。也许还应该将其他的因素考虑进来,比如重量,身高,生命力等。Redesign the model again :
    在这里插入图片描述
    再一次出现了Overfitting!

  • step 7: Back to step 2 (Regularization)
    解决方式:Regularization(参数正则化,防止过拟合
    Redesign the Loss function:
    L= ∑ i = 1 10 ( y r − ( b + w ∗ x c p ) ) 2 \displaystyle\sum_{i=1}^{10}(y_r-(b+w*x_{cp}))^2 i=110(yr(b+wxcp))2 ∑ ( w i ) 2 \displaystyle\sum(w_i)^2 (wi)2
    其中,The functions with smaller w i w_i wi are better,说明比较平滑,对输入的变化比较不敏感,越平滑,就不容易受到noise的影响。

  • step 8: Result
    最后结果如图,但是根据结果来看,不是越平滑越好,我们要选择最合适的(Testing data average error 最小的),当λ=100时,Testing data average error=11.1最小,为最终结果。
    r
    以上,是整个Pokemon example的大致流程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值