1.评价指标的局限性算法
问题1 准确性的局限性
准确率是分类问题中最简单也是最直观的评价指标,但存在明显的缺陷。好比,当负样本占99%时,分类器把全部样本都预测为负样本也能够得到99%的准确率。因此,当不一样类别的样本比例很是不均衡时,占比大的类别每每成为影响准确率的最主要因素。网络
例子:Hulu的奢侈品广告主但愿把广告定向投放给奢侈品用户。Hulu经过第三方的数据管理平台拿到了一部分奢侈品用户的数据,并以此为训练集和测试集,训练和测试奢侈品用户的分类模型,该模型的分类准确率超过了95%,但在实际广告投放过程当中,该模型仍是把大部分广告投给了非奢侈品用户,这多是什么缘由形成的?
解决方法:可使用平均准确率(每一个类别下的样本准确率的算术平均)做为模型评估的指标;也多是其余问题:过拟合或欠拟合、测试集和训练集不合理、线下评估和线上测试的样本分布存在差别。app
问题2 精确率与召回率的权衡
精确率=分类正确的正样本个数/分类器断定为正样本的样本个数 全部推荐了的新闻中该推荐的新闻的比例。 好比,推荐了10篇新闻,其中8篇是应该推荐的机器学习
召回率=分类正确的正样本个数/真正的正样本的样本个数 全部应该推荐的新闻中实际推荐了的新闻的比例。好比应该推荐10篇感兴趣的新闻,只推荐了其中的8篇。函数
要平衡精确率和召回率,能够调节区分正负类别的几率临界值。 为提升精确率,能够提升几率临界值,使得正类别的判断更加保守;为了提升召回率,能够下降几率临界值,以增长正类别的数量性能
例子:Hulu提供视频的模糊搜索功能,搜索排序模型返回的Top5的精确率很是高,但在实际使用过程当中,用户仍是常常找不到想要的视频,特别是一些比较冷门的剧集,这多是哪一个环节出了问题呢?分类器须要尽可能在“更有把握”时才把样本预测为正样本,但此时每每会由于过于保守而漏掉不少“没有把握”的正样本,致使Recall值下降。
解决方法:用P-R曲线,横轴是召回率,纵轴是精确率。对于一个排序模型来讲,其P-R曲线上的一个点表明着,在某一个阈值下,模型将大于该阈值的结果断定为正样本,小于该阈值的结果断定为负样本学习
建议:作搜索:保证召回的状况下提高准确率;作疾病监测、反垃圾:保证准确率的条件下,提高召回率测试
问题3 平方根偏差的“意外”
例子:Hulu做为一家流媒体公司,拥有众多的美剧资源,预测每部美剧的流量趋势对于广告投放、用户增加都很是重要,咱们但愿构建一个回归模型来预测某部美剧的流量趋势,但不管采用哪一种回归模型,获得的RMSE指标都很是高。然而事实是,模型在95%的时间区间内的预测偏差都小于1%,取得了至关不错的预测结果。那么,形成RMSE指标居高不下的最可能缘由是什么?
缘由分析:在实际状况中,若是存在个别偏离程度很是大的离群点,即便离群点数量很是少,也会让RMSE指标变得不好。回到问题中,模型在95%的时间区间内的预测偏差都小于1%,这说明,在大部分时间区间内,模型的优化
预测效果都是 很是优秀的,然而,RMSE却一直不好,这极可能是因为在其余的5%时间区间存在很是严重的离群点。事实上,在流量预估这个问题中,噪声点确实是很容易产生的,好比流量特别小的美剧、刚上映的美剧或者spa
刚获奖的美剧,甚至一些相关社交媒体突发事件带来的流量,都看会形成离群点。
解决方法:
1)若是咱们认定这些离群点是“噪声点”的话,就须要在数据预处理的阶段把这些噪声点过滤掉;
2)若是不让我这些离群点是“噪声点”,就须要进一步提升模型的预测能力,将离群点产生的机制建模进去;
3)找一个更合适的指标来评估该模型。关于评估指标,实际上是存在比RMSE的鲁棒性更好的指标,好比平均绝对百分偏差MAPE(mean absolute percent error),相比于RMSE,MAPE至关于把每一个点的偏差进行了归一化,下降了
个别离群点带来的绝对偏差的影响。
2.ROC曲线
问题1:什么是ROC曲线?
ROC曲线是Receiver operating characteristic curve的简称,中文名为“受试者工做特征曲线”。ROC曲线源于军事领域,横坐标为假阳性率(False positive rate,FPR),纵坐标为真阳性率(True positive rate,TPR).
假阳性率 FPR = FP/N ---N个负样本中被判断为正样本的个数占真实的负样本的个数
真阳性率 TPR = TP/P ---P个正样本中被预测为正样本的个数占真实的正样本的个数
问题2:如何绘制ROC曲线?
ROC曲线是经过不断移动分类器的“截断点”来生成曲线上的一组关键点的,“截断点”指的就是区分正负预测结果的阈值。
经过动态地调整截断点,从最高的得分开始,逐渐调整到最低得分,每个截断点都会对应一个FPR和TPR,在ROC图上绘制出每一个截断点对应的位置,再链接全部点就获得最终的ROC曲线。
问题3:如何计算AUC?
AUC指的是ROC曲线下的面积大小,该值可以量化地反映基于ROC曲线衡量出的模型性能。因为ROC曲线通常都处于y=x这条直线的上方(若是不是的话,只要把模型预测的几率反转成1-p就能够获得一个更好的分类器),因此AUC的取值通常在0.5-1之间。AUC越大,说明分类器越可能把真正的正样本排在前面,分类性能越好。
问题4:ROC曲线相比P-R曲线有什么特色?
当正负样本的分布发生变化时,ROC曲线的形状可以基本保持不变,而P-R曲线的形状通常会发生较剧烈的变化。ROC可以尽可能下降不一样测试集带来的干扰,更加客观的衡量模型自己的性能。若是研究者但愿更多地看到模型在特定数据集上的表现,P-R曲线可以更直观地反映其性能。
3.余弦距离的应用
问题1:结合你的学习和研究经历,探讨为何在一些场景中要使用余弦类似度而不是欧氏距离?
余弦类似度在高维状况下依然保持“相同时为1,正交时为0,相反时为-1”的性质,而欧式距离的数值则受维度影响,而且含义也比较模糊。
整体来讲,欧氏距离体现数值上的绝对差别,而余弦距离体现方向上的相对差别。
例子:统计两部剧的用户观看行为,用户A的观看向量为(0,1),用户B为(1,0);此时二者的余弦距离很大,而欧氏距离很小;咱们分析两个用户对不一样视频的偏好,更关注相对差别,显然应当使用余弦距离;而咱们分析用户活跃度,以登陆次数和平均观看时长做为特征时,余弦距离会认为(1,10)和(10,100)两个用户距离很近;但显然这两个用户活跃度是有着极大差别的,此时咱们更关注数值绝对偏差,应当使用欧式距离。
问题2:余弦距离是不是一个严格定义的距离?
距离需知足三条性质:正定性、对称性、三角不等式;
余弦距离知足正定性和对称性,可是不知足三角不等式,所以它不是严格意义上的距离。
正定性证实dist(A,B)>0;
对称性证实dist(A,B)=dist(B,A)
三角不等式证实dist(A,C)+dist(C,B) >= dist(A,B)
例子:在经过影视语料库训练出的词向量中,comedy和funny,funny和happy的余弦距离都很近,小于0.3,然而comedy和happy的余弦距离却高达0.7.这一现象明显不符合距离的定义。
在机器学习领域中,KL距离也叫相对熵,经常使用于计算两个分布之间的差别,但不知足对称性和三角不等式。
4.A/B测试的陷阱
问题1:在对模型进行充分的离线评估以后,为何还要进行在线A/B测试?
缘由:(1)离线评估没法彻底消除模型过拟合的影响;
(2)离线评估没法彻底还原线上的工程环境;
(3)线上系统的某些商业指标在离线评估中没法计算。
问题2:如何进行线上A/B测试?
进行用户分桶,即将用户分红实验组和对照组,对实验组的用户施以新模型,对对照组的用户施以旧模型,在分桶的过程当中,要注意样本的独立性和采样方式的无偏性,确保同一个用户每次只能分到同一个桶中,在分桶过程当中所选取的user_id须要是一个随机数,这样才能保证桶中的样本是无偏的。
问题3:如何划分实验组和对照组?
例子:H公司的算法工程师们最近针对系统中的“美国用户”研发了一套全新的视频推荐模型A,而目前正在使用的针对全体用户的推荐模型是B。在正式上线以前,工程师们但愿经过A/B测试来验证新推荐模型效果。
正确的作法是将全部美国用户根据user_id个位数划分为试验组合对照组,分别施以模型A和B,才能验证模型A的效果。
5.模型评估的方法
问题1:在模型评估过程当中,有哪些主要的验证方法,它们的优缺点是什么?
(1)Holdout检验:
直接将原始的样本集合随机划分红训练集和验证集两部分。比方说,对于一个点击量预测模型,咱们把样本按照70%~30%的比例分红两部分,70%的样本用于模型训练;30%的样本用于模型验证,包括绘制ROC曲线、计算精确率和召回率等指标来评估模型性能;
缺点:在验证集上计算出来的最后评估指标与原始分组有很大的关系
(2)交叉验证
K-fold交叉验证:首先将所有样本划分红k个大小相等的样本子集;一次遍历这k个子集,每次把当前子集做为验证集,其他全部子集做为训练集,进行模型的训练和评估;最后把k次评估指标的平均值做为最终的评估指标。在实验中,k常常取10.
留一验证:每次留下一个样本做为验证集,其他全部样本做为测试集。在样本总数较多的状况下,留一验证的时间开销极大.
留p验证:每次留下p个样本做为验证集,而从n个元素中选择p个元素有Cnp种可能,所以它的时间开销更是远远高于留一验证。
(3)自助法
基于自助采样法的校验方法。对于总数为n的样本集合,进行n次有放回的随机抽样,获得大小为n的训练集。n次抽样过程当中,有的样本会被重复采样,有的样本没有被抽出过,将这些没有被抽出的样本做为验证集,进行规模验证。
问题2:在自助法的采样过程当中,对n个样本进行n次自助抽样,当n趋于无穷大时,最终有多少数据从未被选择过?
一个样本在一次抽样过程当中未被抽中的几率为(1-1/n),n次抽样均未被抽中的几率为(1-1/n)n,当n趋于无穷大时,几率为1/e,所以当样本数很大时,大约有36.8%的样本从未被选择过,可做为验证集。
6.超参数调优?
问题1:超参数有哪些调优方法?
(1)网格搜索
经过查找搜索范围内的全部的点来肯定最优值。若是采用较大的搜索范围以及较小的步长,网络搜索有很大几率找到全局最优值。然而,这种搜索方案十分消耗计算资源和时间,特别是须要调优的超参数比较多的时候,所以,在实际应用中,网格搜索法通常会使用较广的搜索范围和步长,来寻找全局最优值可能的位置;而后会逐渐缩小搜索范围和步长,来寻找更精确的最优值。这种方案能够下降所需的时间和计算量,但因为目标函数通常是非凸的,因此极可能会错过全局最优值。
(2)随机搜索
理论依据是若是样本集足够大,那么经过随机采样也能大几率地找到全局最优值,或其近似值。随机搜索通常会比网格搜索要快一些,可是和网格搜索的快速版同样,它的结果也是无法保证的。
(3)贝叶斯优化算法
网格搜索和随机搜索在测试一个新点时,会忽略前一个点的信息;而贝叶斯优化算法则充分利用了以前的信息。贝叶斯优化算法经过对目标函数形状进行学习,找到使目标函数向全局最优值提高的函数。具体来讲,它学习目标函数形状的方法是,首先根据先验分布,假设一个搜集函数;而后,每一次使用新的采样点来测试目标函数时,利用一个这个信息来更新目标函数的先验分布;最后,算法测试由后验分布给出的全局最值最可能出现的位置的点。
对于贝叶斯优化算法,须要注意的是,一旦找到了一个局部最优值,它会在该区域不断采样,因此很容易陷入局部最优值。为了弥补这个缺陷,贝叶斯优化算法会在搜索和利用之间找到一个平衡点,“搜索”就是在还未取样的区域获取采样点;而“利用”则是根据后验分布在最可能出现全局最值的区域进行采样。
7.过拟合与欠拟合
问题1:在模型评估过程当中,过拟合和欠拟合具体是指什么现象?
过拟合是指模型对于训练数据拟合呈过当的状况,反映到评估指标上,就是模型在训练集上的表现很好,但在测试集和新数据上的表现较差;
欠拟合指的是模型在训练和预测时表现到很差的状况。
问题2:可否说出几种下降过拟合和欠拟合风险的方法?
下降“过拟合”的方法:
(1)得到更多的训练数据
(2)下降模型复杂度
(3)正则化方法
(4)集成学习方法
下降“欠拟合”风险的方法:
(1)添加新特征
(2)增长模型复杂度
(3)减少正则化系数