4.1 模型评估
模型指标
- 损失的值是衡量模型质量很好的指标,但模型的质量往往由多个指标来衡量;
- 其他指标:
- 具体的模型指标:分类的准确率,检测的mAP等;
- 具体的商业指标:推理/响应速度;
查询/页面 ==> 检索相关的广告 ==> 估计广告的点击率(CTR) ==> 展示CTR×price最高的广告
预测广告的点击率,即一个二分类问题;
正例(点击)往往较少,负例(不点击)往往较多,响应的数据量要符合实际。
- Accuracy 准确率:预测正确的占总的(对于不平衡问题,往往更关注对正类的预测是否正确,更关注每一个类的精度和召回率);
- Precision 精度:对于某个具体的类
预测对了多少个(预测为类
且该类真的为类
) / 把多少个样本预测成类
;
- Recall 召回率:预测为类
而且它真的是类
/ 样本中有多少是类
;
- F1:平衡精度和召回。
关心模型是不是真的能把这两个类区分开来;
对于一个样本,预测值为,阈值
(一般情况下为0.5,即正负样本平衡时),大于阈值为正类,小于阈值为负类,若正负样本不平衡,该怎么办?
实际生产过程中,会根据很多东西来选择,如就想把特别置信的选出来(关心广告正类预测的精度怎么样),将
设置的比较大(只有预测值大于0.9时,认为是正类,此时精度会高,但召回率会低)。
在调整时,会做ROC曲线:
- x轴,分母=有多少个负例的样本(没有点击的样本个数),分子=预测为正类,但实际是负类;
- y轴,正类的召回。
ROC:每次取不同的值,做正类和负类的判断 ==> 得到曲线,每个点表示不同的
,该曲线可以表示一种精度和召回之间的权衡。
AUC:曲线下面的面积(最大值为1,最小值为0);
上图右半部分解释如下:
- AUC=1,完全可以区分正类和负类;
- AUC=0.7,正负类部分耦合;
- AUC=0.5,正负类完全耦合 ≈ 随机预测;
- AUC=0,正负类预测相反。
优化收入和用户体验;
- Latency: 延迟,响应速度;
- ASN:平均每一页展现多少广告;
- CTR:真实的用户点击率;
- ACP:平均每次点击广告主给的钱。
模型上线并不能一次性满足所有指标,通常要有一定的权衡。
- 模型最关注的指标AUC;
- 一个新的模型,评估时AUC增加,但商业指标不一定增加;
- 部署模型用真实的数据来评估模型。
4.2 过拟合和欠拟合
- 训练误差:模型在训练数据上的错误;
- 泛化误差:模型在新的没有见过的数据上的错误;
数据与模型的复杂度要匹配。
- 模型的复杂度:能够去拟合各种各样函数的能力;
- 不那么容易比较算法之间的复杂度;
- 同类算法容易进行比较:
- 参数量
- 可学习的参数能取多少值(有值限制的模型相对简单,即通常所说的正则化)
模型复杂度会产生的一些影响:
- 随着模型复杂度的增高,模型在训练数据上的误差会降低;
- 但是泛化误差不一定会一直降低。
不能完全没有过拟合,存在一定程度的过拟合为正常现象。
- x轴为决策树的深度;
- y轴为错误率。
数据复杂度的因素:
- 有多少个样本,样本数越多数据越复杂;
- 每个样本中有多少个元素,如维度(1000x1000 > 100x100)、数据中有没有一些时间空间的结构(股票有时序结构,图片有空间结构),有特殊结构的数据复杂度会高一些;
- 数据的多样性(如做分类,是有10种类别还是更多)
对于特别不同的数据很难衡量二者的复杂度(如图像中的像素 & 句子中的字符)
- 同一个模型,增加数据复杂度(e.g. 样本数),会由过拟合变为欠拟合,泛化误差会有一定的下降,但继续增加会达到模型的能力的上限(此时需要更换相对更复杂的模型,如绿色的线);
- 复杂模型一开始泛化误差较高,是由于数据复杂度小、模型复杂度高,容易造成过拟合,随着数据复杂度的增加,泛化误差会有下降。
数据复杂度和模型复杂度也是一个相互匹配的过程。
选择与数据有合适复杂度的模型
- 最小化泛化误差;
- 同时也要考虑商业指标。
先选一个模型的类(决策树or神经网络?),再选择合适的超参数
总结:
- 我们关注的是泛化误差而不是训练 误差;
- 模型复杂度,拟合各种各样函数的能力;
- 数据复杂度,信息的多少;
- 模型选择,模型与数据的复杂度要相匹配。
4.3 模型验证
测试数据集的误差可以被看作泛化误差,测试集只能用一次
验证集,可以被使用多次
- 通常是训练集中的一块;
- 大多数情况下“test” 指的是验证集。
随机拆分有前提:数据中每个样本之间独立同分布。
I.I.D: independent and indentically distributed
有的数据不符合:
- 具有时序信息的数据,如房屋售价、股票的价格等;
- 属于同一组的数据,如同一人脸的不同图像;
- 不平衡的数据。
K-折交叉验证:每个样本并没有在其上训练的情况怎样。
数据较少时,可以取较大的K。
模型表现的很好,很可能存在bug。
验证集中有来自训练集的样本
- 有些样本是重复的,可能同时分到训练集和验证集;
- 数据融合(人为的在验证集上调参)。
信息泄露
- 非I.I.D数据,可能会用到未来预测的数据
references
4.1 模型评估【斯坦福21秋季:实用机器学习中文版】_哔哩哔哩_bilibili