五、模型评估的方法
在样本划分和模型验证的过程中,存在着不同的抽样方法和验证方法。
1. 在模型评估过程中,有哪些主要的验证方法,他们的优缺点是什么?
Holdout检验
Holdout检验是最简单最直接的验证方法,它将原始的样本集合随机划分成训练集和验证集两部分。Holdout检验的缺点也很明显,即在验证集上计算出来的最后评估指标与原始分组有很大的关系。为了消除随机性,引入了交叉验证。
交叉验证
k-fold交叉验证:首先将全部样本划分成k个大小相等的样本子集;依次遍历这k个子集,每次把当前子集作为验证集,其余所有子集作为训练集,进行模型的训练和评估;最后把k次评估指标的平均值作为最终的评估指标。
留一验证
每次留下一个样本作为验证集,其余所有样本作为训练集。样本总数为n,依次对n个样本进行遍历,进行n次验证,再将评估指标求平均值得到最终的评估指标。样本总数n较多的情况下,留一验证法的时间开销极大。留一验证是留p验证的特例。留p验证是每次留下p个样本作为验证集,而从n个元素中选择p个元素有
种可能,因此他的时间开销远高于留一验证。实际很少使用。
自助法
不管是Holdout检验还是交叉检验,都是基于划分训练集和测试集的方法进行模型评估的。然而,当样本规模较小时,将样本集进行划分会让训练集进一步减小,这可能影响模型训练效果。自助法能维持训练集样本规模。
自助法是基于自主采样的检验方法。自助法的验证过程:对于总数为n的样本集合,进行n次有放回的随机抽样,得到大小为n的训练集。n次采样过程中,有的样本会被重复采样,有的样本没有被抽出过,将这些没有被抽出过的样本作为验证集,进行模型验证。
2.在自助法的采样过程中,对n个样本进行n次自助抽样,当n趋于无穷大时,最终有多少数据从未被选择过?
一个样本在一次抽样过程中未被抽中的概率为(1-1/n),n次抽样均未被抽中的概率为(1-1/n)^n。当n趋于无穷大时,
1-1/n = (n-1)/n = 1/n/(n-1) = 1/ (1 + 1/(n-1))
因此,当样本数很大时,大约有36.8%的样本从未被选择过,可作为验证集。
六、超参数调优
超参数有哪些调优方法?
为了进行超参数调优,一般会采用网格搜索、随机搜索、贝叶斯优化等算法。超参数搜索算法包含的要素:1. 目标函数。算法需要最大化/最小化的目标;2. 搜索范围。一般通过上限和下限来确定;3. 算法的其他参数,如搜索步长。
网格搜索
网格搜索可能是最简单、应用最广泛的超参数搜索算法,他通过查找搜索范围内的所有的点来确定最优值。如果采用较大的搜索范围以及较小的步长,网格搜索有很大概率找到全局最优值。然而,这种搜索方式十分消耗计算资源和时间,特别是需要调优的超参数比较多的时候。在实际应用中,网格搜索法一般会先使用较广的搜索范围和较大的步长,来寻找全局最优值可能的位置;然后会逐渐缩小搜索范围和步长,来寻找更精确的最优值。这种操作方案可以降低所需的时间和计算量,但由于目标函数一般是非凸的,所以很可能会错过全局最优值。
随机搜索
随机搜索的思想和网格搜索比较相似,只是不再测试上界和下界之间的所有值,而是在搜索范围内随机选取样本点。理论依据是,如果样本点集足够大,那么通过随机采样也能大概率地找到全局最优值或其近似值。随机搜索一般会比网格搜索更快,但是和网络搜索的快速版一样,它的结果也是没法保证的。
贝叶斯优化算法
贝叶斯最优算法在寻找最优超值参数时,采用了与网格搜索、随机搜索完全不同的方法。网格搜索和随机搜索在测试一个新点的时候,会忽略前一个点的信息;而贝叶斯优化算法则充分利用了之前的信息。贝叶斯优化算法通过对目标函数形状进行学习,找到使目标函数向全局最优值提升的参数。它学习目标函数形状的方法是,首先根据先验分布,假设一个搜集函数;然后,每一次使用新的采样点来测试目标函数时,利用这个信息来更新目标函数的先验分布;最后,算法测试由后验分布给出的全局最值最可能出现位置的点。对于贝叶斯算法,有一个需要注意的地方,一旦找到了一个局部最优值,他会在该区域不断采样,所以很容易陷入局部最优值。为了弥补这个缺陷,贝叶斯优化算法会在探索和利用之间找到一个平衡点,探索就是在还未取样的区域获取采样点;而利用则是根据后验分布在最可能出现全局最值的区域进行采样。
Google Vizier一个超参数调优系统。能自动优化超参数。
七、过拟合和欠拟合
1. 在模型评估过程中,过拟合和欠拟合具体是指什么现象?
过拟合是指训练模型对于训练数据拟合呈过当的情况,反映到评估指标上,就是模型在训练集上的表现很好,但在测试集和新数据上的表现较差,欠拟合指的是模型在训练和预测时都表现不好的情况。
欠拟合是没有很好的捕捉到数据的特征,不能很好的拟合数据。过拟合是模型过于复杂,把噪声数据的特征也学习到模型中,导致模型泛化能力下降,在后期应用过程中很容易输出错误的预测结果。
2. 几种降低过拟合和欠拟合风险的方法?
降低过拟合风险的方法
1) 从数据入手,获得更多的训练数据。使用更多的训练数据是解决过拟合问题最有效的手段,因为更多的样本能够让模型学习到更多更有效的特征,减小噪声的影响。直接增加数据一般是困难的,可以通过一定的规则来扩充训练数据。比如:在图像分类问题上,可以通过图像的平移、旋转、缩放等方式扩充数据;更进一步地,可以使用生成式对抗网络来合成大量的新训练数据。
2) 降低模型复杂度。在数据较少时,模型过于复杂是产生过拟合的主要因素,适当降低模型复杂度可以避免模型拟合过多的采样噪声。例如:在神经网络模型中减少网络层数、神经元个数等;在决策树模型中降低树的深度、进行剪枝等。
3) 正则化方法。给模型的参数加上一定的正则化约束,比如将权值的大小加入到损失函数中。以L2正则化为例:
这样,在优化原来的目标函数C0时,也能避免权值过大带来的过拟合风险。
4) 集成学习方法。集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险,如bagging方法。
降低欠拟合风险的方法
1) 添加新特征。当特征不足或现有特征与样本标签的相关性不强时,模型容易出现欠拟合。通过挖掘上下文特征、ID类特征、组合特征等新的特征,往往能够取得更好的效果。在深度学习中,有很多模型可以帮助完成特征工程,如因子分解机、梯度提升决策树、deep-crossing等都可以成为丰富特征的方法。
2) 增加模型复杂度。简单模型的学习能力较差,通过增加模型的复杂度可以使模型拥有更强的拟合能力。例如,在线性模型中添加高次项,在神经网络模型中增加网络层数或神经元个数等。
3) 减小正则化系数。正则化是用来防止过拟合的,但当模型出现欠拟合现象时,则需要有针对性地减小正则化系数。