这一篇分享的是最近在kaggle上习得的Machine Learning for Insights Challenge,这是一个关于模型洞察力的主题知识,字面看这个ML for insights直译为机器学习的洞察力了,在我理解来则是模型可解释性分析。本文这里主要是将我看到的有用的内容按照自己的理解翻译并记录下来。
自己在玩kaggle和工作中用到最多的主要是树类模型(lgb,xgb)和神经网络(cnn, rnn),确实很少去思考其中模型的含义和解释性。如果让我自己回答如何解释模型预测结果这个问题,我理解到用决策树的信息熵计算统计概率得出叶子节点的重要性,再加上迭代拟合残差的思路就是xgb类的算法了。而神经网络方面,我则简单的理解为求导拟合。高中课本里的一次函数二次函数的求导大家都会,神经网络只是用链式法则给若干个矩阵求导罢了,思路还是朝着目标去拟合。
如此之粗浅,见笑了,下面看看学来的新玩法。
洞察数据的使用场景
一个模型中哪些信息是可解释的?
许多人认为机器学习模型是黑盒子,在他们认为模型可以做出很好的预测,但是大家无法理解这些预测背后的逻辑。确实是,很多数据科学家不知道如何用模型来解释数据的实际意义。所以这里将会从这么几个方面来讨论:
• 在模型看来,哪些特征是最重要的?
• 关于某一条记录的预测,每一个特征是如何影响到最终的预测结果的?
• 从大量的记录整体来考虑,每一个特征如何影响模型的预测的?
解释数据的价值在哪里?
从五个方面可以体现出“用模型解释数据”的价值。
价值一:调试模型
一般的真实业务场景会有很多不可信赖的,没有组织好的脏数据。工程师在预处理数据时就有可能加进来了潜在的错误,或者不小心做出了data leak,考虑各种潜在的灾难性后果,debug模型的思路就尤其重要了。当你遇到了用现有业务知识无法解释的数据的时候,深入了解模型预测的模式,可以帮助你快速定位问题,anyway,这一条对算法工程师意义重大。
价值二:指导特征工程
特征工程通常是提升模型准确率最有效的方法。通常涉及到到用各种算法操作原始数据(或者之前的简单特征),得到新的特征。有时候你完成特征工程的过程只用到了自己的直觉或者业务知识。其实这还不够,当你有上百个原始特征的时候,或者当你缺乏详细业务背景知识的时候,你将会需要更多的指导方向。
这个预测放贷结果的kaggle竞赛就是一个典型的例子,这个比赛有上百个原始特征。并且因为隐私原因,特征的名称都是f1, f2, f3等等而不是具有描述性的英文单词。这就模拟了一个场景,你没有任何业务方面直觉的场景。有一位参赛者发现了某两个特征相减f527, f528可以创建出特别有用的新特征,用到这个新特征的模型比其他模型优秀很多。但是当你面对几百个特征时,你如何创造出同样优秀的特征呢?这里将要介绍的用模型寻找重要特征的方法,用模型洞察两个特征相关性的方法,都会指导工程师在创作出优秀的特征。
价值三:指导未来数据收集方向
对于从网上直接下载来的数据,你