题主,提问提错了。。
几年前思考过这问题,踩过的坑,分享一下。
模型评估为啥不用precision和recall?因为它支持不了我的决策啊。。
同样的问题,根据不同情况,我可以问100个:
为啥这个模型评估不用AUC?而要用logloss,因为它支持不了我的决策啊
为啥这个模型评估不用logloss,而要用ROI?因为它支持不了我的决策啊
为啥这个模型不用ROI logloss而只用recall,因为recall更支持我的决策啊
还有为啥还有PRC啊,F1,KS值啊,ROI,logloss值等一大堆指标?这些有啥用?这应该是很多新手都会疑惑的问题。也是我当年作为小白,看了一点书也会问的问题,后来看了大量案例和实践才慢慢有了体会的,一知半解的初学者,无法理解。。学校里没业务sense的教授,大多也解释不清楚。。
总之
题主搞清楚,先有决策需求,再有评估方案和指标的。。。而不是问,为啥不是所有模型的评估都用这套P&R的指标?这是挺奇葩的认知。。手里拿着锤子,见啥都是钉子,敲一敲么?
........
为了增强您对“决策需求”这个问题的理解,针对您的提问,先举个例子吧:
assume两个老哥AB,各做了一个欺诈识别模型pk,谁赢了就升职,out了就裁员,对于原始分布测试集,A测出来是precision80% recall 50%,B测出来两项各是70%和60%,那个模型更好呢?
A说了,我的模型精度更高,出来的人群包精度更高,很准啊,而且召回率也不低
B说了,我的模型召回率更高,而且精度也不低
听谁的呢?
业务VP某w总说话了:我们最做欺诈发现,主要是看recall召回率,precision低的可以用人工审核和增信手段进行管理,所以我觉得B的模型更好
A听了很不服气,突然心生一计,把自己逻辑回归模型里面sigmoid函数设01的阈值调了,变成0.4概率的为1,其他为0,模型也没重新训练,w权值向量也没动,但,就这样模型效果变成precision50%recall80%(这最低端的调参动作)
这时候,A得意洋洋的开吹了,你看,我这个模型是可以调的,现在我的recall80%了,更加满足了w总您的需求
谁知,B也调了一个参数,recall85%精度也接近,两个人吵的不可开交,快打起来了
w总又说话了,这你们两变来变去,要不你们把你们能调的参数都放进坐标轴去,看谁更合适吧
假的roc曲线图(轴已转换为recall和precision,数据很假,不太可能出现,只是for example)
看着这个图,w总说了,咱们这样,这两曲线也不知道谁更厉害,只能说各有千秋,要不咱公平点,用微积分的方式,谁的曲线和x轴的面积大,谁就整体来说,预测的更准,毕竟我看到B的曲线左边那块好像表现好一点,A的曲线在右侧只是略优于B
这就是AUC(ROC曲线下部分的面积),结果表明B的更好
似乎要下定论了,这时,一旁一直没说话的数据分析师开口了,他之前负责用数据统计的方式做这个预测,似乎是最有发言权的人
可他,竟然说
我不赞同w总这种评估方式,我认为b的更好,原因有二
1-w总说ab相交处,右侧面积a远远大于b,a在召回率低的情况下,精度大幅度高于b,这个没意义,因为我手工圈人也可以做到类似的精度,我们模型里面有几个逾期和拒接电话等违约行为特征,这种精度带来的auc面积提升没有太大意义
2-我更关注的是,在保持最低人工复核成本精度前提下,b竟然做到了95%的召回率,你要知道一个客户给我们带来数十万的损失,它帮我们多召回一个,提前干预得当,以我目前5块一个的审核成本计算,抵得上数百倍我的人工审核成本了,而a的模型在这块却表现不佳
3-我觉得模型创造价值最大的地方,是在于中间地带人群的识别,他们建模应该把那些铁定违约的人拿走,因为那些人都已经逾期和拒接电话了,傻的都知道啥情况,建议模型只对中间人群做预测,看谁分辩的更准,谁能帮我们提前发现可能违约的人,这才是模型真正创造业务价值的地方
综上,我更支持b模型!
W总听的连连点头,可还是没想好怎么选。。。
小朋友们,你会怎么选呢?
回过头来,想想题主你的问题,你觉得自己这个考虑问题的方式对吗?先有鸡,还是先有蛋?先考虑清楚决策需求,还是先考虑指标?
其实,很多答主,随便拷贝点网文或教科书都可以告诉你一大堆标准答案,但经验告诉我,这对增长初学者对模型评估的insight基本无益,因为没人帮你抓住最本质问题。。。
尝试解答你的疑惑,理清本质,我想向你指出2个关键问题,并和你分享我在这两个方面的洞察:
1-模型评估的目的有哪些?
2-不同目的,采用什么指标来做评估?
如果对两个问题有深入的思考,你学习数据挖掘模型的评估和调参,会更有感觉(机器学习感觉也接近,只是他们的数据sense和场景洞察会更难,比如nlp和ctr预估之类)
part1,模型评估的目的是什么?
一般来说,数据挖掘项目经理,在模型评估这个阶段一般要输出以下3个层面的递进结论:
1-模型调优:各个模型表现如何?在参数,训练集,特征,算法,cost function等方面,还有那些需要调整的地方?这时是为了要把模型迭代调整到最优状态。
2-模型筛选:对于调到各自最优状态的多个模型(不同参数不同算法不同特征组合甚至不同比例和样本权重设置的训练集),究竟那个模型表现更好?结合业务和技术角度,那个是更值得部署的冠军模型?作为建模人员你要有一个结论!
3-业务决策:跑完验证集评估,各个模型也调到最优状态了,也选好冠军模型了,这个冠军模型是不是work?work到什么程度?和原来的方案比怎么样?怎么跟业务部门老总解释这个模型的效果?如何帮助老板决定花多少预算在这个模型上?(可能是几十万,也可能是影响千万的生意)
以上这三个方面,可不是捣鼓那点数据集之类的问题,是每个项目都要经受的挑战
part2不同目的,要用到那些指标?怎么做分析?并得出结论?
对于1,模型调优方向问题
先看样本角度,ROC曲线,不同种类样本的recall precision,是否需要平衡,加权,删减等
再看特征角度,各个模型的特征权重,比如coef. gini 等,是否需要删除,添加,优化,组合,归一化,异常处理做的好不好
后看算法的技术参数角度,看cost function指标 比如logloss epoch-loss 熵 等指标,不同算法不一样,结合不同样本的分类效果,感受你需要调整的参数(有点玄,晕,但这真的很需要数据sense)
最后看具体模型的非技术参数角度,主要看precision和recall就行了
对于2,冠军模型的选择问题
如果是分类算法,假设各个模型都调到最优了,各个模型对着原始分布测试集跑一遍,看一下ROC,看测出来的AUC和KS之类的高阶指标就能解决冠军模型的筛选问题,precision和recall在这里作用基本没法用。也许这就是你的疑惑所在?哈哈。。我的案例应该解答了你的问题啦
另外像AUC KS logloss这些常用于模型筛选的指标最好都建立一下数据感觉,比如1比1样本里AUC值最低是0.5(这值就等于随机抽样了),但是样本比例变化后,p&r两个值会变化,你不要拿着不同分布样本集测出来的P&R来跟别人说模型筛选的事情。。。
对于3,模型部署的最终业务决策
主要靠测试集的precision和recall这种比较直接浅显的指标来解决,更重要的是要基于ROC或者别的曲线,甚至是直接模型上马以后,输入现实的成本和收益指标,去算不同pentile分数段的ROI等等(我刚才举的吵架的例子,往往是看不同分数段的召回率,及其每召回一个需要付出的人工审核成本,毕竟几十个只有一个是真的坏账),帮助老板做预算决策,因为数据挖掘模型的部署,往往意味着成本投入,和原有业务的重构,你要为高层的决策提供更进一步的各种数据支持。。
克劳备忘录也好,凯南电报也好,有两大共同点。首先,都是以现实主义的眼光去分析双方的关系。然后,给出的建议都是阳谋,并不是什么不可告人的阴谋,执行起来需要的不是鸡鸣狗盗的小聪明,而是惊人的意志力。
而美国现在战略界现实主义被边缘化,我推测,布热津斯基,基辛格那帮人应该写过不少。不过没所谓,美国能执行大战略的时代过去了。现在这一代精英上半年能管下半年就已经很了不起了。一个需要两代人以上持之以恒去完成的大战略,搞出来他们也执行不了。
冷战时期,从杜鲁门艾森豪威尔到肯尼迪尼克松,最后到李根老布什,个人性格和政治偏好差距不要太大,但是都忠实地完成了他们历史任务,沿着围堵政策做下去。这种战略定力和延续性,世间少见。在中国领导集团上能看见一些相似的东西,但是我们离得距离太近,反而看不清。但在美国精英层身上完全看不到这一点。
个人愚见。
这个4年前的问题选择在这个时间点突然出现在我今天的时间线上显得非常 亦可赛艇!
Android是2008年初才发布,而Oracle在2009年就以7.4B$收购了Sun,是Google不够睿智吗?
非也!
1)如果Android没有如此成功,Java对于Google而言就是一坨shit,Google从来没有想到自己会站在一坨翔上面取得空前的成功,如果有算命的告诉Google的命中贵人是阿翔,它就是穿越回去吃也要把它吃下去,可惜历史不能假设!
2)Google一直有python基因,很多系统都是基于python的,你知道工程师主导文化的可怕性吗?这帮pythonic的nerd出于情怀或者节操或者叫清高或者叫偏执或者叫真爱,它说什么都不会去买Java的,“老子看不上”!谁知造化弄人,09年你对我爱答不理,18年老子叫你高攀不起88亿!(注:今天的Google在各种收购之后,Java服务的比重占的也非常大了,变成了一个杂合的技术栈,而官司也很可能打到高院,尚未定论)
3)Google一直有跟开源保持共存共荣共襄盛举的传统,它跟Mozilla做生意,赞助开源项目,捐赠Wiki,主张“不作恶”,简直就是一副乌托邦理想主义者的化身,圈粉无数(包含答主),像Java这种项目,它更可能的方式是烧一笔钱给它花,然后来几句“希望Java明天会更好”之类的废话,它根本就不曾想过有一个家伙抄底了,因为那时候Android根本就没有火,Google从来就没有想过Java也T-M-D算哪门子“底”?
4)Sun的主手人也是个技术型的,就是技术牛掰业务做的稀烂,当时怎么看Sun都处在夕阳,SPARC也是逼格满满业务下滑被Intel捣的稀烂,那个价格没有几家觉得划算的,幸好是Oracle这种剑走偏锋的收购了它,要是换一家公司收购多半就把Sun雪藏甚至捣腾碎了,Java也就没有今日风光了,而Google在坊间也有创业公司杀手的美称,也许这就已经是历史发展的最好结果了。
什么,你问我对于Oracle收购Sun和MySQL怎么看?
还能怎么看?好白菜都让猪给拱呢呗!
但是作为吃瓜群众,我最喜欢看大佬们掐架,Google与Oracle的这场官司绝对酸爽,大家保持关注,各家都有千百号律师,吵起架来想想都 亦可赛艇!学知识产权法/专利法/法理学的同学们千万不要错过,说不定两年后就能进教材作案例呢!
什么,你又问我Google应该怎么做?
靠,我有不是劈柴!按我的观点,Google这次是违反了Java的使用协议的(无意引战,定论的事情留给专业法官),不能因为体量大就以为能压死人,那可是在美帝,万事全靠律师一张嘴,怎么讲都有理!
大家还记得微软以前有个skydrive吗?在英国被判败诉了,最后也得改名叫OneDrive呢!Google有钱了不起啊,过来领罚单!
而Java的坑早早就埋在那里了,所以苹果直接一刀切:老子不支持,免得搞一嘴毛!Flash一身毛病,一刀切,老子不支持!
所以,我对Google的建议是:
这TM不是关乎技术,不是关乎信仰,不是关乎生态,不是关乎用户体验!
这TM关系到命!
什么?要我预测结果?
法官中间调停,你们俩和解,google把赚的钱按每部手机给Oracle付钱?什么你说太扯了?你每买一部Android,都要给微软钱,你造吗?Oracle就想躺着就把钱收了!