4. 模型的评估与选择
4.1 训练误差与测试误差
假如存在样本容量为
N
N
N的训练集,将训练集送入学习系统可以训练学习得到一个模型,我们将这么模型用决策函数的形式表达,也就是
y
=
f
^
(
x
)
y=\hat{f}(x)
y=f^(x),关于模型的拟合是否好坏,可以通过训练集计算训练误差进行衡量。而关于模型的预测效果也就是对未知数据预测效果的好坏,可以通过测试集来衡量,我们将测试集里所有的输入都放到预测系统里面,通过训练所得到的模型,就可以计算出一些列的预测值
y
^
i
=
f
^
(
x
i
)
\hat{y}_i=\hat{f}(x_i)
y^i=f^(xi),这些预测值与真实值的差异就是测试误差,测试误差可以衡量模型它的预测效果。
根据上节课,损失函数符号形式为
L
(
Y
,
f
(
X
)
)
L(Y,f(X))
L(Y,f(X)).
4.1.1 训练误差
- 学习到的模型: Y = f ^ ( X ) Y=\hat{f}(X) Y=f^(X)
- 训练集(Training Set):
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) ⋯ , ( x N , y N ) } T=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right) \cdots,\left(x_{N}, y_{N}\right)\right\} T={(x1,y1),(x2,y2)⋯,(xN,yN)}
(即有 N N N个样本) - 训练误差(Training Error):
R e m p ( f ^ ) = 1 N ∑ i = 1 N L ( y i , f ^ ( x i ) ) R_{e m p}(\hat{f})=\frac{1}{N} \sum\limits_{i=1}^{N} L\left(y_{i}, \hat{f}\left(x_{i}\right)\right) Remp(f^)=N1i=1∑NL(yi,f^(xi))
计算了每个样本的损失取平均值(经验损失)
4.1.2 测试误差
- 学习到的模型: Y = f ^ ( X ) Y=\hat{f}(X) Y=f^(X);
- 测试集(Test Set):
T ′ = { ( x 1 ′ , y 1 ′ ) , ( x 2 ′ , y 2 ′ ) ⋯ , ( x N ′ , y N ′ ) } T^{\prime}=\left\{\left(x_{1^{\prime}}, y_{1^{\prime}}\right),\left(x_{2^{\prime}}, y_{2^{\prime}}\right) \cdots,\left(x_{N^{\prime}}, y_{N^{\prime}}\right)\right\} T′={(x1′,y1′),(x2′,y2′)⋯,(xN′,yN′)} - 测试误差(Test Error):
e test = 1 N ′ ∑ i ′ = 1 N ′ L ( y i ′ , f ^ ( x i ′ ) ) e_{\text {test }}=\frac{1}{N^{\prime}} \sum\limits_{i^{\prime}=1}^{N^{\prime}} L\left(y_{i^{\prime}}, \hat{f}\left(x_{i^{\prime}}\right)\right) etest =N′1i′=1∑N′L(yi′,f^(xi′))
测试误差就是对每个样本点计算损失,然后计算损失的平均值。
测试误差的每个样本点都来自于测试集,训练误差的每个样本点都来自于训练集。
4.1.3 误差率与准确率
误差率与准确率是测试误差的两个特例,
- 误差率(Error Rate):
e test = 1 N ′ ∑ i ′ = 1 N ′ I ( y i ′ ≠ f ^ ( x i ′ ) ) e_{\text {test }}=\frac{1}{N^{\prime}} \sum\limits_{i^{\prime}=1}^{N^{\prime}} I\left(y_{i^{\prime}} \neq \hat{f}\left(x_{i^{\prime}}\right)\right) etest =N′1i′=1∑N′I(yi′=f^(xi′))
误差率所采用的损失函数是示性函数,也就是 y i ′ ≠ y_{i^{\prime}}\ne yi′=预测值 f ^ ( x i ′ ) \hat{f}\left(x_{i^{\prime}}\right) f^(xi′)的时候即为1, y i ′ = y_{i^{\prime}}= yi′=预测值 f ^ ( x i ′ ) \hat{f}\left(x_{i^{\prime}}\right) f^(xi′)的时候即为0. 误差率实际上体现的是预测值和真实值不相等的样本点的个数占测试集里样本总个数的比例。 - 准确率(Accuracy):
r test = 1 N ′ ∑ i ′ = 1 N ′ I ( y i ′ = f ^ ( x i ′ ) ) r_{\text {test }}=\frac{1}{N^{\prime}} \sum\limits_{i^{\prime}=1}^{N^{\prime}} I\left(y_{i^{\prime}}=\hat{f}\left(x_{i^{\prime}}\right)\right) rtest =N′1i′=1∑N′I(yi′=f^(xi′))
准确率是真实值与预测值完全相等的样本点占测试集中所有样本点的比例。
【注】 r test + e test = 1 r_{\text {test }}+e_{\text {test }}=1 rtest +etest =1
4.2 过拟合与模型选择
训练误差主要是衡量模型对已知数据的预测能力,而测试误差主要是衡量模型对未知数据的预测能力,在模型选择的时候我们都希望训练误差和测试误差都很小,有的时候训练误差很小,测试误差并不是很小(这也就是过拟合),这里就需要一个平衡。
多项式拟合案例:
生成样本的时候在真实函数的基础上加了一个噪声
ε
i
\varepsilon_i
εi,样本为
y
i
=
sin
(
2
π
x
i
)
+
ε
i
y_i=\sin (2\pi x_i)+\varepsilon_i
yi=sin(2πxi)+εi,假设
ε
i
\varepsilon_i
εi是来自于一个正态分布的。将
x
i
x_i
xi取来自
(
0
,
1
)
(0,1)
(0,1)上的10个均匀的点,然后加上噪声
ε
i
\varepsilon_i
εi得到输出
y
i
y_i
yi,图中黑色曲线是真实函数,蓝色的点是10个样本点用来做训练集的。
【注】正态分布:
正态分布(Normal Distribution),也叫高斯分布(Gaussian Distribution),是最常见的一种概率分布,它在自然界和社会现象中广泛存在。正态分布的数学形式非常重要,它不仅在统计学、机器学习中起到基础性作用,还在很多其他领域,如物理学、经济学、工程学等都有广泛应用。
- 正态分布的定义
正态分布是指一种连续型概率分布,其概率密度函数(PDF)具有钟形曲线的形状。它的数学公式为:
f ( x ∣ μ , σ ) = 1 σ 2 π exp ( − ( x − μ ) 2 2 σ 2 ) f(x \mid \mu, \sigma)=\frac{1}{\sigma \sqrt{2 \pi}} \exp \left(-\frac{(x-\mu)^{2}}{2 \sigma^{2}}\right) f(x∣μ,σ)=σ2π1exp(−2σ2(x−μ)2)
其中:
- μ \mu μ是正态分布的均值(Mean),表示数据的中心位置。
- σ \sigma σ是正态分布的标准差(Standard Deviation),表示数据的分散程度(或波动范围)。
- σ 2 \sigma ^2 σ2是正态分布的方差(Variance),表示数据的变异度。
- x x x是变量,它遵循正态分布。
- 正态分布的特征
- 对称性:正态分布是完全对称的,左右两边的形状和概率完全相同,均值 μ \mu μ就是对称中心。
- 钟形曲线:它的概率密度函数呈现出钟形曲线的形状,数据集中在均值附近,随着远离均值,概率密度逐渐减小。
- 均值、中位数、众数相等:在正态分布中,均值、众数和中位数都重合在同一个位置上。
- 68-95-99.7法则:对于一个正态分布:
约68%的数据落在均值 ± 1 个标准差的范围内。
约95%的数据落在均值 ± 2 个标准差的范围内。
约99.7%的数据落在均值 ± 3 个标准差的范围内。
- 正态分布的参数
- 均值 μ \mu μ:均值是正态分布的中心位置,表示数据的集中趋势。它是分布的对称点。
- 标准差 σ \sigma σ:标准差衡量数据的离散程度,也就是说,数据的分布范围。标准差越大,表示数据的分布越广,波动越大;标准差越小,数据越集中。
- 方差 σ 2 \sigma ^2 σ2:方差是标准差的平方,也是衡量数据离散程度的度量,但通常我们更关注标准差。
- 标准正态分布
当均值 μ = 0 \mu=0 μ=0且标准差 σ = 1 \sigma = 1 σ=1时,正态分布被称为标准正态分布。其概率密度函数简化为:
f ( x ) = 1 2 π exp ( − x 2 2 ) f(x)=\frac{1}{\sqrt{2 \pi}} \exp \left(-\frac{x^{2}}{2}\right) f(x)=2π1exp(−2x2)
标准正态分布的特点:
- 均值为0,标准差为1。
- 其形状与普通正态分布一样,但标准差较小,分布更集中。
- 正态分布的应用
正态分布在实际中有着广泛的应用,以下是几个重要的领域:
- 自然界现象:许多自然现象,比如人的身高、体重、考试成绩等,往往都接近于正态分布。换句话说,在这些现象中,大多数数据点都集中在均值附近,极端的高或低值较少。
统计学:正态分布是许多统计推断方法(如假设检验、置信区间估计等)的基础。根据大数定律,很多随机变量的样本均值会逐渐趋近于正态分布。
中心极限定理:中心极限定理指出,很多独立同分布(i.i.d.)的随机变量的和(或平均值)将趋近于正态分布,无论原始数据的分布是什么。这使得正态分布在统计学中具有非常重要的地位。
- 正态分布的性质
- 线性组合:如果 X 1 , X 2 , ⋯ , X n X_1,X_2,\cdots,X_n X1,X2,⋯,Xn是互相独立的正态分布随机变量,那么它们的线性组合 a 1 X 1 + a 2 X 2 + … + a n X n a_{1} X_{1}+a_{2} X_{2}+\ldots+a_{n} X_{n} a1X1+a2X2+…+anXn也服从正态分布。
最小方差性质:在所有具有相同均值和方差的分布中,正态分布具有最小的方差,也就是说,它的分布最紧密。
- 正态分布的图形表示
正态分布的概率密度函数图形通常呈现一个钟形曲线,具有以下特点:
- 曲线在均值 μ \mu μ处达到最高点,表示概率密度最大。
- 曲线的两端渐近于 x x x轴,表示概率逐渐减小,但始终不为零。
- 曲线的形状由标准差 σ \sigma σ决定,标准差越大,曲线越平坦;标准差越小,曲线越尖锐。
下面,我们通过 M M M次多项式对之前的数据进行拟合:
- 假设给定的数据是由
m
m
m次多项式生成的:
f M ( x , w ) = w 0 + w 1 x + w 2 x 2 + ⋯ + w M x M = ∑ j = 0 M w j x j f_{M}(x, w)=w_{0}+w_{1} x+w_{2} x^{2}+\cdots+w_{M} x^{M}=\sum\limits_{j=0}^{M} w_{j} x^{j} fM(x,w)=w0+w1x+w2x2+⋯+wMxM=j=0∑Mwjxj
其中 M M M是最高次数, x x x是输入, w w w是参数向量。 - 经验风险:
L ( w ) = 1 2 ∑ i = 1 N ( f M ( x i , w ) − y i ) 2 L(w)=\frac{1}{2} \sum\limits_{i=1}^{N}\left(f_{M}\left(x_{i}, w\right)-y_{i}\right)^{2} L(w)=21i=1∑N(fM(xi,w)−yi)2
我们在拟合的时候采取使经验风险最小化的策略,这里经验风险中的损失函数用的是平方损失,也就是预测值与真实值差的平方,那么经验风险就可以写成每个样本点的平方损失的和,多了一个系数 1 2 \frac{1}{2} 21下面会解释。 - 代入多项式:
L ( w ) = 1 2 ∑ i = 1 N ( ∑ j = 0 M w j x i j − y i ) 2 L(w)=\frac{1}{2} \sum\limits_{i=1}^{N}\left(\sum\limits_{j=0}^{M} w_{j} x_{i}^{j}-y_{i}\right)^{2} L(w)=21i=1∑N(j=0∑Mwjxij−yi)2
通过最小二乘法求解参数,求解参数的时候,可以通过对经验风险中的参数 w w w求导,然后使导数等于0得到参数的表达式,求导的时候,平方损失函数会多出一个系数2,这样就能和前面的系数 1 2 \frac{1}{2} 21把系数约掉,所以系数变成 1 2 \frac{1}{2} 21只是为了计算方便,加不加这个系数 1 2 \frac{1}{2} 21都不会影响最终结果。
【注】最小二乘法
最小二乘法(Least Squares Method)是一种数学优化方法,主要用于回归分析中,目的是通过最小化误差的平方和来找到最优的拟合模型。最小二乘法的核心思想是,寻找一个函数模型,使得实际观察值与该模型预测值之间的差异(误差)的平方和最小化。
- 最小二乘法的基本原理
在数据分析或回归分析中,我们通常希望找到一个数学函数(如直线、曲线等),使得它能够尽可能地接近数据点。假设我们有一组数据点 ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x n , y n ) \left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \ldots,\left(x_{n}, y_{n}\right) (x1,y1),(x2,y2),…,(xn,yn),目标是找到一个函数 f ( x ) f(x) f(x)来拟合这些数据点。
最小二乘法的基本步骤如下:
- 拟合函数与数据点之间的误差:对于每个数据点 ( x i , y i ) (x_i,y_i) (xi,yi),拟合函数的预测值为 f ( x i ) f(x_i) f(xi),误差为 y i − f ( x i ) y_i-f(x_i) yi−f(xi).
- 计算误差的平方和:
为了避免误差的正负相抵消,我们对每个误差进行平方,得到每个数据点的误差平方值 ( y i − f ( x i ) ) 2 (y_i-f(x_i))^2 (yi−f(xi))2,然后将所有数据点的误差平方值加和,得到总的误差平方和:
S = ∑ i = 1 n ( y i − f ( x i ) ) 2 S=\sum\limits_{i=1}^{n}\left(y_{i}-f\left(x_{i}\right)\right)^{2} S=i=1∑n(yi−f(xi))2- 最小化误差平方和:
最小二乘法的目标就是找到使得误差平方和 S S S最小的函数模型 f ( x ) f(x) f(x).
- 线性回归中的最小二乘法
对于线性回归模型 y = β 0 + β 1 x y=\beta_0+\beta_1x y=β0+β1x,我们需要通过最小化误差平方和 S S S来得到最优参数。首先,误差平方和可以表示为:
S ( β 0 , β 1 ) = ∑ i = 1 n ( y i − ( β 0 + β 1 x i ) ) 2 S\left(\beta_{0}, \beta_{1}\right)=\sum\limits_{i=1}^{n}\left(y_{i}-\left(\beta_{0}+\beta_{1} x_{i}\right)\right)^{2} S(β0,β1)=i=1∑n(yi−(β0+β1xi))2
为求得最小值,我们对 β 0 \beta_0 β0和 β 1 \beta_1 β1求偏导数,并令其为零,得到以下正态方程:
- 对 β 0 \beta_0 β0求偏导:
∂ S ∂ β 0 = − 2 ∑ i = 1 n ( y i − β 0 − β 1 x i ) = 0 \frac{\partial S}{\partial \beta_{0}}=-2 \sum\limits_{i=1}^{n}\left(y_{i}-\beta_{0}-\beta_{1} x_{i}\right)=0 ∂β0∂S=−2i=1∑n(yi−β0−β1xi)=0- 对 β 1 \beta_1 β1求偏导:
∂ S ∂ β 1 = − 2 ∑ i = 1 n ( y i − β 0 − β 1 x i ) x i = 0 \frac{\partial S}{\partial \beta_{1}}=-2 \sum\limits_{i=1}^{n}\left(y_{i}-\beta_{0}-\beta_{1} x_{i}\right) x_{i}=0 ∂β1∂S=−2i=1∑n(yi−β0−β1xi)xi=0
通过求解这两个方程,可以得到 β 0 \beta_0 β0和 β 1 \beta_1 β1的最优解。最终,最小二乘法得到的回归直线方程为:
β ^ 1 = n ∑ x i y i − ∑ x i ∑ y i n ∑ x i 2 − ( ∑ x i ) 2 β ^ 0 = ∑ y i − β 1 ^ ∑ x i n \begin{array}{l} \hat{\beta}_{1}=\frac{n \sum x_{i} y_{i}-\sum x_{i} \sum y_{i}}{n \sum x_{i}^{2}-\left(\sum x_{i}\right)^{2}}\\ \hat{\beta}_{0}=\frac{\sum y_{i}-\hat{\beta_{1}} \sum x_{i}}{n} \end{array} β^1=n∑xi2−(∑xi)2n∑xiyi−∑xi∑yiβ^0=n∑yi−β1^∑xi
其中 β ^ 0 \hat{\beta}_0 β^0最优截距, β ^ 1 \hat{\beta}_1 β^1是最优斜率。
- 最小二乘法的应用
最小二乘法被广泛应用于各种统计建模和数据分析任务中,特别是在回归分析中。以下是一些常见的应用场景:
- 线性回归分析:最小二乘法是线性回归的核心方法,用于估计数据中自变量与因变量之间的关系。
- 多项式回归:通过对数据进行多项式拟合,可以使用最小二乘法来找到最佳的多项式系数。
- 曲线拟合:不仅可以用于直线拟合,最小二乘法还可以用于任意曲线(例如指数曲线、对数曲线等)的拟合。
图像处理与信号处理:在图像处理、图像压缩、信号处理等领域,最小二乘法用于数据拟合、去噪声等任务。
机器学习:在机器学习中,尤其是在回归模型中,最小二乘法用于训练模型(如线性回归)。
- 最小二乘法的优缺点
优点:
- 简单有效:最小二乘法计算简单,易于理解和实现,尤其适用于线性模型。
- 计算效率高:对于大多数问题,最小二乘法的计算可以通过解析解得到,效率较高。
- 良好的统计性质:在一些条件下,最小二乘法估计是无偏的、有效的。
缺点:- 对异常值敏感:最小二乘法对离群点(异常值)非常敏感,少数的异常值可能会严重影响模型的拟合效果。
- 假设数据线性:最小二乘法通常假设数据之间存在线性关系,如果数据呈现非线性特征,最小二乘法可能效果不好。
- 计算复杂度:对于大量数据和高维度问题,最小二乘法的计算可能会变得比较复杂,尤其是当数据不满足某些条件时,可能需要迭代求解。
刚才的多项式拟合结果:
M
=
0
M=0
M=0拟合曲线就是平行于
x
x
x轴的直线,此时与真实曲线差距较大,
M
=
1
M=1
M=1是一条直线,稍微接近真实曲线,
M
=
3
M=3
M=3的时候,拟合曲线和真实曲线非常接近,
M
=
9
M=9
M=9的时候,拟合曲线通过了所有的样本点,
M
=
9
M=9
M=9的时候,参数有10个,样本点也有10个,所以这时候的拟合曲线恰好穿过所有样本点,训练误差几乎为0,但是
M
=
9
M=9
M=9是一个过拟合的现象。
4.2.1 过拟合
过拟合(Over-Fitting):学习所得模型包含参数过多,出现对已知数据预测很好,但对未知数据预测很差的现象。
这是
M
M
M的值与误差值的关系图,没有给出
M
=
9
M=9
M=9的情况,因为当
M
=
9
M=9
M=9的时候,训练误差几乎为0,但是测试误差会非常大,远远超出了这个图,用横轴
M
M
M代表了模型的复杂度,
M
M
M越大模型越复杂,而橙色的折线代表的是测试误差,也就是模型对未知数据的训练能力,而蓝色的线代表的是训练误差,也就是模型对已知数据的预测能力。当
M
=
3
M=3
M=3的时候,训练误差和测试误差都达到了最小点。
上图中,横轴代表模型复杂度,纵轴代表预测误差,随着模型复杂度的增加,训练误差会越来越小,但是测试误差会先减小达到一个最小值再增大,所以选择模型的时候一定要注意防止过拟合的现象出现,