01 评估指标的局限性

知识点

准确率(Accuracy),精确率(Precision),召回率(Recall),均方根误差(Root Mean Square Error,RMSE)

问题1 准确率的局限性

准确率(Accuracy)
问题集合 - 图1
其中问题集合 - 图2为被正确分类的样本个数,问题集合 - 图3为总样本的个数

  1. 当不同类别的样本非常不均衡时,占比大的类别往往成为影响准确率的最主要因素
  2. 模型过拟合或欠拟合
  3. 测试集和训练集划分不合理
  4. 线下评估与线上测试的样本分布存在差异

问题2 精确率与召回率的平衡

对偏门的内容/类目,TOPN量不足。
解决方案:使用F1 score进行衡量

问题3 平方根误差的「意外」

存在个别偏离程度非常大的离群点(Outlier),比如流量很小的内容样本或是流量很大的内容样本
解决方案:1)过滤掉离群点;2)用MAPE /

04 A/B测试的陷阱

知识点

A/B测试、实验组、对照组

问题1 在对模型进行充分的离线评估之后,为什么还要进行在线A/B测试?

  1. 离线评估无法完全消除模型过拟合的影响,因此,得出的离线评估结果无法完全替代线上评估结果;
  2. 离线评估无法还原线上的工程环境;
    1. 线上环境的延迟
    2. 数据丢失
    3. 标签数据丢失
  3. 线上系统的某些商业指标在离线评估中无法计算。

    1. 比如新的推荐算法离线评估关注的是ROC曲线、P-R曲线等的改进
    2. 而线上评估可以全面了解该推荐算法带来的用户点击率、留存时长、PV访问量等的变化。这些需要A/B测试来进行全面的评估。

      问题2 如何进行线上A/B测试?

  4. 样本的独立性和采样方式的无偏差(不能进行有用户属性的分组)

  5. 确保同一个用户每次只能分到同一个桶中
  6. 分桶中选取的用户id需要是一个随机数

问题3 如何划分实验组和对照组

  1. 样本基础属性一致。
    1. 比如选择男用户做基础样本,实验组和对照组中都不能出现女用户
  2. 最好选择随机,如果没有随机算法也建议不要按尾号进行分流。使用质数取模分桶后再进行分流更合适

05 模型评估的方法

知识点

Holdout检验、交叉验证,自助法(Bootstrap),微积分

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

Holdout检验
Holdout检验将原始的样本集合划分成训练集和验证集两部分。
缺点:在验证集上计算出来的最后评估指标与原始分组有很大关系。
交叉验证
k-fold交叉验证:首先将全部样本划分成K个大小相等的样本子集。依此遍历这k个子集,每次把当前子集作为验证集,其余所有子集作为训练集,进行模型的训练和评估;最后把k次评估指标的平均值作为最终的评估指标。(在实际经验中,k经常取10)
留一验证:每次留下1个样本作为验证集,其余所有样本作为测试集。
补充:样本总数为n,一次对n个样本进行遍历,进行n次验证,再将评估指标求平均值得到最终的评估指标。在样本总数较多的情况下,留一法验证的时间开销极大。总计需要n次评估。
留一法是留p验证的特例,留p验证是每次留下p个样本作为验证集,而从n个元素中选择p个元素有问题集合 - 图4种可能,因此它的时间开销远远高于留一验证,故而很少在实际工程中被应用。
自助法:基于自主采样的检验方法。对于总数为n的样本集合,进行n次有放回的随机抽样,有的样本没有被抽出过,将这些没有被抽出的样本作为验证集,进行模型验证。
优点:当样本规模比较小时,自助法比Holdout检验和交叉验证更适合。

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

一个样本在一次抽样过程中未被抽中的概率为问题集合 - 图5,n次抽样均未抽中的概率为问题集合 - 图6。当n趋于无穷大时,概率为问题集合 - 图7
因此,当样本数很大时,大约有36.8%的洋房吧从未被选择过。

06 超参数调优

知识点

网格搜索,随机搜索,贝叶斯优化

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

超参数搜索算法一般包含三个要素

  1. 目标函数(算法需要最大化/最小化的目标)
  2. 搜索范围(通过上限和下线来确定)
  3. 算法的其他参数(如搜索步长)

网格搜索
通过查找搜索范围内的所有的点来确定最优值。如果采用较大的搜索范围以及较小的步长,网格搜索有很大概率找到全局最优值。
缺点:
(1)这种搜索方案十分消耗计算资源和时间,特别是需要调优的超参数比较多的时候。
因此,在实际应用中,网格搜索法一般会先使用较广的搜索范围和较大的步长,来寻找全局最优值可能的位置; 然后会逐渐缩小搜索范围和步长,来寻找更精确的最优值。这种操作方案可以降低所需的时间和计算量,
(2)所以很可能会错过全局最优值。
由于目标函数一般是非 凸的,
随机搜索
在搜索范围中随机选取样本点。它的理论依据是,如果样本点集足够大,那么通过随机采样也能大概率地找到全局最优值,或其近似值。
优点:随机搜索一般会比网格搜索要快一些,
缺点:结果也是没法保证的。
贝叶斯优化算法
贝叶斯优化算法在寻找最优最值参数时,采用了与网格搜索、随机搜索完全不同的方法。网格搜索和随机搜索在测试一个新点时,会忽略前一个点 的信息; 而贝叶斯优化算法则充分利用了之前的信息。贝叶斯优化算法通过 对目标函数形状进行学习,找到使目标函数向全局最优值提升的参数。 具体来说,它学习目标函数形状的方法是,首先根据先验分布,假设一个搜集函 数; 然后,每一次使用新的采样点来测试目标函数时,利用这个信息来更新 目标函数的先验分布; 最后,算法测试由后验分布给出的全局最值最可能出 现的位置的点。对于贝叶斯优化算法,有一个需要注意的地方,一旦找到了一个局部最优值,它会在该区域不断采样,所以很容易陷入局部最优值。为 了弥补这个缺陷,贝叶斯优化算法会在探索和利用之间找到一个平衡点, 「探索」就是在还未取样的区域获取采样点; 而「利用」则是根据后验分布 在最可能出现全局最值的区域进行采样。

07 过拟合与欠拟合

知识点

过拟合,欠拟合

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

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

问题2 能否说出几种降低过拟合和欠拟合风险的方法?

降低过拟合的方法

  1. 获取更多的数据。更多的样本能够让模型学习到更多更有效的特征,减小噪声的影响。
    1. 在图像分类的问题上,可以通过对图像的平移、旋转、缩放等方式扩充数据
    2. 可以使用生成式对抗网络来合成大量的新训练数据
  2. 降低模型复杂度。
    1. 决策树中降低树的深度、进行剪枝
    2. 神经网络模型中减少网络层数,神经元个数
  3. 正则化方法。给模型的参数加上一定的正则化约束,比如将权值的大小加入到损失函数中。
    1. 如常见的L2正则化问题集合 - 图8,在优化原来的目标函数
    2. 也有L1正则化
  4. 集成学习方法。集成学习方法是把多个模型集成在一起,来降低单一模型的过拟合风险,如Bagging方法。

降低欠拟合风险的方法

  1. 添加新特征
    1. 因子分解
    2. 梯度提升决策树
    3. Deepcrossing
  2. 增加模型复杂度。
    1. 在线性模型中添加高次项
    2. 在神经网络模型中增加网络层数或神经元个数
  3. 减少正则化系数