大数据 频道

用于可解释机器学习的四个Python库

  【IT168 技术】我们知道,人工智能也可能存在偏差,随着大家对这一点的关注度越来越高,企业越来越需要能够对其模型产生的预测进行解释,了解模型本身是如何工作的。好的一点是,有越来越多的Python库正在开发中,试图解决这个问题。在这篇文章中,笔者将简要介绍四个最成熟的机器学习模型解释软件包。

  下面的库都是可以通过pip安装的,有非常友好的说明文档,并且在对解释进行可视化方面做了很多工作。

  Yellowbrick

  这个库本质上是scikit-learn库的一个扩展,它为机器学习模型提供了一些非常有用且好看的可视化效果。Visualiser对象——即核心接口——是scikit-learn估计器,因此如果你习惯使用scikit-learn,那么对这个工作流程应该非常熟悉。

  可以呈现的可视化包括模型选择、特征重要性和模型性能分析。

  让我们看几个简单的例子。

  该库可以通过pip安装。

  为了说明某些特性,我将使用一个红酒识别的scikit-learn数据集。这个数据集有13个特性和3个目标类,可以直接从scikit-learn库加载。在下面的代码中,我导入数据集并将其转换为数据帧。数据可以在分类器中使用,而不需要任何额外的预处理。

  我还使用scikit-learn将数据集进一步分解为测试和训练。

  接下来,让我们使用Yellowbricks visualiser查看数据集中的特性之间的关联。

  现在让我们安装一个随机森林分类器,并用另一个visualiser评估性能。

  ELI5

  ELI5是另一个可视化库,用于调试机器学习模型并解释它们所生成的预测。它与最常见的Python机器学习库协同工作,包括scikit-learn、XGBoost和Keras。下面我们使用ELI5来检查我们上面训练的模型的特性重要性。

  默认情况下,show_weights方法使用gain来计算权重,但是您可以通过添加importance_type参数来指定其他类型。

  您还可以使用show_prediction 检查单个预测的原因。

  LIME

  LIME(local interpretable model-agnostic explanations,与本地可解释模型无关的解释)是一个用来解释机器学习算法做出的预测的软件包。LIME支持从广泛的分类器中解释单个预测,并且内置了对scikit-learn的支持。

  让我们使用LIME来解释我们之前训练的模型中的一些预测。

  LIME可以通过pip安装。

  首先,我们建立解释器。这将训练数据集作为一个数组,模型中使用的特征的名称以及目标变量中类的名称。

  接下来,我们创建一个lambda函数,它使用模型对数据样本进行预测。这是借用了这个优秀的、更深入的LIME教程

  然后,我们使用解释器对选定的示例进行预测解释。结果如下所示,Lime生成了一个可视化视图,显示了这些特性是如何对这个特定的预测做出贡献的。

  MLxtend

  这个库包含许多机器学习的辅助函数,包括叠加和投票分类器、模型评估、特征提取以及工程和绘图。除了文档之外,这个论文也是一个很好的资源,可以让您更详细地了解这个包。

  下面我们使用MLxtend来比较投票分类器与其组成分类器的决策边界。

  同样,它可以通过pip安装。

  我使用的导入如下所示。

  下面的可视化一次只能处理两个特性,因此我们将首先创建一个包含特性proline和color_intensity的数组。选择这些是因为它们在我们之前使用ELI5检查的所有特性中具有最高的权重。

  接下来,我们创建分类器,将它们与训练数据相匹配,并使用MLxtend将决策边界可视化,输出如下代码所示。

  用于可视化和解释机器学习模型的库当然不止以上几个,这里罗列了其他一些有用的库。

  原文作者:Rebecca Vickery

0
相关文章