1.定义:
找到一个函数function,通过输入特征X,输出一个数值Scaler。
2.应用举例:
- 股市预测
输入:过去十年股票的变动、新闻资讯等
输出:预测股市明天的平均值 - Pokemon(宝可梦)精灵攻击力预测
输入:进化前的CP值、物种、血量(HP)、重量(weight)、高度(height)
输出:进化后的CP值
3.模型步骤
- Step1:模型假设,选择模型框架(线性模型)
- Step2:模型评估,如何判断众多模型的好坏(损失函数)
- Step3:模型优化,如何筛选最优的模型(梯度下降)
实例:预测宝可梦进化后的Combat Power(CP)值

Step1:Model
假设线性模型:y=b+∑wixiy=b+\sum_{}w_ix_iy=b+∑wixi

Step2:Goodness of function
收集训练数据,如下图所示:

有了这些真实的数据,如何衡量模型的好坏呢?可以通过损失函数(Loss Function)来衡量模型的好坏。
方法:定义一个Loss Function L,它的Input:a function,它的output:how bad it is
则L(f)=∑n=110(y^n−f(xcpn))2L(f)=\displaystyle\sum_{n=1}^{10}(\hat{y}^n-f(x_{cp}^n))^2L(f)=n=1∑10(y^n−f(xcpn))2,将f(x)=y=b+w⋅xf(x)=y=b+w \cdot xf(x)=y=b+w⋅x代入L(f)L(f)L(f),得到L(f)=L(w,b)=∑n=110(y^n−(b+w⋅xcpn))2L(f)=L(w,b)=\displaystyle\sum_{n=1}^{10}(\hat{y}^n-(b+w\cdot x_{cp}^n))^2L(f)=L(w,b)=n=1∑10(y^n−(b+w⋅xcpn))2,代表真实值与预测值之间的估测误差。
Step3:Best Function
如何筛选最优的模型(即最优的参数w和b)?已知损失函数为L,需要找到一个最优的f∗f^*f∗,使得L最小。

可以采用梯度下降(Gradient Descent):
先假设一个简单的情况:L(w)L(w)L(w)只有一个参数w,即求解的问题:找到一个w∗w^*w∗使L(w)L(w)L(w)最小。即w∗=argminwL(w)w^*=\displaystyle argmin_{w}L(w)w∗=argminwL(w)
方法:1.随机选取一个初始点w0w^0w0
2.计算dLdw∣w=w0\frac{dL}{dw}|_{w=w^0}dwdL∣w=w0,即当前的斜率
- 当>0时,减少www,即左移
- 当<0时,增加www,即右移
3.根据学习率η\etaη移动www,w1=w0−ηdLdw∣w=w0w^1=w^0 -{\eta}\frac{dL}{dw}|_{w=w^0}w1=w0−ηdwdL∣w=w0
4.重复步骤2和3,直到找到最低点…

对于Linear Regression,无Local minima,梯度下降基本上都能找到最优点。
对于两个参数www和bbb,过程是类似的,需要做的是偏微分。求解的问题:w∗,b∗=argminw,bL(w,b)w^*,b^*=argmin_{w,b}L(w,b)w∗,b∗=argminw,bL(w,b)
方法:1.随机选取初始点w0,b0w^0,b^0w0,b0
2.计算∂L∂w∣w=w0,b=b0\frac{\partial L}{\partial w}|_{w=w^0,b=b^0}∂w∂L∣w=w0,b=b0,∂L∂b∣w=w0,b=b0\frac{\partial L}{\partial b}|_{w=w^0,b=b^0}∂b∂L∣w=w0,b=b0,则w1=w0−η∂L∂w∣w=w0,b=b0w^1=w^0 -{\eta}\frac{\partial L}{\partial w}|_{w=w^0,b=b^0}w1=w0−η∂w∂L∣w=w0,b=b0,b1=b0−η∂L∂b∣w=w0,b=b0b^1=b^0-{\eta}\frac{\partial L}{\partial b}|_{w=w^0,b=b^0}b1=b0−η∂b∂L∣w=w0,b=b0
3.计算∂L∂w∣w=w1,b=b1\frac{\partial L}{\partial w}|_{w=w^1,b=b^1}∂w∂L∣w=w1,b=b1,∂L∂b∣w=w1,b=b1\frac{\partial L}{\partial b}|_{w=w^1,b=b^1}∂b∂L∣w=w1,b=b1,则w2=w1−η∂L∂w∣w=w1,b=b1w^2=w^1 -{\eta}\frac{\partial L}{\partial w}|_{w=w^1,b=b^1}w2=w1−η∂w∂L∣w=w1,b=b1,b2=b1−η∂L∂b∣w=w1,b=b1b^2=b^1-{\eta}\frac{\partial L}{\partial b}|_{w=w^1,b=b^1}b2=b1−η∂b∂L∣w=w1,b=b1
4.反复迭代后得到最优解
整理成一个更简洁的公式

