前言
本文是飞桨【李宏毅课程-机器学习】中回归、分类内容的笔记。
课程链接:https://aistudio.baidu.com/aistudio/course/introduce/1978
一、回归
1.回归介绍
使用回归进行预测,得到的输出是连续数值。 f ( x ) = y f(x) = y f(x)=y
回归步骤是:
- 找一个函数集合(model),就是用哪种形式的函数对x进行预测,一组参数对应一个函数。
- 设定一个规则,描述函数的好坏(Loss 函数),eg. L = ∑ n ( y ^ n − ( b + ∑ w i x i ) ) 2 L =\sum_n\left(\hat y^n-\left(b+\sum w_ix_i\right)\right)^2 L=n∑(y^n−(b+∑wixi))2
- 根据规则找到最合适的函数进行预测。
过拟合:模型在训练数据上得到的误差很小,而在验证数据上得到的误差很大。
欠拟合: 模型在训练数据上得到的误差很大。
出现过拟合时,可以在损失函数中加入正则项,也就是对
w
w
w的值作了约束,让
w
w
w值尽量得小,使得函数
y
y
y对输入不敏感,更平滑。
L
=
L
0
+
λ
×
∑
(
w
i
)
2
L = {L_0}+\lambda \times \sum\left(w_i\right)^2
L=L0+λ×∑(wi)2
λ
\lambda
λ的取值决定了最后
y
y
y的平滑程度,如果
λ
\lambda
λ设置过大,可能会导致函数
y
y
y过于平滑,在训练数据上的误差会变大。
2.误差
误差来源于bias和variance。
variance:某个函数 f ∗ f^* f∗与模型中所有函数 f ∗ f^* f∗的期望 f ˉ \bar f fˉ的偏离程度,也就是model中所有函数的离散程度。
bias:模型中所有函数 f ∗ f^* f∗的期望 f ˉ \bar f fˉ与目标函数 f ^ \hat f f^的偏离程度。
high bias:模型中所有函数的准确度都很低,相当于射击了100次,每次都离靶心很远。
low bias:模型中函数有一定的准确率。
high variance:模型中所有函数很分散。
low variance:模型中所有函数相似。
图片来源:李宏毅老师课件
简单模型得到大bias,小variance的可能性更大,因为模型简单,函数变化的空间不大,所以与目标函数相似的可能性会比较小。
与之相对,复杂模型得到小bias,大variance的可能性更大。
图片来源:李宏毅老师课件
下图中,横轴表示模型多项式的次数,纵轴表示误差。
图中显示,large bias,small variance造成欠拟合。small bias,large variance造成过拟合。large bias造成underfitting,large variance造成overfitting。
解决large bias:
- input中添加更多的feature
- 使用更复杂的模型
解决large variance:
- 增加训练数据量
- 正则化
二、分类
1.Probabilistic Generative Model
根据特征进行分类,得到的输出是代表它的class,eg.
f
(
x
)
=
{
c
l
a
s
s
1
,
P
(
C
1
∣
x
)
>
0.5
c
l
a
s
s
2
,
e
l
s
e
f(x)=\begin{cases} class 1, & P\left(C_1|x\right)> 0.5\\ class 2, & else \end{cases}
f(x)={class1,class2,P(C1∣x)>0.5else
其中
x
x
x属于class1的概率
P
(
C
1
∣
x
)
P\left(C_1|x\right)
P(C1∣x)的计算如下
P
(
C
1
∣
x
)
=
P
(
x
∣
C
1
)
P
(
C
1
)
P
(
x
∣
C
1
)
P
(
C
1
)
+
P
(
x
∣
C
2
)
P
(
C
2
)
P\left(C_1|x\right)=\frac{P\left(x|C_1\right)P\left(C_1\right)}{P\left(x|C_1\right)P(C_1)+P\left(x|C_2\right)P(C_2)}
P(C1∣x)=P(x∣C1)P(C1)+P(x∣C2)P(C2)P(x∣C1)P(C1)
式子中的未知数是
- 每个class的概率—— P ( C i ) P(C_i) P(Ci)
- 从class C i C_i Ci中得到 x x x的概率—— P ( x ∣ C i ) P\left(x|C_i\right) P(x∣Ci)
P
(
C
i
)
=
n
u
m
(
C
i
)
∑
n
(
n
u
m
(
C
i
)
)
P\left(C_i\right)=\frac{num\left(C_i\right)}{\sum_n \left(num\left(C_i\right)\right)}
P(Ci)=∑n(num(Ci))num(Ci)
P
(
x
∣
C
i
)
P(x|C_i)
P(x∣Ci)的求解需要引入高斯分布。输入
x
x
x从这个分布中被采样出来的几率。下图中红色圈圈中颜色最深的是中心点,越靠近中心点,被采样出来的几率越大。
μ
\mu
μ 的值决定中心点的位置,协方差矩阵
∑
\sum
∑ 决定分布的形状。
图片来源:李宏毅老师课件
使用最大似然估计确定
μ
\mu
μ 和
∑
\sum
∑ 。
图片来源:李宏毅老师课件
确定 μ \mu μ 和 ∑ \sum ∑ 的值之后,计算 P ( x ∣ C i ) P(x|C_i) P(x∣Ci)的值,就可以得到 x x x的类别。
2.Logistic Regression
Step:1
f
w
,
b
(
x
)
=
{
c
l
a
s
s
1
,
P
(
C
1
∣
x
)
>
0.5
c
l
a
s
s
2
,
e
l
s
e
f_{w,b}(x)=\begin{cases} class 1, & P\left(C_1|x\right)> 0.5\\ class 2, & else \end{cases}
fw,b(x)={class1,class2,P(C1∣x)>0.5else
先对
x
x
x进行线性组合,
z
=
∑
i
w
i
x
i
+
b
z=\sum_iw_ix_i+b
z=∑iwixi+b,将
z
z
z的值投影到0,1之间。
P
(
C
1
∣
x
)
=
σ
(
z
)
P\left(C_1|x\right) = \sigma(z)
P(C1∣x)=σ(z)
σ
(
z
)
=
1
1
+
e
−
z
\sigma(z)=\frac{1}{1+e^{-z}}
σ(z)=1+e−z1
Step:2
使用cross entropy描述函数
f
w
,
b
f_{w,b}
fw,b与label的接近程度,值越小表示越接近。
Step:3
根据corss entropy这个loss函数进行梯度下降,获得最优的参数。
后记
以上是飞桨课程【李宏毅课程-机器学习】部分内容的学习笔记。感谢飞桨提供平台让我进行学习,感谢群里的班主任、助教们的解答,感谢群里同学们的帮助。在这门课程中我收获了很多机器学习的知识,同时还有很多地方没有搞清楚,作业主要是参考李宏毅老师给出的答案。之后还需要回顾课程内容,在飞桨中提升战力。