训练集、验证集和测试集
训练集(train sets)主要用于训练模型,调整参数,验证集(validation sets)用于进一步调参,而测试集(test sets)用于最后评估模型的精度。一般训练集、验证集和测试集的比例为60%,20%,20%。
Bias&Variance
我们的学习模型和真实值之间的误差主要来自三个方面:Bias,Variance和随机误差。其中随机误差,也叫噪声,是我们无法避免的。所以我们主要讨论Bias和Variance。
Bias通常是由于我们的模型欠拟合(underfit)造成的,而Variance通常是由于模型过拟合(Overfit)造成的。
下图是形象地表示出多项式的度与High Bias和High Variance的关系。(图来自Andrew Ng)
下图是正则化参数
λ
\lambda
λ与Bias/Variance之间的关系
注意:在计算
λ
\lambda
λ与误差之间的关系时,先用带有正则参数的损失函数
J
(
θ
)
J(\theta)
J(θ)计算出
Θ
\Theta
Θ,然后将求出的
Θ
\Theta
Θ计算出不带正则的
J
c
v
(
θ
)
J_{cv}(\theta)
Jcv(θ)和
J
t
r
a
i
n
(
θ
)
J_{train}(\theta)
Jtrain(θ)。
学习曲线(learning curve)
学习曲线(learning curve)是表示样本数目大小(m)与训练集误差(
J
t
r
a
i
n
(
θ
)
J_{train}(\theta)
Jtrain(θ))和验证集误差(
J
c
v
(
θ
)
J_{cv}(\theta)
Jcv(θ))之间的关系图。
当模型有high bias的问题时,如果样本数量很小,那么
J
t
r
a
i
n
(
θ
)
J_{train}(\theta)
Jtrain(θ)比较小,
J
c
v
(
θ
)
J_{cv}(\theta)
Jcv(θ)会较大,但是当样本数量增加后,
J
t
r
a
i
n
(
θ
)
J_{train}(\theta)
Jtrain(θ)和
J
c
v
(
θ
)
J_{cv}(\theta)
Jcv(θ)会慢慢变得相近,但是都大于期望的误差。所以对于高偏差的模型,仅仅增加样本的数量对模型帮助不是很大。
当模型有high variance时,如果样本数量很小,那么
J
t
r
a
i
n
(
θ
)
J_{train}(\theta)
Jtrain(θ)比较小,
J
c
v
(
θ
)
J_{cv}(\theta)
Jcv(θ)会较大,当样本数量变大之后,
J
c
v
(
θ
)
J_{cv}(\theta)
Jcv(θ)会变小,而
J
t
r
a
i
n
(
θ
)
J_{train}(\theta)
Jtrain(θ)会变大,但
J
t
r
a
i
n
(
θ
)
<
J
c
v
(
θ
)
{J_{train}(\theta)}<{J_{cv}(\theta)}
Jtrain(θ)<Jcv(θ),且两者之间有一些差距。对于high variance来说,增加样本数量可以帮助改善模型的准确度。
经验总结
下面总结了一些可以有效减小high bias或者high variance的方法:
对于神经网络来讲,如果隐藏单元或者隐藏层很少,即模型比较简单,可能会导致欠拟合,但是如果隐藏单元或者隐藏层很多,可能会导致过拟合。所以,对神经网络问题,一般来讲应设计神经网络应优先考虑3层网络(即有1个隐层)。一般地,靠增加隐层节点数来获得较低的误差,其训练效果要比增加隐层数更容易实现。
一般在写模型算法时,比较推荐的方法是:
1.首先花较少的时间完成一个简单的算法,并且在验证集上测试一下
2.画出学习曲线帮你决定你可以通过什么途径来减少误差。
3.误差分析:手动在验证集中检查那些被弄错了的样本,分析出哪些类型的的特征可能能帮助你有效减少误差。
倾斜数据(Skewed Data)
数据倾斜是指数据的分散度不够,导致大量的数据集中在某一类或者某几类中。对于这类数据,我们不能通过简单的准确度来评判模型的好坏,而是通过Precision和Recall两个维度来评判。
对于Precision和Recall的定义如下:
对于有些模型来讲,Precision变大,那么Recall就会变小,Precision变小,Recall就会变大,那么就需要在Precision和Recall中权衡。F1 分数(F1 score)是衡量的一个指标。具体的表示为:
F
1
S
c
o
r
e
=
2
∗
P
r
e
c
i
s
i
o
n
∗
R
e
c
a
l
l
P
r
e
c
i
s
i
o
n
+
R
e
c
a
l
l
F_1\space Score = 2*\frac{Precision*Recall}{Precision+Recall}
F1 Score=2∗Precision+RecallPrecision∗Recall
如果Precision和Recall都能很高就最好了。