问题:当用Gradient Descent解决L(θ)=argminθL(θ)L(\theta)=argmin_{\theta}L(\theta)L(θ)=argminθL(θ)时,通过不断更新参数使得L(θ0)>L(θ1)>L(θ2)>......L(\theta^0)>L(\theta^1)>L(\theta^2)>......L(θ0)>L(θ1)>L(θ2)>......求得最优解,一定正确吗?
不一定,原因是Gradient Descent存在的问题:1.Local Minima(当前最优点)2.Saddle Poient(微分为0但不是极值的点)3.very slow at plateau(很平的地方趋近与0)
www和bbb偏微分的求法:由公式L(w,b)=∑n=110(y^n−(b+w⋅xcpn))2L(w,b)=\displaystyle\sum_{n=1}^{10}(\hat{y}^n-(b+w\cdot x_{cp}^n))^2L(w,b)=n=1∑10(y^n−(b+w⋅xcpn))2求得∂L∂w=∑n=1102(y^n−(b+w⋅xcpn))(−xcpn)\frac{\partial L}{\partial w}=\displaystyle\sum_{n=1}^{10}2(\hat{y}^n-(b+w\cdot x_{cp}^n))(-x_{cp}^n)∂w∂L=n=1∑102(y^n−(b+w⋅xcpn))(−xcpn),∂L∂b=∑n=1102(y^n−(b+w⋅xcpn))(−1)\frac{\partial L}{\partial b}=\displaystyle\sum_{n=1}^{10}2(\hat{y}^n-(b+w\cdot x_{cp}^n))(-1)∂b∂L=n=1∑102(y^n−(b+w⋅xcpn))(−1)
4.实例结果如下:
使用训练集(10组数据上图)和测试集(另外10组数据)的平均误差来验证训练好的模型的好坏。
1.最简单的线性模型
Model:y=b+w⋅xcpy=b+w\cdot x_{cp}y=b+w⋅xcp
Best Function:b=−188.4,w=2.7b=-188.4,w=2.7b=−188.4,w=2.7
Average error:Training=110∑n=110en\frac{1}{10}\displaystyle\sum_{n=1}^{10}e^n101n=1∑10en=31.9 Testing=35.0
2.进一步优化模型
Model:y=b+w1⋅xcp+w2⋅xcp2y=b+w_1\cdot x_{cp}+w_2\cdot x_{cp}^2y=b+w1⋅xcp+w2⋅xcp2
Best Function:b=−10.3,w1=1.0,w2=2.7∗10−3b=-10.3,w^1=1.0,w^2=2.7*10^{-3}b=−10.3,w1=1.0,w2=2.7∗10−3
Average error:Training=110∑n=110en\frac{1}{10}\displaystyle\sum_{n=1}^{10}e^n101n=1∑10en=15.4 Testing=18.4 (better)
3.进一步优化模型
Model:y=b+w1⋅xcp+w2⋅xcp2+w3⋅xcp3y=b+w_1\cdot x_{cp}+w_2\cdot x_{cp}^2+w_3\cdot x_{cp}^3y=b+w1⋅xcp+w2⋅xcp2+w3⋅xcp3
Best Function:b=6.4,w1=0.66,w2=4.3∗10−3,w3=−1.8∗10−6b=6.4,w^1=0.66,w^2=4.3*10^{-3},w^3=-1.8*10^{-6}b=6.4,w1=0.66,w2=4.3∗10−3,w3=−1.8∗10−6
Average error:Training=110∑n=110en\frac{1}{10}\displaystyle\sum_{n=1}^{10}e^n101n=1∑10en=15.4 Testing=18.1(even better)
4.更复杂的模型
Model:y=b+w1⋅xcp+w2⋅xcp2+w3⋅xcp3+w4⋅xcp4y=b+w_1\cdot x_{cp}+w_2\cdot x_{cp}^2+w_3\cdot x_{cp}^3+w_4\cdot x_{cp}^4y=b+w1⋅xcp+w2⋅xcp2+w3⋅xcp3+w4⋅xcp4
Average error:Training=110∑n=110en\frac{1}{10}\displaystyle\sum_{n=1}^{10}e^n101n=1∑10en=14.9 Testing=28.8 在测试集上的结果更差了(worse)
5.更复杂的模型
Model:y=b+w1⋅xcp+w2⋅xcp2+w3⋅xcp3+w4⋅xcp4+w5⋅xcp5y=b+w_1\cdot x_{cp}+w_2\cdot x_{cp}^2+w_3\cdot x_{cp}^3+w_4\cdot x_{cp}^4+w_5\cdot x_{cp}^5y=b+w1⋅xcp+w2⋅xcp2+w3⋅xcp3+w4⋅xcp4+w5⋅xcp5
Average error:Training=110∑n=110en\frac{1}{10}\displaystyle\sum_{n=1}^{10}e^n101n=1∑10en=12.8 Testing=232.1 (so bad)
在训练集上表现更为优秀的模型,为什么在测试集上反而变差了?原因是模型在训练集上过拟合。
越复杂的模型,训练集上error越来越低,但不一定在测试集上有better performance。因此要选择合适的模型。
5.步骤优化:
Step1优化:2个input的四个线性模型合并到一个线性模型中
xsx_sxs代表物种:

