• 【机器学习Q&A】数据抽样和模型验证方法、超参数调优以及过拟合和欠拟合问题


    样本数据抽样和模型验证方法

    在机器学习中,通常把样本分为训练集和测试集,训练集用于训练模型,测试集用于评估模型。在样本划分和模型验证的过程中,存在着不同的抽样方法和验证方法。那么

    问题1: 在模型评估过程中,有哪些主要的验证方法,它们的优缺点是什么?

    (1)Holdout检验:
    Holdout检验是最简单也是最直接的验证方法,它将原始的样本集合随机划分成训练集验证集两部分。
    比方说,对于一个点击率预测模型,我们把样本按照70%~30%的比例分成两部分,70%的样本用于模型训练。30%用于模型验证,包括绘制ROC曲线,计算精确率和召回率等指标来评估模型性能。

    Holdout检验的缺点很明显:即在验证集上计算出来的最后评估指标和原始分组有很大的关系。为了消除这个随机性,研究者引入了“交叉检验”.
    (2)交叉检验
    k-fold交叉检验:首先将全部样本划分成 k k k个大小相等的样本子集。依次遍历这 k k k个子集,每次把当前子集作为验证集,其余所有子集作为训练集,进行模型训练和评估。最后把 k k k次的评估指标的平均值作为最终的评估指标。在实际实验中, k k k经常取值10。
    留一验证:每次留下1个样本作为验证集,其余所有样本作为训练集,样本总数为n,依此对n个样本进行遍历,进行n次验证,再将评估指标求平均值得到最终的评估指标。
    在样本总数较多的情况下,留一验证法的时间开销极大。事实上,留一验证是留 p p p验证的特例,留 p p p验证是每次留下 p p p个样本作为验证集,从n个元素中选出 p p p个元素有 C n p C_n^p Cnp个可能,因此它的时间开销更是远远高于留一验证,所以很少使用。
    (3)自助法
    不管是Holdout检验还是交叉检验,都是基于划分 训练集 和 测试集 的方法进行模型评估的。然后,当样本规模比较小时,将样本集进行划分会让训练集进一步减小,这可能会影响模型训练效果。有没有能维持训练集合样本规模的验证方法呢?自助法可以比较好的解决这个问题;

    自助法基于自助采样法的检验方法。对于总数为n的样本集合,进行n次有放回的随机抽样,得到大小为n的训练集。n次采样过程中,有的样本会被重复采样,有的样本没有被抽取过,将这些没有被抽取过的样本作为验证集,进行模型验证,这就是自助法验证过程

    问题2:在自助法的采样过程中,对n个样本进行n次自助采样,当n趋于无穷大时,最终有多少个数据从未被选择过?

    一个样本在一次抽样过程中未被抽中的概率为 ( 1 − 1 n ) (1-\frac{1}{n}) (1n1),n次抽样均为抽中的概率为 ( 1 − 1 n ) n (1-\frac{1}{n})^n (1n1)n。当n趋于无穷大时,概率为 lim ⁡ x → ∞ ( 1 − 1 n ) n \lim_{x \to \infty} (1-\frac{1}{n})^n limx(1n1)n。根据重要极限: lim ⁡ n → ∞ ( 1 + 1 n ) n = e \lim_{n\to \infty}(1+\frac{1}{n})^n=e limn(1+n1)n=e,所以有
    lim ⁡ x → ∞ ( 1 − 1 n ) n = lim ⁡ n → ∞ ( n − 1 n ) n = lim ⁡ n → ∞ ( 1 n n − 1 ) n = lim ⁡ n → ∞ 1 ( 1 + 1 n − 1 ) n = 1 lim ⁡ n → ∞ ( 1 + 1 n − 1 ) n − 1 ⋅ 1 lim ⁡ n → ∞ ( 1 + 1 n − 1 ) = 1 e ≈ 0.368 \lim_{x \to \infty} (1-\frac{1}{n})^n=\lim_{n \to \infty} (\frac{n-1}{n})^n=\lim_{n\to \infty}(\frac{1}{\frac{n}{n-1}})^n=\lim_{n \to \infty}\frac{1}{(1+\frac{1}{n-1})^n}=\frac{1}{\lim_{n\to \infty} (1+\frac{1}{n-1})^{n-1}}\cdot \frac{1}{\lim_{n\to \infty}(1+\frac{1}{n-1})}=\frac{1}{e}\approx 0.368 xlim(1n1)n=nlim(nn1)n=nlim(n1n1)n=nlim(1+n11)n1=limn(1+n11)n11limn(1+n11)1=e10.368

    因此,当样本数很大时,大约有36.8%的样本从未被选择过,可作为验证集。

    超参数调优

    问题1:超参数有哪些调优方法?

    为了进行超参数调优,我们一般会采用网格搜索随机搜索贝叶斯优化等算法。在具体介绍算法之前,需要明确超参数搜索算法一般包括哪几个要素

    1. 一是目标函数,即算法需要最大化/最小化的目标;
    2. 二是搜索范围,一般通过上限和下限来确定;
    3. 三是算法的其他参数,如搜索步长。

    (1)网格搜索
    网格搜索可能是最简单、应用最广泛的超参数搜索算法。它通过查找搜索范围内的所有的点来确定最优值。如果采用较大的搜索范围以及较小的步长,网格搜索有很大概率找到全局最优值。然而,这种搜索方案十分消耗计算资源和时间,特别是需要调优的超参数比较多的时候。因此,在实际应用中,网格搜索法一般会先使用较广的搜索范围和较大的步长,来寻找全局最优值可能的位置;然后会逐渐缩小搜索范围和步长,来寻找更精确的最优值。这种操作方案可以降低所需的时间和计算量,但由于目标函数一般是非凸的,所以很可能会错过全局最优值
    (2)随机搜索
    随机搜索的思想与网格搜索比较相似,只是不再测试上界和下界之间的所有值,而是在搜索范围中随机选取样本点。它的理论依据是:如果样本点集足够大,那么通过随机采样也能大概率地找到全局最优值,或其近似值。随机搜索一般会比网格搜索要快一些,但是和网格搜索的快速版一样,它的结果也是没法保证的
    (3)贝叶斯优化算法
    贝叶斯优化算法在寻找最优最值参数时,采用了与网格搜索、随机搜索完全不同的方法。网格搜索和随机搜索在测试一个新点时,会忽略前一个点的信息;而贝叶斯优化算法则充分利用了之前的信息贝叶斯优化算法通过对目标函数形状进行学习,找到使目标函数向全局最优值提升的参数
    具体来说,它学习目标函数形状的方法是

    • 首先根据先验分布,假设一个搜集函数;
    • 然后,每一次使用新的采样点来测试目标函数时,利用这个信息来更新目标函数的先验分布;
    • 最后,算法测试由后验分布给出的全局最值最可能出现的位置的点。

    对于贝叶斯优化算法,有一个需要注意的地方,一旦找到了一个局部最优值,它会在该区域不断采样,所以很容易陷入局部最优值。为了弥补这个缺陷,贝叶斯优化算法会在探索和利用之间找到一个平衡点,“探索”就是在还未取样的区域获取采样点;而“利用”则是根据后验分布在最可能出现全局最值的区域进行采样。

    过拟合与欠拟合问题

    在模型评估和调整的过程中,往往会遇到”过拟合“和”欠拟合“的情况。那么

    问题1:在模型评估过程中,过拟合和欠拟合具体是指什么现象?

    过拟合是指模型对于训练数据拟合呈过当的情况,反映到评估指标上,就是模型在训练集上的表现很好,但在测试集和新数据上的表现较差。
    欠拟合是指模型在训练和预测时表现都不好的情况,反映到评估指标上,就是模型在训练集和测试集上的表现都不好。
    过拟合与欠拟合

    问题2:有哪些方法可以降低过拟合和欠拟合风险?

    (1)降低“过拟合”风险的方法

    • 从数据入手,获取更多的数据。使用更多的训练数据是解决过拟合问题最有效的手段。因为更多的样本能够让模型学习到更多更有效的特征,减少噪声的影响。当然,直接增加实验数据一般是困难的,但是可以通过一定的规则来扩充训练数据。比如,在图像分类问题上,通过图像的平移、旋转、缩放等方式扩充数据;更进一步,使用生成式对抗网络来合成大量的新训练数据。
    • 降低模型复杂度。 数据较少时,模型过于复杂是产生过拟合的主要因素。适当降低模型复杂度可以避免模型拟合过多的采样噪声。例如:在神经网络模型中减少网络层数、神经元个数;在决策树模型中降低树的深度、进行剪枝等。
    • 正则化方法。给模型的参数加上一定的正则约束,比如将权值的大小加入到损失函数中。以L2正则化为例:
      C = C 0 + λ 2 n ⋅ ∑ i w i 2 C=C_0+\frac{\lambda}{2n}\cdot \sum_{i}w_i^2 C=C0+2nλiwi2
      这样,在优化原来的目标函数 C 0 C_0 C0的同时,也能避免权值过大带来的过拟合风险。
    • 集成学习方法。集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险。如Bagging方法。

    (2)降低“欠拟合”风险的方法

    • 添加新特征。当特征不足或者现有特征与样本标签的相关性不强时,模型容易出现欠拟合。通过挖掘“上下文特征”、“ID类特征”、“组合特征”等新的特征,往往能够取得更好的效果。在深度学习潮流中,有很多模型可以帮助完成特征工程,如因子分解机、梯度提升决策树、Deep-crossing等都可以成为丰富特征的方法。
    • 增加模型复杂度。简单模型的学习能力较差,通过增加模型的复杂度可以使模型拥有更强的拟合能力。例如,在线性模型中添加高次项,在神经网络模型中增加网络层数或神经元个数等。
    • 减小正则化系数。正则化是用来防止过拟合的,当模型出现欠拟合现象时,需要针对性减小正则化系数。

    参考资料

    [1] 《百面机器学习》第二章 模型评估

  • 相关阅读:
    轻松添加背景图片并一键褪色的简单操作
    The 2022 ICPC Asia Regionals Online Contest (II)
    在vue中使用echarts实现飞机航线 水滴图 词云图
    华为机考入门python3--(35)牛客35-蛇形矩阵
    【操作系统】进程:生成者-消费者问题
    3DGS学习(三)—— 球谐函数
    在PostgreSQL中如何有效地批量导入大量数据,并确保数据加载过程中的性能和稳定性?
    栈和队列-Java
    根据服务器系统选择对应的MySQL版本
    某音吸粉最快的10种方法
  • 原文地址:https://blog.csdn.net/ARPOSPF/article/details/125502040