回归可以做什么?
pm2.5的预测案例;
股票的预测:找一个函数 input可能是过去的股票资料 output是明天的点数;
无人车:input是information output是方向盘等;
推荐系统。
应用案例:
预测宝可梦的CP值
我们要做的是:找一个函数,输入是一只宝可梦,输出是进化后的CP值
Xcp是进化前的CP值,Xs是所属物种,Xhp是生命值,Xw是重量,Xh是高度。
Step1 :Model
w、b是参数
Step 2:评估函数的好坏
函数的输入:用上标表示一个完整的object (个体)的编号,用下标表示component
收集了十只神奇宝贝的数据;
蓝色点代表一只宝可梦。
定义一个Loss Function,输入是一个函数,衡量参数的好坏。估测的误差越大,选择的函数越差。
图中的一个点代表一个function 颜色代表Loss函数的值,越偏红色,定义的函数越糟糕,越偏蓝色误差越小。
Step3:选择Best Function
上述操作衡量了函数的好坏,然后需要挑选一个最好的function。
只要L(f)是可微分的 梯度下降法都可以用来求较好的参数。L(f)即是Loss函数。
L(w)可能是可微分的任意的函数。
穷举所有w的可能值,看哪一个w的值最小。此做法效率很低。
所以,随机选取一个初始的点W0,在该点处计算微分(切线的斜率),斜率是负的,Loss值左高右低,所以想减小Loss值,需要增加w的值。
在该例中,w会增加,增加量如何?
增加量取决于,1.现在的微分值 2.学习率(常数)
依据
来更新w的值
然后再重复上述的步骤。
经过多次的更新,会找到一个l局部最小值,此时的微分为0.
有两个参数的情况。
颜色代表Loss的数值;选择红色的点计算偏微分,更新参数,其实红色箭头所指的方向就是等高线的法线的方向。
Gradient Decent有一个让人担心的地方:如果Loss如上图所示,取点的不同会导致不同的最小值。但是在线性回归中,Loss函数都是凸函数,没有局部最优点。
以上是求的对新数据的误差,比training data上的误差值大一些。
可以做的更好吗?重新选择Model。
可能要引入二次式。
引入三次方。
可能Model更复杂。
Model更复杂,Testing Data上的误差反而更大了。
在测试集上的误差随着Model变的复杂而变大,此时发生了过拟合。
选三次式作为结果。
搜集更多的宝可梦。
考虑宝可梦的物种的影响。
所以重新设计Model。
将上述的式子改写成线性的。
输入的是Pidgey。
不同种类的宝可梦,他们的Model就会不一样。
其他可能会影响CP值的因素。
将所想到因素全都加入模型。出现了过拟合现象,使用正则化来解决。
在Loss中加入而外的项。当 wi 接近0时,曲线是比较平滑的,即当输入有变化时,输出对输入的变化不敏感。
为何喜欢更加平滑的函数?如果有一个被杂讯干扰的输入,平滑的函数会受到比较小的影响。
λ值越大,曲线越平滑。Training data上的误差越大。因为当λ越大,越倾向于考虑w本来的值,考虑error就越小。当function太平滑,在Testing Data 上的误差反而会增大。
最后的选择。