改成Linear Function:
y=b1⋅δ(xs=P)+w1⋅δ(xs=P)xcp+b2⋅δ(xs=W)+w2⋅δ(xs=W)xcp+b3cdotδ(xs=C)+w3⋅δ(xs=C)xcp+b4⋅δ(xs=E)+w4⋅δ(xs=E)xcpy=b_1\cdot {\delta}(x_s=P)+w_1\cdot {\delta}(x_s=P)x_{cp}
+b_2\cdot {\delta}(x_s=W)+w_2\cdot {\delta}(x_s=W)x_{cp}
+b_3cdot {\delta}(x_s=C)+w_3\cdot {\delta}(x_s=C)x_{cp}
+b_4\cdot {\delta}(x_s=E)+w_4\cdot {\delta}(x_s=E)x_{cp}y=b1⋅δ(xs=P)+w1⋅δ(xs=P)xcp+b2⋅δ(xs=W)+w2⋅δ(xs=W)xcp+b3cdotδ(xs=C)+w3⋅δ(xs=C)xcp+b4⋅δ(xs=E)+w4⋅δ(xs=E)xcp
其中
δ(xs=P)={1xs=P0其它\delta(x_s=P)= \begin{cases} 1
& x_s= P\\
0& 其它
\end{cases}δ(xs=P)={10xs=P其它
结果:Training=3.8,Testing=14.3
Step2优化:如果希望模型更强大表现更好(更多参数,更多input)
重新设计模型,加入血量,重量,高度等特征。

更多特征,更多input,数据量没有明显增加,仍旧导致过拟合。
Step3优化:加入正则化(Regularization)
更多特征,但是权重 www 可能会使某些特征权值过高,仍旧导致overfitting,所以加入正则化。
y=b+∑wixiy=b+\sum w_ix_iy=b+∑wixi
损失函数:L=∑1n(y^n−(b+∑wixi))2+λ∑(wi)2L=\displaystyle\sum_{1}^n(\hat y^n-(b+\sum w_ix_i))^2+\lambda\sum(w_i)^2L=1∑n(y^n−(b+∑wixi))2+λ∑(wi)2,后面一项即为正则化项。
www越小,表示function较平滑,喜欢平滑的function,但不能太平滑。bbb的值接近于0,对曲线平滑没有影响。
本文介绍了机器学习中的线性回归模型,通过股市预测和宝可梦攻击力预测作为应用实例。详细阐述了线性回归的模型步骤,包括模型假设、模型评估和模型优化,特别是使用梯度下降法寻找最优参数。并通过不同复杂度模型的训练和测试结果,探讨了过拟合问题及正则化的应用。
5893

被折叠的 条评论
为什么被折叠?



