回归
使用场景
股票预测:
输入:历史股票价格等
输出:明日或以后股票的价格或平均值
自动驾驶:
输入:场景信息、信号
输出:方向盘角度
推荐系统:
输入:使用者信息、商品信息
输出:购买可能性
课内使用案例:
预测宝可梦进化后的战斗力(CP)
输入:进化前的CP,种类,HP,重量,高度
预测步骤
第一步——确定模型的集合
线性模型:
y
=
b
+
Σ
w
i
x
i
y = b + \Sigma w_ix_i
y=b+Σwixi
其中
w
i
w_i
wi是权重,
x
i
x_i
xi是特征,
b
b
b是偏差。
第二步——模型好坏的判断
x
i
x^i
xi表示第i个样本的特征,
y
^
i
\hat y^i
y^i表示第i个样本的真值。
定义Loss Function,输入一个模型,输出模型的好坏程度。
L
(
f
)
=
L
(
w
,
b
)
=
Σ
n
=
1
10
(
y
^
n
−
(
b
+
w
⋅
x
c
p
n
)
)
2
L(f) = L(w, b) = \Sigma^{10}_{n=1}(\hat y^n - (b+w·x^n_{cp}))^2
L(f)=L(w,b)=Σn=110(y^n−(b+w⋅xcpn))2
L
(
f
)
L(f)
L(f)越小,表示模型误差越小,模型越好。
于是找到最好的模型:
f
∗
=
a
r
g
m
i
n
f
L
(
f
)
f^* = argmin_fL(f)
f∗=argminfL(f),
w
∗
,
b
∗
=
a
r
g
m
i
n
w
,
b
L
(
w
,
b
)
w^*,b^*=argmin_{w,b}L(w,b)
w∗,b∗=argminw,bL(w,b)
第三步——梯度下降
先考虑loss function的一个参数w:
- 随机选择一个初值 w 0 w^0 w0
- 计算 d L d w ∣ w = w 0 \frac{\mathrm{d}L}{\mathrm{d}w}|_{w=w^0} dwdL∣w=w0,更新参数 w 1 = w 0 − η d L d w ∣ w = w 0 w^1=w^0-\eta\frac{\mathrm{d}L}{\mathrm{d}w}|_{w=w^0} w1=w0−ηdwdL∣w=w0。其中 η \eta η为学习率,控制参数更新的快慢。
- 重复上一步骤,直至不再更新或者更新的差值小于某个值。
如何考虑两个参数:
- 随机选择一个初值 w 0 , b 0 w^0,b^0 w0,b0
- 计算 ∂ L ∂ w ∣ w = w 0 , b = b 0 \frac{\partial L}{\partial w}|_{w=w^0,b=b^0} ∂w∂L∣w=w0,b=b0, ∂ L ∂ b ∣ w = w 0 , b = b 0 \frac{\partial L}{\partial b}|_{w=w^0,b=b^0} ∂b∂L∣w=w0,b=b0,更新参数 w 1 = w 0 − η ∂ L ∂ w ∣ w = w 0 , b = b 0 w^1=w^0-\eta\frac{\partial L}{\partial w}|_{w=w^0,b=b^0} w1=w0−η∂w∂L∣w=w0,b=b0, b 1 = b 0 − η ∂ L ∂ b ∣ w = w 0 , b = b 0 b^1=b^0-\eta\frac{\partial L}{\partial b}|_{w=w^0,b=b^0} b1=b0−η∂b∂L∣w=w0,b=b0
- 重复上一步骤
担心的地方:有可能陷入局部极小值。
但对于线性回归来说,loss function是一个凸函数,只有一个极值点也是最小点。
之后利用测试样本来带入模型,查看测试误差来检测模型的准确程度。
改进模型
- 增加模型特征数
可以选择另一种更为复杂的模型,例如在原模型中引入特征的二次项或者三次项等等。但更复杂的模型不代表更精确,参数越多,模型在测试集上的表现可能越差,即过拟合。所以要考虑模型的泛化能力(或者有些场景需要合理解释模型的参数)。
- 增加训练集样本
查看模型是否还准确。若不准确,则要考虑修改模型(重新计算参数;或者可以考虑增加特征数量,或者修改特征描述方式) - 正则化
在loss function中增加一项: λ Σ ( w i ) 2 \lambda\Sigma(w_i)^2 λΣ(wi)2,对越不接近0的参数进行惩罚(可以减少噪声的影响,使曲线变得平滑,但不希望过于平滑)。
在做正则化时可以不考虑 b b b值,因为 b b b只影响上下平移,不影响平滑程度。