标记提示
x
b
a
x^a_b
xba中,a:x的编号,b:x的部分/特征/属性
y
b
a
^
\hat{y^a_b}
yba^表示y的真实值,a、b同上
Steps
模型:线性模型
一元:
y
=
w
x
+
b
y=wx+b
y=wx+b
多元:
y
=
w
∑
x
i
+
b
y=w\sum x^i +b
y=w∑xi+b
改变
w
w
w和
b
b
b以获得方法集
模型评估:损失函数
y的预测值和真实值的方差
L
(
w
,
b
)
=
∑
i
=
1
m
[
y
i
^
−
(
x
i
+
b
)
]
2
L(w,b)= \sum_{i=1}^m [\hat{y^i} - (x^i +b)]^2
L(w,b)=∑i=1m[yi^−(xi+b)]2
最佳方法
找到损失函数最小时对应的 w ∗ w^* w∗和 b ∗ b^* b∗,则 y ∗ = w ∗ x + b ∗ y^* = w^*x+b^* y∗=w∗x+b∗即为所求。
梯度下降
L
L
L可微时,找到参数使
m
i
n
L
min L
minL
计算
∂
L
∂
w
0
\frac{\partial L}{\partial w^0}
∂w0∂L,
∂
L
∂
b
0
\frac{\partial L}{\partial b^0}
∂b0∂L
⇓
\Downarrow
⇓
w
1
←
w
0
−
η
∂
L
∂
w
∣
w
=
w
0
,
b
=
b
0
w^1 \gets w^0 - \eta \frac{\partial L}{\partial w } \vert 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 \gets b^0 - \eta \frac{\partial L}{\partial b } \vert w=w^0,b=b^0
b1←b0−η∂b∂L∣w=w0,b=b0
⇓
\Downarrow
⇓
⋮
\vdots
⋮
⇓
\Downarrow
⇓
w
i
+
1
←
w
i
−
η
∂
L
∂
w
∣
w
=
w
i
,
b
=
b
i
w^{i+1} \gets w^i - \eta \frac{\partial L}{\partial w } \vert w=w^i,b=b^i
wi+1←wi−η∂w∂L∣w=wi,b=bi
b
i
+
1
←
b
i
−
η
∂
L
∂
b
∣
w
=
w
i
,
b
=
b
i
b^{i+1} \gets b^i - \eta \frac{\partial L}{\partial b } \vert w=w^i,b=b^i
bi+1←bi−η∂b∂L∣w=wi,b=bi
直到两个偏导数为0 --> 达到局部最小
⋆
\star
⋆若是线性回归,由于其损失函数为凸函数,所以只有全局最小,不存在局部最小。
过拟合
更复杂/更高次数的模型不一定是更好的模型,模型可能会包含过多Traning Data中细枝末节(不那么重要)的特征,可能导致预测的错误率变高,所以应该选择最适合的模型。
引入多变量
y
=
∑
i
=
1
m
δ
(
x
s
=
x
s
i
)
[
b
i
+
w
i
x
]
y=\sum_{i=1}^m \delta(x_s = x_s^i)[b_i+w_ix]
y=∑i=1mδ(xs=xsi)[bi+wix]
这样有多少个
x
s
x_s
xs就会有多少条直线,即不同类别用不同直线来拟合。
正则化Regularization
L ( w , b , λ ) = ∑ n [ y n ^ − ( b + ∑ w i x i ) ] 2 + λ ∑ ( w i ) 2 L(w,b,\lambda)=\sum_n[\hat{y^n}-(b+\sum w_ix_i)]^2 +\lambda\sum(w_i)^2 L(w,b,λ)=∑n[yn^−(b+∑wixi)]2+λ∑(wi)2
- 调参:找到最合适的 λ \lambda λ,并不是越大越好;
- 引入后一项是为了使函数图像更平滑,以使结果对x中的噪音更不敏感;
- 因为b趋于0所以对平滑程度没有影响。
用梯度下降算法实现线性回归程序演示
numpy函数补充
numpy.meshgrid()
生成网格点坐标矩阵
numpy.dot(A,B)
A,B的内积或者矩阵乘积