《李宏毅机器学习》- Task2 梯度下降、误差偏差方差的关系、模型评估
1、理解偏差和方差
偏差(bias):表示测试样本集的测试期望值距离groundtruth期望值的偏差;
a) bias越大,则说明预测结果越差,模型并未很好拟合训练集样本,欠拟合;
b) 我们希望模型在测试样本上的bias足够小,那么就需要增加模型的复杂程度,或者简单理解为增加模型(映射函数)的泰勒展开式最高幂次。
方差(variance):表示模型在测试集上的预测结果是否稳定,或预测值距测试期望值的离散程度;
a) variance越大,则说明模型预测值在预测期望附近波动而很难接近真实值,过拟合,在测试样本上表现不好;
b) 我们希望在测试集上variance足够小,那么就要简化模型,减少模型参数,或者简单理解为减小模型(映射函数)的泰勒展开式最高幂次。
结论:
简单model受数据的影响小,所以方差小,偏差大,model未包含target值,欠拟合;
复杂model受数据的影响大,model希望拟合到所有采样数据,所以方差大,偏差小;
欠拟合:模型不能很好拟合训练集且在测试集上有较大误差,则模型受训练数据影响不大,在训练集上拟合不好,表现为模型简单,bias较大;要重新设计模型;
过拟合:模型可以很好拟合训练集而在测试集上有较大误差,则模型受训练数据影响较大,在训练集上拟合太好,表现为模型复杂,variance较大;增加训练数据,总的来说是为了让数据更丰富,让模型受噪声影响小,拟合更好的特征。
模型性能评估:交叉验证 / K折交叉验证
误差与偏差和方差的关系:
偏差:
其中 f 为真实值,y为预测值;
方差:
误差由偏差和方差共同产生:
2、学习鞍点,复习上次任务学习的全局最优和局部最优
鞍点:导数为零但不是极值的点,或者是在某一个(或多个)维度上为最大值而其他维度上是最小值的点,如下图红点
通常鞍点处误差曲面梯度为0,导致参数无法更新,从而成为损失下降的难点,鞍点不是局部最优点,但它与局部最优点、全局最优点都有使误差曲面趋于平缓的特性。
引入问题:当参数更新至鞍点处时,梯度趋于平缓,传统梯度下降方法更新参数会非常缓慢,如何解决?
调整梯度下降策略,见3
3、梯度下降
梯度下降的不同策略:
Batch GD(BGD,速度慢,抗噪声,损失总体向全局最优点下降)
批量梯度下降,更新一次参数
Mini-Batch GD (速度快,对噪声有一定适应能力,但会在全局最优点附近波动,难收敛)
每次同时取小批量数据来计算梯度,更新 B/min-batch 次参数
Stochastic Gradient Descent(SGD)
每个样本都更新一次参数;
详情参见:http://www.cnblogs.com/guoyaohua/p/8542554.html
Batch Size的选择:
当样本数不大时,可以使用BGD;
当样本数量较大时,可以选择Mini-BGD,且mini-batch size为2的幂次时,运行相对较快;
特征归一化:
归一化的原因:当学习率相同时,由于参数值大小不同而使得更新速度不一致,导致迭代次数增加,更新速度缓慢;如下图,在进行特征归一化以后,特征更新速度加快。
方法:减均值,除以方差;
补充:实际应用中,通过梯度下降更新参数的模型通常需要进行归一化,其中包括线性回归、逻辑回归、SVM、神经网络等,但对于决策树模型则不需要进行数据归一化,决策树是以信息增益、信息增益率、Gini系数为标准进行参数更新,由于特征归一化并不会改变样本在特征上的信息增益、信息增益率、Gini系数等标准,所以特征是否归一化不影响。
学习率不同会有什么影响;
- 写出SGD和Mini-Batch的代码
待补充
4、学习交叉验证
以K折交叉验证为例:
将数据分为:测试数据(1)、训练数据(k-1)、验证数据(1);
在训练时:
在训练数据+验证数据中随机抽取k-1批样本作为训练集、其余作为验证集,验证集不参与更新参数;经过k次训练后,可以获得k组训练数据,每组数据由(训练集loss+验证集loss)组成;此时这k组数据即可用于评估模型的好坏。
5、学习归一化
减均值,除以方差
6、学习回归模型评价指标
常见的线性回归模型的评价指标即loss为
1)MSE,均方误差
2)RMSE,标准均方差
3)MAE,平均绝对误差
总的来说属于距离损失;