Regression
解释两个或多个变量间是否相关、相关方向与强度
课程中老师通过对宝可梦的分析进行推进,预测宝可梦进化之后的CP值
宝可梦预测第一次尝试
Step 1: Model
Linear model:
y
=
b
+
∑
w
i
x
i
y=b+\sum{w_ix_i}
y=b+∑wixi
Step 2: Goodness of Function
即估计函数的好坏(Loss function),一个输入函数的函数,表示如下
L
(
f
)
=
∑
n
=
1
10
(
y
^
n
−
f
(
x
c
p
n
)
)
2
L(f)=\sum_{n=1}^{10}(\hat y^n-f(x_{cp}^n))^2
L(f)=n=1∑10(y^n−f(xcpn))2
将其Visualization表示如下:
要找到最合适点(每个点都表示一个函数),就是找到离两边区间最大的点
Step 3: Best Function&Gradient Descent
找到最佳函数,表示如下:
f
∗
=
a
r
g
min
f
L
(
f
)
w
∗
,
b
∗
=
a
r
g
min
w
,
b
L
(
w
,
b
)
=
a
r
g
min
w
,
b
∑
n
=
1
10
(
y
^
n
−
f
(
x
c
p
n
)
)
2
f^*=arg\min_f{L(f)}\\ w^*,b^*=arg\min_{w,b}{L(w,b)}\\=arg\min_{w,b}\sum_{n=1}^{10}{(\hat y^n-f(x_{cp}^n))^2}
f∗=argfminL(f)w∗,b∗=argw,bminL(w,b)=argw,bminn=1∑10(y^n−f(xcpn))2
其中通过Gradient Descent(梯度下降)方法来寻找
-
对于一个参数的损失函数L(w)而言,随机选择一个初始点 w 0 w^0 w0,计算 d L d w ∣ w = w 0 \frac{dL}{dw}|_{w=w^0} dwdL∣w=w0,更新 w 1 = w 0 − η d L d w ∣ w = w 0 w^1=w^0-\eta \frac{dL}{dw}|_{w=w^0} w1=w0−ηdwdL∣w=w0( η \eta η表示learning rate),一直到找到Local minima(本次极值),但可能找不到global minima(全局极值)
-
对于多个参数的损失函数而言,计算梯度 ▽ L \triangledown L ▽L,分别更新每个参数,同样存在可能找不到global minima的问题
基本偏微分计算过程如下:
L ( w , b ) = ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p n ) ) 2 ∂ L ∂ w = ∑ n = 1 10 2 ( y ^ n − ( b + w ⋅ x c p n ) ) ( − x c p n ) ∂ L ∂ b = ∑ n = 1 10 2 ( y ^ n − ( b + w ⋅ x c p n ) ) ( − 1 ) L(w,b)=\sum_{n=1}^{10}(\hat y^n-(b+w\cdot x_{cp}^n))^2 \\ \frac{\partial L}{\partial w}=\sum_{n=1}^{10}2{(\hat y^n-(b+w\cdot x_{cp}^n))}(-x_{cp}^n) \\ \frac{\partial L}{\partial b}=\sum_{n=1}^{10}2{(\hat y^n-(b+w\cdot x_{cp}^n))}(-1) L(w,b)=n=1∑10(y^n−(b+w⋅xcpn))2∂w∂L=n=1∑102(y^n−(b+w⋅xcpn))(−xcpn)∂b∂L=n=1∑102(y^n−(b+w⋅xcpn))(−1)
Model 结果探讨
通过上述步骤选择的函数在训练集结果如下
在测试集的结果如下:
将一次线性Model升级成二次Model结果如下:
继续升级!:
升级。。:
可以看到过拟合现象开始出现,即Overfitting
宝可梦预测第二次尝试
依据:进化后的CP值不仅仅只是进化前的CP相关,还可能与生命值,种类,重量,身高等相关,将这些都考虑到建立的Model中再次尝试
Back to step 1: Redesign the Model Again
可以发现模型复杂度提高后,直接就出现了过拟合现象,可以通过加入正则化来缓解这种问题,使模型更加平滑
Back to step 2: Regularization
加入正则化项后的式子如下:
L
=
∑
n
(
y
^
n
−
(
b
+
∑
w
i
x
i
)
)
2
+
λ
∑
(
w
i
)
2
L=\sum_{n}(\hat y^n-(b+\sum{w_ix_i}))^2+\lambda\sum(w_i)^2
L=n∑(y^n−(b+∑wixi))2+λ∑(wi)2
我们偏向于更smoother的函数,这就需要smaller的
w
i
w_i
wi,通过不断测试得到不同
λ
\lambda
λ下训练集和测试集结果,选择的最加参数和结果为红框交叉处
误差来源探究
基本上都是由bias和variance导致的,中文分别为偏差和方差。它们对于误差的影响可以如下表示:
偏差决定预测值与真实值的误差大小,简单模型偏差较大但方差小,即不易被训练数据影响。方差决定预测值分布范围,复杂模型往往偏差较小但方差大,容易产生过拟合现象,下面的例子比较直观
对于这个宝可梦预测而言,偏差和方差的关系图如下:
处理偏差/方差的注意事项
- 偏差较大的时候模型一般处于欠拟合状态,此时可以增大输入特征构建更加复杂的model、提供更多的训练数据、修改正则项(可能适得其反)
- 很好的拟合训练集,但测试集效果不好,一般就是方差过大的现象,修改正则项咯
- 方差和偏差很多时候需要作出取舍,一般要选择两者都比较小的模型
- 交叉验证和N折验证可以用于获得较为客观测试成绩