赞
踩
模型的开发,目前在互金领域场景中因为变量多,开发周期短,目前用得最多的就是XGB、LGB这类的机器学习模型。
比如我们之前跟大家输出的关于个人信贷反欺诈评分卡的开发内容里,我们用的就是lightgbm来建模的,相关的操作细节如下:
关于这一类机器学习模型,虽然说有黑箱的内容在里面,但常规上我们还是可以用特征重要性,也就是feature_importance来查看特征对模型重要度的贡献:
【图:绘制lgb模型的特征重要性的排序图】
关于模型特征可解释性的的内容,除了如以上提供的模型都有importance这一接口外,目前常用的还有SHAP这一个模型可解释性的内容,今天我们跟大家讲讲这个内容,而且还会实操一个只能用SHAP来演绎模型特征重要性的算法。
一.SHAP介绍
可解释机器学习在这几年慢慢成为了机器学习的重要研究方向。作为数据科学家需要防止模型存在偏见,且帮助决策者理解如何正确地使用我们的模型。越是严苛的场景,越需要模型提供证明它们是如何运作且避免错误的证据
关于模型解释性,除了线性模型和决策树这种天生就有很好解释性的模型意外,sklean中有很多模型都有importance这一接口,可以查看特征的重要性。如这里提到的特征重要性的内容:
关于特征的重要性,比如上面我们用xgboost这种集成模型时是用feature_importance方法的。那对于某些算法,比如异常检测中的孤立森林算法,只能用shap value来表达。
二.如何实现SHAP
实现SHAP,可以直接调用SHAP模块就能实现。本次在实操过程中,我们用之前跟大家介绍过的孤立森林这个算法,来特别实现,因为孤立森林接口直接调不出feature_importance的。
如上所述,shap是Python开发的一个"模型解释"包,可以解释任何机器学习模型的输出。其名称来源于SHapley Additive exPlanation,在合作博弈论的启发下shap构建一个加性的解释模型,所有的特征都视为“贡献者”。对于每个预测样本,模型都产生一个预测值,shap value就是该样本中每个特征所分配到的数值。
Python中shap值的计算由shap这个package实现,下面我们对训练出的base_iforest模型,计算其shap值。先引用package并且获得解释器explainer,再获取各个样本的shap值,然后调用summary_plot绘制重要性排序图,可以看到绘制出的图表类似xgboost的feature_importance图,shap value可理解为一个特征对目标变量影响程度的绝对值的均值作为这个特征的重要性。
关于本文所提及的机器学习模型相关的数据集跟代码实操内容,可以同步至知识星球后台,查看完整版本内容,欢迎星球同学移步到知识星球查收完整内容:
…
~原创文章
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。