文章来源于《百面机器学习》
1、评价指标有哪些?
- 准确率(Accuracy):正确分类样本占样本总数的比值,对与偏科问题时候不适用
- 精确率(Precision):被正确预测出来的正类占预测正类的比值
- 召回率(Recall):被正确预测出来的正类占样本实际正类的比值
- F1 Score : F 1 S c o r e = 2 P R P + R F_1 Score = \frac{2PR}{P+R} F1Score=P+R2PR
- ROC曲线:横轴是假阳性率( F P R = F P N FPR=\frac{FP}{N} FPR=NFP),纵轴是真阳性率( T P R = T P P TPR=\frac{TP}{P} TPR=PTP)反映敏感性和特异性连续变量的综合指标。在正负样本的分布发生变化时,ROC曲线的形状能基本保持不变。这个特点让ROC曲线能够尽量降低不同测试集带来的干扰,更加客观地衡量模型本身的性能。
- P-R曲线:横轴是召回率,纵轴是精确率。在正负样本的分布发生变化时,P-R曲线形状发生剧烈变化
- 均方根误差(RMSE): R M S E = ∑ i = 1 n ( y i − y ^ i ) 2 n RMSE=\sqrt{\frac{\sum_{i=1}^n(y_i-\hat y_i)^2}{n}} RMSE=n∑i=1n(yi−y^i)2,一般情况下,RMSE能够很好地反映回归模型预测值与真实值的偏离程度。但实际问题中,如存在个别偏离程度非常大的离群点(Outlier)时,即使离群点数量非常少,也会让RMSE指标变得很差。
- 平均绝对百分比误差(MAPE): ∑ i = 1 n ∣ y i − y ^ i y i ∣ ∗ 100 n \sum_{i=1}^n|\frac{y_i-\hat y_i}{y_i}|*\frac{100}{n} ∑i=1n∣yiyi−y^i∣∗n100,鲁棒性更好,与RMSE相比,MAPE相当于把每个点的误差进行了归一化,降低了个别离群点带来的绝对误差的影响。
2、在模型训练过程中,不断地评估着样本间的距离,常用的距离有哪些,各有什么特点?
- 欧氏距离:物理真实距离, D = ∣ ∣ A − B ∣ ∣ 2 D=||A-B||_2 D=∣∣A−B∣∣2,具有平移不变性和旋转不变性
- 马氏距离: D ( x ) = ( x − μ ) T S − 1 ( x − μ ) D(x)=\sqrt{(x-\mu)^TS^{-1}(x-\mu)} D(x)=(x−μ)TS−1(x−μ),基于卡方分布,度量多元离群点的统计方法,具有平移不变性、旋转不变性、尺度不变性、不受量纲影响和考虑了模式分布的性质
- 余弦距离:不属于严格意义上的距离,因为不符合距离三要素中的三角不等性(其他两个是正定性和对称性), d i s t ( A , B ) = 1 − c o s ( A , B ) = 1 − A ⋅ B ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 dist(A,B)=1-cos(A,B)=1-\frac{A\cdot B}{||A||_2||B||_2} dist(A,B)=1−cos(A,B)=1−∣∣A∣∣2∣∣B∣∣2A⋅B(与欧式距离的关系: d i a t ( A , B ) = 1 2 ∣ ∣ A − B ∣ ∣ 2 diat(A,B)=\frac12||A-B||^2 diat(A,B)=21∣∣A−B∣∣2),余弦距离关心的是两个向量的夹角,不关注绝对值,取之范围[-1,1]。
3.A/B测试
- A/B测试是验证新模块、新功能、新产品是否有效,新算法、新模型的效果是否有提升,新设计是否受到用户欢迎,新更改是否影响用户体验的主要测试方法。是验证模型最终效果的主要手段。
(1)充分离线评估之后,为什么还要进行在线A/B测试?
- 离线评估无法完全消除模型过拟合的影响,因此,得出的离线评估结果无法完全替代线上评估结果。-
- 离线评估无法完全还原线上的工程环境。离线评估的结果是理想工程环境下的结果,一般不会考虑线上环境的延迟、数据丢失、标签数据缺失等情况。
- 线上系统的某些商业指标在离线评估中无法计算。离线评估一般是针对模型本身进行评估,而与模型相关的其他指标,特别是商业指标,往往无法直接获得。比如,上线了新的推荐算法,离线评估往往关注的是ROC曲线、P-R曲线等的改进,而线上评估可以全面了解该推荐算法带来的用户点击率、留存时长、PV访问量等的变化。这些都要由A/B测试来进行全面的评估。
(2)如何进行线上A/B测试?
- 在保证样本独立性和采样方式的无偏性的情况下将用户分成实验组和对照组
- 对实验组的用户施以新模型,对对照组的用户施以旧模型。
- 比较两组模型结果,评估新模型。
4. 在模型评估过程中,有哪些主要的验证方法,它们的优缺点是什么?
(1) Holdout 检验
- 是最简单也是最直接的验证方法
- 它将原始的样本集合按一定的比例(常用比例70%~30% )随机划分成训练集和验证集两部分,70% 的样本用于模型训练;30% 的样本用于模型验证,包括绘制ROC曲线、计算精确率和召回率等指标来评估模型性能。
- 基于划分训练集和测试集的方法进行模型评估的
- 缺点:1) 在验证集上计算出来的最后评估指标与原始分组有很大关系,存在很大的随机性;2)当样本规模比较小时,将样本集进行划分会让训练集进一步减小,这可能会影响模型训练效果。
(2)交叉检验 — 有:k-fold交叉验证和留一验证
- 缺点:基于划分训练集和测试集的方法进行模型评估的,当样本规模比较小时,将样本集进行划分会让训练集进一步减小,这可能会影响模型训练效果。
\quad 1)k-fold交叉验证
- 将全部样本划分成k个大小相等的样本子集;
- 依次遍历这k个子集,每次把当前子集作为验证集,其余所有子集作为训练集,进行模型的训练和评估;
- 最后把k次评估指标的平均值作为最终的评估指标。
- 在实际实验中,k经常取10。
\quad 2)留一验证
- 每次留下1个样本作为验证集,其余所有样本作为测试集;
- 样本总数为n,依次对n个样本进行遍历,进行n次验证;
- 再将评估指标求平均值得到最终的评估指标。
- 缺点:在样本总数较多的情况下,留一验证法的时间开销极大。
- 事实上,留一验证是留p验证的特例,留p验证是的时间开销更是远远高于留一验证,故而很少在实际中应用。
(3)自助法
- 是基于自助采样法的检验方法。
- 对于总数为n的样本集合,进行n次有放回的随机抽样,得到大小为n的训练集。
- n次采样过程中,有的样本会被重复采样,未被抽中的样本的概率是 ( 1 + 1 n ) n (1+\frac1n)^n (1+n1)n,当 n n n趋于无穷时,这个概率为 1 e ≈ 0.368 \frac1e\approx 0.368 e1≈0.368,将这些没有被抽出的样本作为验证集,进行模型验证。
5.超参数有哪些调优方法?
一般会采用网格搜索、随机搜索、贝叶斯优化等算法。
明确超参数搜索算法一般包括三要素:一是目标函数,即算法需要最大化/最小化的目标;二是搜索范围,通过上限和下限来确定;三是算法的其他参数,如搜索步长。
(1) 网格搜索
- 网格搜索简单、应用最广泛的超参数搜索算法
- 它通过查找搜索范围内的所有的点来确定最优值。
- 采用较大搜索范围以及较小步长,有很大概率找到全局最优值。
- 但消耗很大计算资源,特别是要调优的超参数比较多时。
- 在实际中,采用先用较广的搜索范围和步长,来寻找全局最优值可能的位置;然后逐渐缩小搜索范围和步长,来寻找更精确的最优值。
- 可以降低时间和计算量,但可能会错过全局最优值。
(2)随机搜索
- 思想与网格搜索比较相似
- 在搜索范围中随机选取样本点。
- 随机搜索一般会比网格搜索要快一些,但没法保证结果是全局最优。
(3)贝叶斯优化算法
- 贝叶斯优化算法则充分利用了之前的信息
- 通过对目标函数形状进行学习,找到使目标函数向全局最优值提升的参数。
- 学习方法是:首先根据先验分布,假设一个搜集函数;然后使用新的采样点来测试目标函数时,并更新目标函数的先验分布;算法测试由后验分布给出的全局最值最可能出现的位置的点。
- 贝叶斯优化算法,一旦找到了一个局部最优值,就会在该区域不断采样。
- 很容易陷入局部最优值。改善方法是:贝叶斯优化算法会在“还未取样的区域获取采样点”和“根据后验分布在最可能出现全局最值的区域进行采样之间”找到一个平衡点
6.过拟合和欠拟合是指什么现象,说出几种降低过拟合和欠拟合风险的方法?
- 过拟合是指模型对于训练数据拟合呈过当的情况,反映到评估指标上,就是模型在训练集上的表现很好,但在测试集和新数据上的表现较差,方差较大。
- 欠拟合指的是模型在训练和预测时表现都不好的情况,偏差和方差都很大。
(1)降低过拟合的方法:
- 从数据入手,获得更多的训练数据
- 降低模型复杂度
- 正则化方法,给模型的参数加上一定的正则约束,使用dropout
- 集成学习方法,是把多个模型集成在一起,来降低单一模型的过拟合风险,如Bagging方法。
(2)降低欠拟合的方法:
- 添加新特征
- 增加模型复杂度
- 减小正则化系数