适合可解释的模型
解释blackbox机器学习,可视化的展示“黑箱"机器学习
InterpretML是一个开源软件包,用于训练可解释的模型并解释黑盒系统。可解释性主要表现在以下几点:
模型调试 - 模型哪里出现了错误?
检测偏差 - 模型表现出哪些区分能力?
策略学习 - 模型是否满足某些规则要求?
高风险的应用 - 医疗保健,金融,司法等
从历史上看,最容易理解的模型不是很准确,最准确的模型是不可理解的。 Microsoft Research开发了一种称为可解释增强机Explainable Boosting Machine(EBM)的算法,该算法具有高精度和可懂度。 EBM使用现代机器学习技术,如装袋和助推,为传统GAM(Generalized Additive Models)注入新的活力。 这使它们像随机森林和梯度提升树一样准确,并且还增强了它们的可懂度和可编辑性。
image除了EBM之外,InterpretML还支持LIME,SHAP,线性模型,部分依赖,决策树和规则列表等方法。该软件包可以轻松比较和对比模型,以找到最适合您需求的模型。
Python 3.5+ | Linux, Mac OS X, Windows
pip install numpy scipy pyscaffold pip install -U interpret很强大,比以前自己在做的繁琐EDA的时候便捷多了,marginal可以识别出变量的类型,比如连续变量或者类别型变量,可以计算出与Y的相关性系数等。
ExplainableBoostingRegressor(data_n_episodes=2000, early_stopping_run_length=50, early_stopping_tolerance=1e-05, feature_names=['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT'], feature_step_n_inner_bags=0, feature_types=['continuous', 'continuous', 'continuous', 'categorical', 'continuous', 'continuous', 'continuous', 'continuous', 'continuous', 'continuous', 'continuous', 'continuous', 'continuous'], holdout_size=0.15, holdout_split=0.15, interactions=0, learning_rate=0.01, max_tree_splits=2, min_cases_for_splits=2, n_estimators=16, n_jobs=-2, random_state=1, schema=None, scoring=None, training_step_episodes=1)
可以学习到每个特征在不同密度下的贡献分数
预测值与真实值比较下的不同特征重要性
回归任务评估指标为RMSE=3.82,R2=0.85(越接近1性能越好),已经很不错
LinearRegression, RegressionTree
from interpret.glassbox import LinearRegression, RegressionTree lr = LinearRegression(random_state=seed) lr.fit(X_train, y_train) rt = RegressionTree(random_state=seed) rt.fit(X_train, y_train)与线性回归、决策树模型作比较,还是EBM的性能强大
完整代码请见:https://github.com/yanqiangmiffy/quincy-python-v2