基本关系
泛化误差 = 方差 + 偏差 + 噪声
方差:表示在不同数据集上,模型预测输出的波动情况。我们知道如果给定不同的数据,我们模型会得到不一样的预测结果,比如在线性回归问题中,我们要预测 y = w x + b y=wx+b y=wx+b,比如我们有100个数据点 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x 100 , y 100 ) } \{(x_1,y_1),(x_2,y_2),…,(x_{100},y_{100})\} {(x1,y1),(x2,y2),…,(x100,y100)},每次我们随机抽取10个点去拟合这条回归曲线,会得到不同的 w , b w,b w,b,不妨记第i次学习到的参数为 w i , b i w_i,b_i wi,bi,我们就得到这样多组的 y = w i x + b i y=w_ix+b_i y=wix+bi的拟合曲线。那么给定任一个 x x x,这些不同的回归线极可能预测到不同的y(同一个输入x,不同的参数 w i , b i w_i,b_i wi,bi),记为 { y 1 , y 2 , … , y n } \{y_1,y_2,…,y_n\} {y1,y2,…,yn} 。而所谓模型的方差,就是数据 { y 1 , y 2 , … , y n } \{ y_1,y_2,…,y_n\} {y1,y2,…,yn}的方差。
当然,上面说的,只是对于模型方差的一种估计,并非我们真实的模型方差。真实的模型方差,需要假设我们已知所有的数据点,而不是上面说的100个点;我们每次训练模型抽取的是任意个数的数据点,而不是上面说的,每个模型固定抽取10个点。在前面两个假设的基础上所求的方差,也就是模型的真实方差,当然往往这个假设是不成立的,所以会用到上述方法进行估计
偏差:学习算法的期望预测,与真实的结果y的偏离程度。刻画学习算法本身的拟合能力。所谓学习算法的期望预测,其实就是上述所说的 y 1 , y 2 , … , y n {y_1,y_2,…,y_n} y1,y2,…,yn的期望,记为 y ‾ \overline{y} y,则偏差的公式表示为 b i a s 2 = ( y ‾ − y ) 2 bias^2=(\overline{y}-y)^2 bias2=(y−y)2
噪声:收集的数据与真实标志的偏离程度。也就是我们拿来训练的数据其实是没那么精准的,比如我们身高的数据,测量值和我们真实的身高可能会有1~2cm的差距,但我们能拿到的数据只能是测量得到的结果,并非我们的真实身高。反应学习问题本身的难度。
泛化误差:是评估不同模型的泛化性能的重要手段,所谓泛化能力,也就是对于模型未见过数据的评估能力(也就是除了训练数据之外的数据)。这很容易理解,如果我们只用预测我们见过的数据,那么我们直接从训练数据中找到这个数据点输出即可,但这样的模型岂不是很没有意义,我们真正训练模型的目的,就是希望它能给出训练数据所没有的数据点的预测结果
符号描述与公式推导
方差公式描述
如前面所说,我们通过一系列不同的数据集
D
i
D_i
Di得到了不同的参数
w
i
w_i
wi,并对于同一个
x
x
x,预测得到了不同
y
i
y_i
yi。即假设对于同一个
x
x
x,我们不同数据集下得到
{
y
1
,
y
2
,
…
,
y
n
}
\{ y_1,y_2,…,y_n\}
{y1,y2,…,yn}的预测结果,记其期望为
y
‾
\overline{y}
y,则模型的方差的表达公式为:
v
a
r
(
x
)
=
E
[
(
y
i
−
y
‾
)
2
]
var(x)=E[(y_i-\overline{y})^2]
var(x)=E[(yi−y)2]
偏差公式描述
学习算法的期望预测
y
‾
\overline{y}
y,与真实的结果y的偏离程度:
b
i
a
s
2
(
x
)
=
(
y
‾
−
y
)
2
bias^2(x)=(\overline{y}-y)^2
bias2(x)=(y−y)2
噪声公式描述
对于任一个
x
x
x,真实的标签
y
y
y与数据收集记录的
y
′
y'
y′的偏离程度:
n
o
i
s
e
2
=
(
y
−
y
′
)
2
noise^2=(y-y')^2
noise2=(y−y′)2
泛化误差公式描述
在数据集中,未参与训练的数据的预测结果的偏离程度。用模型的任一预测结果
y
i
y_i
yi表示模型的预测结果,用
y
′
y'
y′来衡量预测结果的好坏,则其表达式为
R
e
x
p
=
E
[
(
y
i
−
y
′
)
2
]
R_{exp}=E[(y_i-y')^2]
Rexp=E[(yi−y′)2]
这里需要解释一下:
- 为什么用的是为什么是
y
i
y_i
yi来表示模型的预测结果呢?
这是因为,我们实际训练所用的数据,就是所有样本空间的一个采样而已,所有,泛化能力还要评估模型对于不同数据集下,其模型的鲁棒性,能够用少量数据就能得到更好预测的模型,当然是我们所追求的。 - 为什么用
y
′
y'
y′而不是
y
y
y来作为数据的标签呢?
这是因为我们测试用的数据,都是带有误差的 y ′ y' y′。还有一种解释是,现实中所见的就是 y ′ y' y′(我们的眼睛也会欺骗我们啊),我们自然希望其能直接预测到我们所见的结果【即甚至考虑在噪声影响下的结果预测】
公式推导
R
e
x
p
=
E
[
(
y
i
−
y
′
)
2
]
=
E
[
(
y
i
−
y
‾
+
y
‾
−
y
′
)
2
]
=
E
[
(
y
i
−
y
‾
)
2
]
+
E
[
(
y
‾
−
y
′
)
2
]
+
E
[
2
(
y
i
−
y
‾
)
(
y
‾
−
y
′
)
]
=
E
[
(
y
i
−
y
‾
)
2
+
E
[
(
y
‾
−
y
′
)
2
]
R_{exp}=E[(y_i-y')^2]=E[(y_i-\overline{y}+\overline{y}-y')^2] = E[(y_i-\overline{y})^2]+E[(\overline{y}-y')^2]+E[2(y_i-\overline{y})(\overline{y}-y')] = E[(y_i-\overline{y})^2+E[(\overline{y}-y')^2]
Rexp=E[(yi−y′)2]=E[(yi−y+y−y′)2]=E[(yi−y)2]+E[(y−y′)2]+E[2(yi−y)(y−y′)]=E[(yi−y)2+E[(y−y′)2]
其中,
E
[
2
(
y
i
−
y
‾
)
(
y
‾
−
y
′
)
]
=
2
{
E
[
y
i
(
y
‾
−
y
′
)
]
−
E
[
y
‾
(
y
‾
−
y
′
)
]
}
=
2
{
(
y
‾
−
y
′
)
E
[
y
i
]
−
y
‾
(
y
‾
−
y
′
)
}
=
2
{
(
y
‾
−
y
′
)
y
‾
−
y
‾
(
y
‾
−
y
′
)
}
=
0
E[2(y_i-\overline{y})(\overline{y}-y')]=2\{E[y_i(\overline{y}-y')]-E[\overline{y}(\overline{y}-y')]\}=2\{(\overline{y}-y')E[y_i]-\overline{y}(\overline{y}-y')\}=2\{(\overline{y}-y')\overline{y}-\overline{y}(\overline{y}-y')\}=0
E[2(yi−y)(y−y′)]=2{E[yi(y−y′)]−E[y(y−y′)]}=2{(y−y′)E[yi]−y(y−y′)}=2{(y−y′)y−y(y−y′)}=0
E
[
(
y
i
−
y
‾
)
2
=
v
a
r
(
x
)
E[(y_i-\overline{y})^2=var(x)
E[(yi−y)2=var(x)
E
[
(
y
‾
−
y
′
)
2
]
=
E
[
(
y
‾
−
y
+
y
−
y
′
)
2
]
=
E
[
(
y
‾
−
y
)
2
]
+
E
[
(
y
−
y
′
)
2
]
+
E
[
2
(
y
‾
−
y
)
(
y
−
y
′
)
]
=
=
E
[
(
y
‾
−
y
)
2
]
+
E
[
(
y
−
y
′
)
2
]
=
b
i
a
s
2
(
x
)
+
n
o
i
s
e
2
E[(\overline{y}-y')^2]=E[(\overline{y}-y+y-y')^2]=E[(\overline{y}-y)^2]+E[(y-y')^2]+E[2(\overline{y}-y)(y-y')]==E[(\overline{y}-y)^2]+E[(y-y')^2]=bias^2(x)+noise^2
E[(y−y′)2]=E[(y−y+y−y′)2]=E[(y−y)2]+E[(y−y′)2]+E[2(y−y)(y−y′)]==E[(y−y)2]+E[(y−y′)2]=bias2(x)+noise2
综上可得:
R
e
x
p
=
v
a
r
(
x
)
+
b
i
a
s
2
(
x
)
+
n
o
i
s
e
2
R_{exp}=var(x)+bias^2(x)+noise^2
Rexp=var(x)+bias2(x)+noise2
即文中开头所说:泛化误差 = 方差 + 偏差 + 噪声