pokemon开始啦,来做一个基于对pokemon进化后cp的值的回归预测

  • estimating the combat power of a pokeom after evolution

体重,身高,血量,种族,目前的cpp都是input,也可以说是特征,$x_{w},x_{h},x_{hp},x_{cp},x_{xhp}$

step 1: Model

找一个function set,假设我们猜测的是线性方程,那么就是$y = b + w * X_{cp} $

step 2: Goodness of Function

之后就是收集各种pokemon的资料,可以收集记录当一个pokemon进化时的资料,以及进化后的cp变化值,进化后的值就是正确的标签,设定为$\hat y$

假设目前有10只pokemon,我们画图标记坐标,绘制图如下所示:

可以看到有一些值特别高,这个特别高的值就是伊布,因为伊布比较稀有,他的数值各方面都非常高。

对于如何定义为不好的function,那么就是对于标签值即真实值和函数的预测值的差距特别大,因此loss可以写成estimation error

step3: Best Function

那么最好的function就一定是loss,也就是误差最小的function,而我们的任务就是找出loss最小的function,也就是组成这个function的参数,比如w和b。

如何找loss最小的方式呢?方式就是通过梯度下降来求loss,

selecting another Model

如果选择的回归模型并不能很好拟合,那我们就可以尝试使模型变复杂,不再使用一元,而是三元,甚至四元,使模型复杂。

可见模型复杂后的预测效果是更好了,但是引入五元后训练集的error很小,可是test上就产生了较大的误差,就有了overfitting。

redesgin the model

因为pokemon不同种族值有一定影响,我们可以引入one-hot来对于不同的种有不同的函数。

进行模型修改后就会有三条不同的线,对应三个不同的宝可梦。