问题一: 机器学习的基本流程(11)


事实上, 这是一道比较开放的问题, 面试者可以根据遇到的问题一步步地排 查原因.标准答案其实也不限于指标的选择, 即使评估指标选择对了, 仍会存在 模型过拟合或欠拟合、测试集和训练集划分不合理、线下评估与线上测试的样本 分布存在差异等一系列问题, 但评估指标的选择是最容易被发现, 也是最可能影响评估结果的因素.
问题2精确率与召回率的权衡.
京东提供视频的模糊搜索功能,搜索排序模型返回的Top 5的精确率非常高, 但在实际使用过程中,用户还是经常找不到想要的视频,特别是一些比较冷门的剧集,这可能是哪个环节出了问题呢?
分析与解答
要回答这个问题,首先要明确两个概念,精确率和召回率.精确率是指分类 正确的正样本个数占分类器判定为正样本的样本个数的比例.召回率是指分类正 确的正样本个数占真正的正样本个数的比例.
在排序问题中,通常没有一个确定的阈值把得到的结果直接判定为正样本或 负样本,而是采用Top N返回结果的值和值来衡量排序模型的性 能,即认为模型返回的Top N的结果就是模型判定的正样本,然后计算前N个位置 上的准确率@N和前N个位置上的召回率@N.

问题一: 机器学习的基本流程

文章插图
值和值是既矛盾又统一的两个指标,为了提高值,分类器需要尽量在“更有把握”时才把样本预测为正样本,但此时往往会因为过于保守而漏掉很多“没有把握”的正样本,导致值降低.
问题3ROC曲线
ROC曲线是Curve的简称, 中文名为“受试者工 作特征曲线”.ROC曲线源于军事领域, 而后在医学领域应用甚广, “受试者工作特征曲线”这一名称也正是来自于医学领域.
ROC曲线的横坐标为假阳性率 (FalseRate, FPR); 纵坐标为真阳性率 (TrueRate, TPR).FPR和TPR的计算方法分别为
F P R = F P N , F P R=\frac{F P}{N}, FPR=NFP?,
T P R = T P P . T P R=\frac{T P}{P} . TPR=PTP?.
上式中,P P P 是真实的正样本的数量,N N N 是真实的负样本的数量,T P T P TP 是P P P 个正样本中 被分类器预测为正样本的个数,F P F P FP 是N N N 个负样本中被分类器预测为正样本的个 数.
只看定义确实有点绕, 为了更直观地说明这个问题, 我们举一个医院诊断病 人的例子.假设有 10 位疑似癌症患者, 其中有 3 位很不幸确实患了癌症( P = 3 ) (P=3) (P=3), 另外7位不是癌症患者( N = 7 ) (N=7) (N=7) .医院对这 10 位疑似患者做了诊断, 诊断出 3 位癌症 患者, 其中有 2 位确实是真正的患者( T P = 2 ) (T P=2) (TP=2) .那么真阳性率T P R = T P / P = 2 / 3 T P R=T P / P=2 / 3 TPR=TP/P=2/3 .对 于 7 位非癌症患者来说, 有一位很不幸被误诊为癌症患者( F P = 1 ) ( F P=1 ) (FP=1), 那么假阳性率F P R = F P / N = 1 / 7 F P R=F P / N=1 / 7 FPR=FP/N=1/7 .对于“该医院”这个分类器来说, 这组分类结果就对应ROC曲线上 的一个点( 1 / 7 , 2 / 3 ) (1 / 7,2 / 3) (1/7,2/3) .
事实上,ROC曲线是通过不断移动分类器的“截断点”来生成曲线上的一组关键点的,通过下面的例子进一步来解释“截断点”的概念.
在二值分类问题中,模型的输出一般都是预测样本为正例的概率.假设测试集中有20个样本,表2.1是模型的输出结果.样本按照预测概率从高到低排序.在输出最终的正例、负例之前,我们需要指定一个阈值,预测概率大于该阈值的样本会被判为正例,小于该阈值的样本则会被判为负例.比如,指定阈值为0.9,那 么只有第一个样本会被预测为正例,其他全部都是负例.上面所说的“截断点”指 的就是区分正负预测结果的阈值.
通过动态地调整截断点,从最高的得分开始(实际上是从正无穷开始,对应着ROC曲线的零点),逐渐调整到最低得分,每一个截断点都会对应一个FPR和 TPR,在ROC图上绘制出每个截断点对应的位置,再连接所有点就得到最终的ROC曲线.