在经过集成式学习(ensemble learning)之後的 tree based (像是 Random Forest, XGBoost, LightGBM) 机器学习演算法,该方法通常可以提高相当不错的模型成效。但是其中的理论很难让人去参透,常常被人诟病说是一个黑盒子。 一个黑盒子是很难去判断里面做了什麽事情,我们如果要进行做决策、改良模型等等,都需要了解这个演算法到底学习到了什麽。这时候模型解释就相当重要,有一块领域 Explainable AI 就是在探讨这方面的知识。
「人非圣贤,孰能无过」,机器与人一样不是圣贤,都可能会有犯错的可能性。当发生预测错误的时候,若我们能够透过解释型 AI 告诉合理的原因,或许可为下一次改版做一些根因探讨。
「科技始终来自於人性」,我们有时候很难跟我们的需求方讲解或讨论这些演算法的深奥的原理或数学知识,也随着我们越来越倚重机器学习产出的结果,我们势必也需要能了解其中的原因,我们才可以用的安心,让大家放心(好像推广产品XDDD)。
Shap 最早来源是赛局理论,详细可以参考wiki。Shap 是将模型的预测解释分析成每个因子的贡献,计算每个特徵的 shapely value,来衡量该特徵对预测的贡献度。如此一来,我们可以详细了解每个因子的贡献程度。
图片来源自 shap 的 github 连结
Shap 是一个可以将机器学习透过视觉化方式辅助理解的 Explainable AI 套件,优点如下
pip install shap
import xgboost
import shap
classifier = xgboost.XGBClassifier().fit(X_train, y_train)
explainer = shap.Explainer(classifier)
shap_values = explainer(X_train)
# waterfall
shap.plots.waterfall(shap_values[0])
# force plot
shap.force_plot(explainer.expected_value, shap_values.values[0,:], X_train.iloc[0,:])
红色代表正的贡献度、蓝色代表负的贡献度
shap.summary_plot(shap_values, X_train)
这张图真的是 shap 一大卖点,还可以操作 x 、y 轴 切换不同的维度看资料
# 看整体资料
shap.force_plot(explainer.expected_value, shap_values.values, X_train, plot_cmap="DrDb")
# bar plot
shap.plots.bar(shap_values)
# scatter plot
shap.plots.scatter(shap_values[:, "Age"], color=shap_values[:,"VIP"])
希望透过 shap 解释性 AI 套件可以帮助在机器学习迷惘在黑盒子的人们,藉此大家可以更广泛地应用机器学习所带来的服务。
更详细可以请参考连结
<<: [面试][人格特质]当你分享工作经验时会被问到的种种问题
本文将於赛後同步刊登於笔者部落格 有兴趣学习更多 Kubernetes/DevOps/Linux 相...
理解了 IP 位置的组成,我们接着来看看一些常被提到的相关名词:浮动、固定及虚拟 IP 位置。 浮动...
昨天我们写了第一个 GAS 程序: Hello World ,今天我们来拆解一下我们到底写了什麽东西...
前言 昨天谈到敏捷的重点是其背後的精神,而 Scrum 也不例外,但为什麽 Scrum 的导入还是这...
当您在Excel中直接输入AAAA,依旧是4个A,而喵喵酱我在Excel表格输入则是这个样子滴: 1...