偏差(bias)和方差(variance)的含义
如何根据偏差bias和方差variance对模型进行分析和改善
理想情况下,我们希望得到一个偏差和方差都很小的模型,但实际上往往很困难;
模型评估方法:模型训练的时候使用的数据集是训练集,模型在测试集上的误差近似为泛化误差,而我们更关注的就是泛化误差,所以在 Off-line Phase 我们需要解决一个问题,那就是如何将一个数据集划分成训练集和测试集;
留出法Hold-out:
5折交叉验证
自助法Bootstrapping:
参数调节(调参)
性能度量
通过实验估计学习算法的泛化性能,同时也可以通过“偏差-方差分解”来解释学习算法的泛化性能;偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度;
“偏差-方差分解”说明,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。给定学习任务,为了取得好的泛化性能,则需使偏差较小,即能够充分拟合数据,并且使方差较小,即使得数据扰动产生的影响小;
一般来说,偏差与方差是有冲突的,这称为“偏差-方差窘境”。假定我们能控制学习算法的训练程度,则在训练不足时,学习器的拟合能力不够强,训练数据的扰动不足以便学习器产生显著变化,此时“偏差”主导了泛化错误率;随着训练程度的加深,学习器的拟合能力逐渐增强,训练数据发生的扰动渐渐能被学习器学到,“方差”逐渐主导了泛化错误率;在训练程度充足后,学习器的拟合能力已非常强,训练数据发生的轻微扰动都会导致学习器发生显著变化,若训练数据自身的、非全局的特性被学习器学到了,则将发生“过拟合”。
学习误差 (Error) 为什么是偏差和方差而产生的,并且推导数学公式
偏差 & 方差 (Bias & Variance)
偏差、方差与模型复杂度 (Bias-Variance & MC)
Bias&Variance
预测值、期望值、真实值、偏差与方差
我们将拟合一个线性假设
h ( x ) = w T x h(\mathrm{x})=\mathbf{w}^{T} \mathbf{x} h(x)=wTx
在训练数据中,最小化平方和误差
∑ i = 1 m ( y i − h ( x i ) ) 2 \sum_{i=1}^{m}\left(y_{i}-h\left(\mathbf{x}_{i}\right)\right)^{2} i=1∑m(yi−h(xi))2
其中,
样 本 : ⟨ x , y ⟩ {样本:}\langle\mathrm{x}, y\rangle 样本:⟨x,y⟩
y = f ( x ) + ϵ y=f(\mathrm{x})+\epsilon y=f(x)+ϵ
ϵ 是 均 值 为 0 , 标准差为 σ 的 高 斯 噪 声 \epsilon 是均值为0,\text {标准差为} \sigma 的高斯噪声 ϵ是均值为0,标准差为σ的高斯噪声
假设样本之间是相互独立同分布的,即
P ( ⟨ x , y ⟩ ) = P ( x ) P ( y ∣ x ) P(\langle\mathrm{x}, y\rangle)=P(\mathrm{x}) P(y | \mathrm{x}) P(⟨x,y⟩)=P(x)P(y∣x)
给定一个任意的样本点x,目的是分析和计算
E P [ ( y − h ( x ) ) 2 ∣ x ] E_{P}\left[(y-h(\mathrm{x}))^{2} | \mathrm{x}\right] EP[(y−h(x))2∣x]
对于给定的假设类,我们还可以计算真实误差,即输入分布上的期望误差
∑ x E P [ ( y − h ( x ) ) 2 ∣ x ] P ( x ) \sum_{\mathbf{x}} E_{P}\left[(y-h(\mathbf{x}))^{2} | \mathbf{x}\right] P(\mathbf{x}) x∑EP[(y−h(x))2∣x]P(x)
如果x为连续变量,则求和将变为积分形式;我们将把这个期望进行分解:
回顾期望与方差的推导过程:
E [ X ] = ∑ i = 1 n x i P ( x i ) E[X]=\sum_{i=1}^{n} x_{i} P\left(x_{i}\right) E[X]=i=1∑nxiP(xi)
X的方差为:Var [ X ] = E [ ( X − E ( X ) ) 2 ] = E [ X 2 ] − ( E [ X ] ) 2 \begin{aligned} \operatorname{X的方差为:Var}[X] &=E\left[(X-E(X))^{2}\right] \\ &=E\left[X^{2}\right]-(E[X])^{2} \end{aligned} X的方差为:Var[X]=E[(X−E(X))2]=E[X2]−(E[X])2
Var [ X ] = E [ ( X − E [ X ] ) 2 ] = ∑ i = 1 n ( x i − E [ X ] ) 2 P ( x i ) = ∑ i = 1 n ( x i 2 − 2 x i E [ X ] + ( E [ X ] ) 2 ) P ( x i ) = ∑ i = 1 n x i 2 P ( x i ) − 2 E [ X ] ∑ i = 1 n x i P ( x i ) + ( E [ X ] ) 2 ∑ i = 1 n P ( x i ) = E [ X 2 ] − ( E [ X ] ) 2 = E [ X 2 ] − ( E [ X ] ) 2 \begin{aligned} \operatorname{Var}[X] &=E\left[(X-E[X])^{2}\right] \\ &=\sum_{i=1}^{n}\left(x_{i}-E[X]\right)^{2} P\left(x_{i}\right) \\ &=\sum_{i=1}^{n}\left(x_{i}^{2}-2 x_{i} E[X]+(E[X])^{2}\right) P\left(x_{i}\right) \\ &=\sum_{i=1}^{n} x_{i}^{2} P\left(x_{i}\right)-2 E[X] \sum_{i=1}^{n} x_{i} P\left(x_{i}\right)+(E[X])^{2} \sum_{i=1}^{n} P\left(x_{i}\right) \\ &=E\left[X^{2}\right]-(E[X])^{2} \\ &=E\left[X^{2}\right]-(E[X])^{2} \end{aligned} Var[X]=E[(X−E[X])2]=i=1∑n(xi−E[X])2P(xi)=i=1∑n(xi2−2xiE[X]+(E[X])2)P(xi)=i=1∑nxi2P(xi)−2E[X]i=1∑nxiP(xi)+(E[X])2i=1∑nP(xi)=E[X2]−(E[X])2=E[X2]−(E[X])2
E [ X 2 ] = ( E [ X ] ) 2 + Var [ X ] E\left[X^{2}\right]=(E[X])^{2}+\operatorname{Var}[X] E[X2]=(E[X])2+Var[X]
E P [ ( y − h ( x ) ) 2 ∣ x ] = E P [ ( h ( x ) ) 2 − 2 y h ( x ) + y 2 ∣ x ] = E P [ ( h ( x ) ) 2 ∣ x ] + E P [ y 2 ∣ x ] − 2 E P [ y ∣ x ] E P [ h ( x ) ∣ x ] . . . . . . ( 1 ) \begin{aligned} E_{P}\left[(y-h(\mathbf{x}))^{2} | \mathbf{x}\right] &=E_{P}\left[(h(\mathbf{x}))^{2}-2 y h(\mathbf{x})+y^{2} | \mathbf{x}\right] \\ &=E_{P}\left[(h(\mathbf{x}))^{2} | \mathbf{x}\right]+E_{P}\left[y^{2} | \mathbf{x}\right]-2 E_{P}[y | \mathbf{x}] E_{P}[h(\mathbf{x}) | \mathbf{x}]{......}(1) \end{aligned} EP[(y−h(x))2∣x]=EP[(h(x))2−2yh(x)+y2∣x]=EP[(h(x))2∣x]+EP[y2∣x]−2EP[y∣x]EP[h(x)∣x]......(1)
令 : h ‾ ( x ) = E P [ h ( x ) ∣ x ] , 即 在 x 处 假 设 的 均 值 预 测 令:\overline{h}(\mathrm{x})=E_{P}[h(\mathrm{x}) | \mathrm{x}]{,即在x处假设的均值预测} 令:h(x)=EP[h(x)∣x],即在x处假设的均值预测
( 1 ) 式 的 第 一 项 有 : E P [ ( h ( x ) ) 2 ∣ x ] = E P [ ( h ( x ) − h ‾ ( x ) ) 2 ∣ x ] + ( h ‾ ( x ) ) 2 (1)式的第一项有:E_{P}\left[(h(\mathrm{x}))^{2} | \mathrm{x}\right]=E_{P}\left[(h(\mathrm{x})-\overline{h}(\mathrm{x}))^{2} | \mathrm{x}\right]+(\overline{h}(\mathrm{x}))^{2} (1)式的第一项有:EP[(h(x))2∣x]=EP[(h(x)−h(x))2∣x]+(h(x))2
定 义 : E P [ y ∣ x ] = E P [ f ( x ) + ϵ ∣ x ] = f ( x ) . . . . . . ( 2 ) 定义:E_{P}[y | \mathrm{x}]=E_{P}[f(\mathrm{x})+\epsilon | \mathrm{x}]=f(\mathrm{x}){......(2)} 定义:EP[y∣x]=EP[f(x)+ϵ∣x]=f(x)......(2)
( 2 ) 式 的 转 化 是 因 为 : ϵ ∼ N ( 0 , σ ) ) (2)式的转化是因为:\epsilon \sim \mathcal{N}(0, \sigma) ) (2)式的转化是因为:ϵ∼N(0,σ))
有 : E [ y 2 ∣ x ] = E [ ( y − f ( x ) ) 2 ∣ x ] + ( f ( x ) ) 2 有:E\left[y^{2} | \mathrm{x}\right]=E\left[(y-f(\mathrm{x}))^{2} | \mathrm{x}\right]+(f(\mathrm{x}))^{2} 有:E[y2∣x]=E[(y−f(x))2∣x]+(f(x))2
综上:
E P [ ( y − h ( x ) ) 2 ∣ x ] = E P [ ( h ( x ) − h ‾ ( x ) ) 2 ∣ x ] + ( h ‾ ( x ) ) 2 − 2 f ( x ) h ‾ ( x ) + E P [ ( y − f ( x ) ) 2 ∣ x ] + ( f ( x ) ) 2 = E P [ ( h ( x ) − h ‾ ( x ) ) 2 ∣ x ] + ( f ( x ) − h ‾ ( x ) ) 2 + E [ ( y − f ( x ) ) 2 ∣ x ] \begin{aligned} E_{P}\left[(y-h(\mathrm{x}))^{2} | \mathrm{x}\right] &=E_{P}\left[(h(\mathrm{x})-\overline{h}(\mathrm{x}))^{2} | \mathrm{x}\right]+(\overline{h}(\mathrm{x}))^{2}-2 f(\mathrm{x}) \overline{h}(\mathrm{x}) \\ &+E_{P}\left[(y-f(\mathrm{x}))^{2} | \mathrm{x}\right]+(f(\mathrm{x}))^{2} \\ &=E_{P}\left[(h(\mathrm{x})-\overline{h}(\mathrm{x}))^{2} | \mathrm{x}\right]+(f(\mathrm{x})-\overline{h}(\mathrm{x}))^{2} \\ &+E\left[(y-f(\mathrm{x}))^{2} | \mathrm{x}\right] \end{aligned} EP[(y−h(x))2∣x]=EP[(h(x)−h(x))2∣x]+(h(x))2−2f(x)h(x)+EP[(y−f(x))2∣x]+(f(x))2=EP[(h(x)−h(x))2∣x]+(f(x)−h(x))2+E[(y−f(x))2∣x]
其中,第一项表明从P中随机抽取有限数据集进行训练时,假设h在x处的方差:
E P [ ( h ( x ) − h ‾ ( x ) ) 2 ∣ x ] E_{P}\left[(h(\mathrm{x})-\overline{h}(\mathrm{x}))^{2} | \mathrm{x}\right] EP[(h(x)−h(x))2∣x]
第二项为平方偏差 or 系统误差,它与我们考虑的类别假设有关:
( f ( x ) − h ‾ ( x ) ) 2 (f(\mathbf{x})-\overline{h}(\mathbf{x}))^{2} (f(x)−h(x))2
最后一项是噪音,是由于我们人为因素不可避免的误差:
E [ ( y − f ( x ) ) 2 ∣ x ] E\left[(y-f(\mathbf{x}))^{2} | \mathbf{x}\right] E[(y−f(x))2∣x]
误差分解
过拟合,欠拟合,分别对应Bias和Variance什么情况?
偏差 & 方差之间的权衡 (机器学习的主要挑战问题之一)
鞍点
,复习 Task 1 的全局最优 & 局部最优鞍点 (Saddle Point)
马鞍面上的点
)
不是
局部极值点的驻点称为鞍点解决办法有哪些?
梯度下降法是一种非常通用的优化算法,它能够为各种问题找到最优解。梯度下降的一般思想是迭代地调整参数,以使成本函数最小化;同时,当使用梯度下降时,您应该确保所有的特征都具有相似的比例。
梯度下降法
容易陷入局部最小解
利用代价函数的偏导数,求出梯度向量
∂ ∂ θ j MSE ( θ ) = 2 m ∑ i = 1 m ( θ T x ( i ) − y ( i ) ) x j ( i ) \frac{\partial}{\partial \theta_{j}} \operatorname{MSE}(\boldsymbol{\theta})=\frac{2}{m} \sum_{i=1}^{m}\left(\boldsymbol{\theta}^{T} \mathbf{x}^{(i)}-y^{(i)}\right) x_{j}^{(i)} ∂θj∂MSE(θ)=m2i=1∑m(θTx(i)−y(i))xj(i)
其中,成本 or 代价函数的梯度向量为
∇ θ MSE ( θ ) = ( ∂ ∂ θ 0 MSE ( θ ) ∂ ∂ θ 1 MSE ( θ ) ⋮ ∂ ∂ θ n MSE ( θ ) ) = 2 m X T ( X θ − y ) \nabla_{\theta} \operatorname{MSE}(\theta)=\left( \begin{array}{c}{\frac{\partial}{\partial \theta_{0}} \operatorname{MSE}(\theta)} \\ {\frac{\partial}{\partial \theta_{1}} \operatorname{MSE}(\theta)} \\ {\vdots} \\ {\frac{\partial}{\partial \theta_{n}} \operatorname{MSE}(\theta)}\end{array}\right)=\frac{2}{m} X^{T}(X \theta-y) ∇θMSE(θ)=⎝⎜⎜⎜⎛∂θ0∂MSE(θ)∂θ1∂MSE(θ)⋮∂θn∂MSE(θ)⎠⎟⎟⎟⎞=m2XT(Xθ−y)
梯度步长满足
θ ( next step ) = θ − η ∇ θ MSE ( θ ) \theta^{(\text { next step })}=\theta-\eta \nabla_{\theta} \operatorname{MSE}(\theta) θ( next step )=θ−η∇θMSE(θ)
一个简单的算法实现
eta = 0.1 # 学习率
n_iterations = 1000
m = 100
theta = np.random.randn(2,1) # 随机初始化
for iteration in range(n_iterations):
gradients = 2/m * X_b.T.dot(X_b.dot(theta) - y)
theta = theta - eta * gradients
批量梯度下降的主要问题是,它使用整个训练集来计算每一步的梯度,这使得当训练集很大时,计算速度非常慢。在相反的极端情况下,随机梯度下降只是在训练集中每一步选择一个随机实例,并仅基于该实例计算梯度。显然,这使得算法更快,因为它在每次迭代中只有很少的数据可以操作。它还使得在大型训练集上进行训练成为可能,因为在每次迭代中只需要在内存中存储一个实例(SGD可以作为一种out-of-core算法来实现);
同时,由于其随机性(即与批量梯度下降相比,这种算法的规则性要差得多:成本函数不是缓慢下降,直到达到最小值,而是上下跳动,平均只下降。随着时间的推移,它将非常接近于最小值,但其一旦到达,它将继续反弹,永远不会稳定下来(如下图所示)。因此,一旦算法停止,最终的参数值是好的,但不是最优的。当代价函数非常不规则时,这实际上可以帮助算法跳出局部极小值,因此随机梯度下降比批量梯度下降有更好的机会找到全局最小值;
因此,从局部最优中逃离随机性是好的,但也意味着算法永远不能满足于最小值。解决这一困境的一个办法是逐渐降低学习速度。步骤一开始很大(这有助于快速进行并避免局部极小值),然后变得越来越小,从而允许算法稳定在全局极小值。这一过程类似于模拟退火,模拟退火是一种算法,灵感来自于冶金中熔融金属缓慢冷却的退火过程。确定每次迭代的学习速度的函数称为 learning schedule。如果学习速度降低得太快,您可能会陷入局部最小值,甚至会冻结到最小值的一半。如果学习速度降低得太慢,你可能会在很长一段时间内跳过最小值,如果过早停止训练,最终会得到次优解。
随机梯度下降法
小批量梯度下降法 Mini-batch Gradient Descent
学习Mini-Batch与SGD
学习Batch与Mini-Batch,SGD梯度下降的区别
如何根据样本大小选择哪个梯度下降(批量梯度下降,Mini-Batch)?
写出SGD和Mini-Batch的代码
实现一个简单的随机梯度下降
# Stochastic Gradient Descent
n_epochs = 50
t0, t1 = 5, 50 # 学习超参数
def learning_schedule(t):
return t0 / (t + t1)
theta = np.random.randn(2,1) # 随机初始化
for epoch in range(n_epochs):
for i in range(m):
random_index = np.random.randint(m)
xi = X_b[random_index:random_index+1]
yi = y[random_index:random_index+1]
gradients = 2 * xi.T.dot(xi.dot(theta) - yi)
eta = learning_schedule(epoch * m + i)
theta = theta - eta * gradients
利用 Scikit-Learn 实现SGD
# Stochastic Gradient Descent with Scikit-Learn
from sklearn.linear_model import SGDRegressor
sgd_reg = SGDRegressor(max_iter=1000, tol=1e-3, penalty=None, eta0=0.1)
sgd_reg.fit(X, y.ravel())
机器学习系统的类型
机器学习系统的类型
交叉验证(Cross Validation)是我们用来评估所选超参数组合的技术。 我们使用K折交叉验证,而不是将训练集分成单独的训练集和验证集,这会减少我们可以使用的训练数据量。交叉验证涉及到将训练数据分成K个folds,然后经历一个迭代过程,在这个迭代过程中,我们首先训练前K-1个folds的数据,然后在第K个fold的数据上进行评估表现。我们重复这个过程K次,在K-fold交叉验证结束时,我们将每个K次迭代的平均误差作为最终的性能度量。
精准率的局限性:当不同类别的样本比例不均衡时,占比大的类别往往将影响其精准率
精准率与召回率的权衡:
精准率指分类正确的正样本个数占分类器判定为正样本的样本个数比例
召回率指分类正确的正样本个数占真正的正样本个数的比例
为了评估一个排序模型的好坏,不仅要看模型在不同的 Top N下的 Precision N 和 Recall N 同时还要绘制出模型的 P-R 曲线,通过 P-R 曲线的整体表现,对模型进行全面的评估
ROC曲线(二值分类问题):ROC曲线的横坐标为 假阳性率 FPR 纵坐标为真阳性率 TPR 其中 FPR = FP/N TPR = TP/P 其中,P为真实正样本数量 N为真实负样本数量 TP 是P个样本中被分类器预测为正样本的个数,FP 是N个负样本中被分类器预测为正样本的个数
AUC的计算:AUC 指 ROC 曲线下的面积大小,其值能够量化的反映基于ROC曲线衡量出的模型性能
ROC曲线与P-R曲线的特点:相比 P-R 曲线,当正负样本的分布发生变化时,ROC曲线的形状能够基本保持不变,而 P-R 曲线的形状一般会发生剧烈变化;如果选择不同的测试集, ROC 曲线能更加稳定的反映模型本身的好坏, 而 P-R 曲线能够直观的反映在特定数据集上的表现性能
常见的回归模型评价指标
平均绝对误差(Mean Absolute Error,MAE):
M A E = 1 N ∑ i = 1 N ∣ y i − y ^ i ∣ M A E=\frac{1}{N} \sum_{i=1}^{N}\left|y_{i}-\hat{y}_{i}\right| MAE=N1i=1∑N∣yi−y^i∣
其中,N为样本个数,yi为第i个样本的真实值,y_head为第i个样本的预测值;
均方误差(Mean Squared Error,MSE):
M S E = 1 N ∑ i = 1 N ( y i − y ^ i ) 2 M S E=\frac{1}{N} \sum_{i=1}^{N}\left(y_{i}-\hat{y}_{i}\right)^{2} MSE=N1i=1∑N(yi−y^i)2
平均绝对百分误差(Mean Absolute Percentage Error,MAPE):
M A P E = 100 N ∑ i = 1 N ∣ y i − y ^ i y i ∣ , y i = 0 M A P E=\frac{100}{N} \sum_{i=1}^{N}\left|\frac{y_{i}-\hat{y}_{i}}{y_{i}}\right|, y_{i}=0 MAPE=N100i=1∑N∣∣∣∣yiyi−y^i∣∣∣∣,yi=0
MAPE通过计算绝对误差百分比来表示预测效果,其取值越小越好.
均方根误差(Root Mean Squared Error):
R M S E = 1 N ∑ i = 1 N ( y i − y ^ i ) 2 R M S E=\sqrt{\frac{1}{N} \sum_{i=1}^{N}\left(y_{i}-\hat{y}_{i}\right)^{2}} RMSE=N1i=1∑N(yi−y^i)2
RMSE代表的是预测值和真实值差值的样本标准差.
均方根对数误差(Root Mean Squared Logarithmic Error,RMSLE):
R M S L E = 1 N ∑ i = 1 N ( log ( y i + 1 ) − log ( y ^ i + 1 ) ) 2 R M S L E=\sqrt{\frac{1}{N} \sum_{i=1}^{N}\left(\log \left(y_{i}+1\right)-\log \left(\hat{y}_{i}+1\right)\right)^{2}} RMSLE=N1i=1∑N(log(yi+1)−log(y^i+1))2
RMSLE对预测值偏小的样本惩罚比预测值偏大的样本惩罚更大.
选择 & 训练模型
调整模型
网格搜索
网格搜索,是在所有候选的参数祖安泽中,通过循环遍历,尝试每种可能性,表现最好的参数就是最终的结果!
模型参数(Model Parameters),是模型在训练过程中学习的内容
模型超参数(Model Hyperparameters),被认为是机器学习算法的最好设置,该算法是由数据科学家在训练之前设置的
通过改变模型中欠拟合和过拟合的平衡来控制影响模型性能的超参数。当我们的模型不够复杂(它没有足够的自由度)来学习从特征到目标的映射时,就是欠拟合(Underfitting)。一个欠拟合的模型有很高的偏置(bias),我们可以改变我们的模型使其更复杂来纠正
过拟合(Overfitting)是当我们的模型基本上拟合了所有训练数据点的时候。过拟合模型具有很高的方差(variance),我们可以通过正则化(regularization)来限制模型的复杂性来纠正。欠拟合和过拟合模型都不能很好地适用于测试数据(testdata)。
随机搜索
随机搜索(Random Search)是指我们用来选择超参数的技术。我们定义一个网格,然后随机抽样不同的组合,而不是网格搜索(grid search),我们会彻底地尝试每一个组合。(令人惊讶的是,随机搜索的结果几乎和网格搜索一样,但大大缩短了运行时间。)
集成方法
分析最好的模型 & 误差
在测试集上评估系统
性能度量
训练模型
线性回归
梯度下降
多元线性回归
学习画布
正规化 or 正则化线性模型
提到正则化,最好的切入点就是“过拟合”,简单地理解过拟合就是模型过分学习并拟合数据导致模型泛化性能较差。通过正则化的方法,可以尽量避免过拟合的发生;
正则化的概念
如何理解正则化
How
如果我们的目标仅仅是最小化损失函数(即经验风险最小化),那么模型的复杂度势必会影响到模型的整体性能;引入正则化(即结构风险最小化)可以理解为衡量模型的复杂度,同时结合经验风险最小化,进一步训练优化算法。
正则化的作用
正则化的常见类型
岭回归
Lasso 回归
弹性网络
早停法则
逻辑回归