机器学习模型有强大而复杂的数学结构。了解其错综复杂的工作原理是模型开发的一个重要方面。 ...
机器学习模型有强大而复杂的数学结构。了解其错综复杂的工作原理是模型开发的一个重要方面。
在本文中,我们将深入探讨机器学习可视化的艺术,探索让我们理解复杂数据驱动系统的各种技术。文末,还提供了一个可视化示例的实践代码。
机器学习可视化(简称ML可视化)一般是指通过图形或交互方式表示机器学习模型、数据及其关系的过程。目标是使理解模型的复杂算法和数据模式更容易,使技术和非技术利益相关者更容易理解它。
可视化弥合了机器学习模型神秘的内部运作与我们通过视觉理解模式之间的差距。
模型结构可视化:常见的模型类型,如决策树、支持向量机或深度神经网络,通常由许多计算和交互层组成,人类很难掌握这些计算和交互。通过可视化,我们大家可以更轻松地查看数据如何流经模型以及转换发生的位置。
可视化性能指标:一旦我们训练了一个模型,我们就需要评估它的性能。可视化准确性、精确度、召回率和 F1 分数等指标有助于我们不难发现模型的表现以及需要改进的地方。
比较模型分析:在处理多个模型或算法时,结构或性能差异的可视化使我们也可以为特定任务选择最佳模型或算法。
特征重要性:了解哪些特征对模型的预测影响最大至关重要。特征重要性图等可视化技术能轻松识别驱动模型结果的关键因素。
可解释性:由于其复杂性,ML模型对人类创建者来说通常是“黑匣子”,因此很难解释他们的决定。可视化可以阐明特定特征怎么样影响输出或模型预测的鲁棒性。
利于沟通:可视化是一种通用语言,用于简单直观地传达复杂的想法。它们对于与管理层和其他非技术利益相关者有效共享信息至关重要。
了解数据如何流经模型对于了解机器学习模型如何将输入特征转换为其输出至关重要。
决策树具有大多数人都熟悉的类似流程图的结构。每个内部节点都表示基于特定功能值的决策。节点中的每个分支都表示该决策的结果。叶节点表示模型的输出。
这种结构的可视化提供了决策过程的直接表示,使数据科学家和业务利益相关者能够理解模型所学习的决策规则。
在训练过程中,决策树根据特定标准(通常是基尼杂质或信息增益)识别最能分离分支中样本的特征。换句话说,它决定了最具辨别性的特征。
可视化决策树(或它们的集合,如随机森林或梯度增强树)涉及其整体结构的图形渲染,清晰直观地显示每个节点的拆分和决策。树的深度和宽度以及叶子节点一目了然。此外,决策树可视化有助于识别关键特征,这些特征是导致准确预测的最具辨别性的属性。
功能清晰:决策树可视化就像剥开复杂性层,以揭示关键功能。这类似于查看决策流程图,其中每个分支表示一个特征,每个决策节点都包含我们数据的关键方面。
判别属性:决策树可视化的美妙之处在于它能够突出显示最具判别性的特征。这一些因素会严重影响结果,指导模型进行预测。通过可视化树,我们大家可以精确定位这些特征,从而了解驱动模型决策的核心因素。
通往精确度的路径:决策树上的每条路径都是通往精确度的旅程。可视化展示了导致特定预测的决策序列。这是理解我们的模型用来得出特定结论的逻辑和标准的黄金。
复杂中的简单:尽管机器学习算法很复杂,但决策树可视化具有简单性。它将复杂的数学计算转换为直观的表示形式,使技术和非技术利益相关者都可以访问。
机器学习中的决策树可视化示例:在 Iris 数据集上训练的决策树分类器 来源:作者
上图显示了在著名的 Iris 数据集上训练的决策树分类器的结构。该数据集由150 个鸢尾花样本组成,每个样本属于以下三个物种之一:setosa、versicolor 或 virginica。每个样品有四个特征:萼片长度、萼片宽度、花瓣长度和花瓣宽度。
根节点:在根节点处,模型确定花瓣长度是否为 2.45 厘米或更小。如果是这样,它将花归类为 setosa。否则,它将移动到下一个内部节点。
基于花瓣长度的第二次分割:如果花瓣长度大于 2.45 厘米,则树再次使用此功能做出决定。决定标准是花瓣长度是否小于或等于 4.75 厘米。
根据花瓣宽度进行分割:如果花瓣长度小于或等于 4.75 厘米,则模型接下来会考虑花瓣宽度并确定它是否高于 1.65 厘米。如果是这样,它将花归类为弗吉尼亚。否则,模型的输出是多色的。
根据萼片长度进行分割:如果花瓣长度大于 4.75 厘米,则模型在训练期间确定萼片长度最适合区分花色和维吉尼亚。如果萼片长度大于 6.05 厘米,则将花归类为弗吉尼亚花。否则,模型的输出是多色的。
可视化捕获了这种分层决策过程,并以一种比简单的决策规则列表更易于理解的方式表示它。
随机森林、AdaBoost、梯度提升和装袋等集成方法将多个更简单的模型(称为基础模型)合并到一个更大、更准确的模型中。例如,随机森林分类器包含许多决策树。在调试和评估集成时,了解组成模型的贡献和复杂的相互作用至关重要。
可视化集成模型的一种方法是创建一个图表,显示基本模型如何为集成模型的输出做出贡献。一种常见的方法是绘制基础模型的决策边界(也称为曲面),突出显示它们对特征空间不同部分的影响。通过研究这些决策边界如何重叠,我们大家可以了解基础模型怎么样产生集合的集体预测能力。
集成模型可视化示例:各个分类器如何通过调整其决策边界来适应不一样的数据分布。较暗的区域表示更高的置信度,即模型对其预测的置信度更高。较轻的区域表示置信度较低的区域 源
集成模型可视化还能够在一定程度上帮助用户更好地理解分配给集成中每个基本模型的权重。通常,基础模型对特征空间的某些区域有很强的影响,而对其他区域的影响很小。但是,也有几率存在从未对集成输出做出重大贡献的基本模型。识别权重特别低或特别高的基本模型有助于使集成模型更加稳健并提高其泛化性。
Visual ML 是一种使用低代码或无代码平台设计机器学习模型的方法。它使用户能通过用户友好的可视化界面创建和修改复杂的机器学习过程、模型和结果。Visual ML 不是追溯生成模型结构可视化,而是将它们置于 ML 工作流的核心。
简而言之,Visual ML 平台提供拖放式模型构建工作流程,允许各种背景的用户轻松创建 ML 模型。它们弥合了算法的抽象世界与我们通过视觉掌握模式和关系的天生能力之间的差距。
这些平台能节约我们的时间,并让我们快速构建模型原型。由于可以在几分钟内创建模型,因此训练和比较不同的模型配置很容易。然后,能更加进一步优化性能最佳的模型,也许能够正常的使用更以代码为中心的方法。
在许多情况下,我们不太关心模型在内部是如何工作的,而是有兴趣了解它的性能。对于哪种样品是可靠的?它经常在哪里得出错误的结论?我们该选择模型 A 还是模型 B?
在本节中,我们将介绍机器学习可视化效果,这些可视化效果有助于我们更好地了解模型的性能。
混淆矩阵是评估分类模型性能的基本工具。混淆矩阵将模型的预测与基本事实作比较,清楚地显示模型错误分类了哪种样本,或者它难以区分类别。
有了这一些信息,就可以直接计算精度、召回率、F1 分数和准确性等基本指标。
多类模型的混淆矩阵遵循相同的一般思路。对角线元素表示正确分类的实例(即,模型的输出与真实值匹配),而非对角线元素表示错误分类。
下面是一个小片段,用于为 sci-kit-learn 分类器生成混淆矩阵:
让我们看一下输出。如前所述,对角线中的元素表示真实的类,对角线外的元素表示模型混淆类的情况,因此得名“混淆矩阵”。
对角线:理想情况下,矩阵的主对角线应填充最高数字。这些数字表示模型正确预测类的实例,与真实类一致。看起来我们的模型在这里做得很好!
聚类分析根据特定特征对相似的数据点进行分组。可视化这些聚类可以揭示数据中的模式、趋势和关系。散点图中每个点根据其聚类分配进行着色,是可视化聚类分析结果的标准方法。聚类边界及其在要素空间中的分布清晰可见。成对图或平行坐标有助于了解多个要素之间的关系。
可视化聚类分析示例:由 k 均值聚类生成的两个不同数据聚类。您能够正常的看到,在这两种情况下,模型找到的聚类(颜色编码)都与数据中的实际聚类不匹配 源
一种流行的聚类算法 k-means 从选择称为质心的起点开始。一种简单的方法是从数据集中随机选取 k 个样本。
1它将每个样本与最近的质心相关联,从而创建由与同一质心关联的样本组成的聚类。
(均匀流形近似和投影)来减少维度,同时保留聚类结构。这些技术有助于有效地可视化高维数据。
t-SNE 获取复杂的高维数据,并将其转换为低维表示。该算法首先为每个数据点分配一个低维空间中的位置。然后,它查看原始数据,并考虑其相邻点,决定每个点在这个新空间中的实际位置。在高维空间中相似的点在新空间中被拉得更近,而那些不同的点被推开。重复此过程,直到点找到其完美位置。最终结果是一个聚类表示,其中相似的数据点形成组,使我们也可以看到隐藏在高维混沌中的模式和关系。这就像一首交响乐,每个音符都能找到它和谐的位置,创造出一个美丽的数据组合。
UMAP也试图在高维空间中寻找星团,但采用了不同的方法。以下是UMAP的工作原理:
邻居查找:UMAP 首先识别每个数据点的邻居。它确定在原始高维空间中哪些点彼此靠近。
比较不同的模型性能指标对于确定哪种机器学习模型最适合任务至关重要。无论是在机器学习项目的实验阶段,还是在重新训练生产模型时,通常都需要可视化来将复杂的数值结果转化为可操作的见解。因此,模型性能指标的可视化,如ROC曲线和校准图,是每个数据科学家和机器学习工程师都应该在其工具箱中拥有的工具。它们是理解和传达机器学习模型有效性的基础。
模型分析示例:使用 ROC 曲线和 ROC-AUC 指标比较三个不同的模型
在分析机器学习分类器和比较 ML 模型性能时,受试者工作特征曲线(简称 ROC 曲线)至关重要。ROC 曲线将模型的真阳性率与其假阳性率作为截止阈值的函数作对比。它描述了我们总是一定要做出的真阳性和假阳性之间的权衡,并提供了对模型判别力的洞察。
靠近左上角的曲线表示卓越的性能:该模型实现了较高的真阳性率,同时保持了较低的误报率。比较 ROC 曲线有助于我们最终选择最佳模型。
在二元分类中,我们感兴趣的是预测两种可能的结果之一,通常标记为阳性(例如,存在疾病)和阴性(例如,没有疾病)。
请记住,我们大家可以通过选择一个类作为正结果并将所有其他类指定为负结果,将任何分类问题转换为二元问题。因此,ROC曲线对于多类或多标签分类问题仍然有帮助。
如果我们将阈值设置为 0,则所有样本都将分配给阳性类,误报率为 1。因此,在任何 ROC 曲线图的右上角,您将看到曲线) 处结束。
如果我们将阈值设置为 1,则不会将任何样本分配给正类。但是,由于在这样的一种情况下,我们永远都不可能错误地将负样本分配给正类,因此误报率将为 0。您可能已猜到了,这就是我们在 ROC 曲线图的左下角看到的:曲线) 开始。
通过更改将样本分类为阳性的阈值来绘制这些点之间的曲线。由此产生的曲线(ROC 曲线)反映了真阳性率和假阳性率如何随着该阈值的变化而相互变化。
ROC 曲线显示了我们一定要在灵敏度(线 – 假阳性率)之间做出的权衡。用更通俗的术语来说,我们大家可以找到所有阳性样本(高灵敏度),或者确保我们的分类器识别为阳性的所有样本实际上都属于阳性类别(高特异性)。
考虑一个可以完美区分正样本和负样本的分类器:它的线,与我们最终选择的阈值无关。它的 ROC 曲线) 之间的直线。
因此,ROC曲线越接近图的左侧边界,然后是顶部边界,模型的判别性就越强,就越能满足敏感性和特异性目标。
为了比较不同的模型,我们一般不直接用曲线,而是计算曲线下的面积。这量化了模型区分正类和负类的整体能力。
这个所谓的 ROC-AUC(ROC 曲线 之间的值,值越高表示性能越好。事实上,我们的完美分类器将达到正好 1 的 ROC-AUC。
使用 ROC-AUC 指标时,必须记住基线——完全随机分类器的 ROC-AUC。如果个人会使用 np.random.rand() 作为分类器,则生成的 ROC 曲线) 的对角线。
比较模型分析示例:随机分类器的 ROC 曲线是对角线的,因此 ROC-AUC 为 0.5。以黄色显示的实际 ML 分类器的 ROC 曲线始终位于该线上方,ROC-AUC 为 0.78 源
使用 scikit-learn 生成 ROC 曲线和计算 ROC-AUC 格外的简单。只需在模型训练脚本中编写几行代码,即可为每个训练运行创建此评估数据。使用 ML 实验跟踪工具记录 ROC-AUC 和 ROC 曲线图时,您可以稍后比较不同的模型版本。
校准曲线虽然机器学习分类器通常为每个类输出介于 0 和 1 之间的值,但这些值并不意味着统计意义上的可能性或置信度。在许多情况下,这完全没问题,因为我们只对获得正确的标签感兴趣。但是,如果我们想报告置信水平以及分类结果,我们一定要确保我们的分类器经过校准。校准曲线是了解分类器校准情况的有用视觉辅助工具。我们还能够正常的使用它们来比较不同的模型或检查我们重新校准模型的尝试是否成功。
让我们再次考虑输出介于 0 和 1 之间的值的模型的情况。如果我们最终选择一个阈值,比如 0.5,我们大家可以将其转换为二元分类器,其中模型输出较高值的所有样本都分配给正类(反之亦然)。
校准曲线根据模型的输出绘制“正分数”。“正分数”是给定模型输出的样本实际属于正类的条件概率(P(样本属于正类模型的输出介于 0 和 1 之间))。
首先,看一下对角线。它代表了一个完美校准的分类器:模型的输出介于 0 和 1 之间,恰好是样本属于正类的概率。例如,如果模型输出 0.5,则样本属于正类或负类的几率为 50:50。如果模型对样本输出 0.2,则该样本属于正类的可能性只有 20%。接下来,考虑朴素贝叶斯分类器的校准曲线:您会看到,即使此模型输出 0,样本也有大约 10% 的几率为正。如果模型输出 0.8,则样本仍有 50% 的可能性属于负类。因此,分类器的输出不能反映其置信度。
计算“正数的分数”远非易事。我们应该根据模型的输出创建条柱,由于模型值范围内的样本分布通常不是均匀的,因此这很复杂。例如,逻辑回归分类器通常将接近 0 或 1 的值分配给许多样本,但很少输出接近 0.5 的值。您可以在 scikit-learn 文档中找到有关此主题的更深入讨论。在那里,您还可以进一步探索重新校准模型的可能方法,这超出了本文的范围。
就我们的目的而言,我们已了解了校准曲线如何以易于掌握的方式可视化复杂的模型行为。通过快速浏览图,我们大家可以看到模型是否经过良好校准以及哪个模型最接近理想。
超参数优化是开发机器学习模型的关键步骤。目的是选择超参数的最佳配置——超参数的通用名称,不是模型从数据中学习的,而是由其人类创建者预定义的。可视化可以帮助数据科学家了解不同超参数对模型性能和属性的影响。找到超参数的最佳配置本身就是一项技能,远远超出了我们将在这里重点关注的机器学习可视化方面。要了解有关超参数优化的更多信息,我推荐这篇由前 Amazon AI 研究人员撰写的关于提高 ML 模型性能的文章。
系统超参数优化的常用方法是创建可能的参数组合列表,并为每个参数组合训练一个模型。这通常称为“网格搜索”。
例如,如果您正在训练支持向量机 (SVM),您可能希望尝试参数 C(正则化参数)和 gamma(核系数)的不同值:
使用 scikit-learn 的 GridSearchCV,您可以为每个可能的组合(使用交叉验证策略)训练模型,并找到与评估指标相关的最佳组合:
但我们通常不仅对找到最佳模型感兴趣,还想了解其参数的影响。例如,如果一个参数不影响模型的性能,我们就不需要浪费时间和金钱来尝试更多不同的值。另一方面,如果我们看到随着参数值的增加,模型的性能变得更好,我们可能希望为这个参数尝试更高的值。下面是我们刚刚执行的网格搜索的可视化效果:
网格搜索可视化示例:使用不同值的 gamma 和 C 进行 SVM 分类器训练如何在测试集上执行 源
从图中可以看出,伽马的值对支持向量机的性能影响很大。如果伽玛设置得太高,则支持向量的影响半径很小,即使通过 C 进行大量正则化,也可能导致过度拟合。在这种情况下,任何支持向量的影响区域都跨越整个训练集,使模型类似于线性模型,使用超平面来分隔不同类别的密集区域。最佳模型位于 C 和 gamma 的对角线上,如第二个绘图面板所示。通过调整 gamma(较低的值表示更平滑的模型)和增加 C(较高的值表示更强调正确的分类),我们可以遍历这条对角线以获得性能良好的模型。
即使从这个简单的示例中,您也能够正常的看到可视化对于深入了解模型性能差异的根本原因有多么有用。这就是为什么许多机器学习实验跟踪工具使数据科学家能够创建不同类型的可视化来比较模型版本的原因。
特征重要性可视化提供了一种清晰直观的方式来掌握模型决策过程中每个特征的贡献。在许多应用中,了解哪些特征会显著影响预测至关重要。从机器学习模型中提取有关特征重要性的见解有很多不同的方法。从广义上讲,我们大家可以将它们分为两类:
某些类型的模型(如决策树和随机森林)本身包含特征重要性信息作为其模型结构的一部分。我们需要做的就是提取和可视化它。
在下文中,我们将查看每个类别的一个示例:随机森林模型的杂质平均减少方法和与模型无关的 LIME 可解释性方法。您可能想要研究的其他方法包括排列重要性、SHAP 和积分梯度。
就本文而言,我们不太关心如何获取特征重要性数据,而是关心其可视化。为此,条形图是结构化数据的首选,每个条形的长度表示要素的重要性。热图显然是图像的最爱,而对于文本数据,突出显示最重要的单词或短语是典型的。
在业务环境中,特征重要性可视化是利益相关者沟通的宝贵工具。它提供了一个直截了当的叙述,展示了主要影响预测的因素。这种透明度增强了决策能力,并可以培养对模型结果的信任。
杂质(不纯度)的平均减少量是衡量每个特征对决策树性能的贡献的指标。要理解这一点,我们首先需要了解“杂质”在这种情况下的含义。
假设我们有一个水果篮,里面有苹果、梨和橙子。当水果片放在篮子里时,它们被彻底混合,我们可以说这套水果的杂质很高。
决策树中的每个节点都减少了杂质——粗略地说,它有助于按目标标签对训练样本进行排序。假设一个特征是树中许多节点的决策标准,并且它可以有效地干净地划分样本。在这种情况下,它将负责决策树总体上实现的杂质减少的很大一部分。这就是怎么回事查看一个特征所负责的“杂质平均减少”是衡量特征重要性的一个很好的指标。
幸运的是,可视化并不难阅读。我们大家可以清楚地识别模型的主要驱动因素,并在特征选择中使用这些信息。将模型的输入空间减少到最关键的特征可以降低其复杂性,并可以防止过度拟合。
此外,了解特征重要性有助于数据准备。重要性较低的要素可能是移除或合并的候选要素,从而简化了输入数据预处理。
不过,在我们继续之前,我想提一下一个重要的警告。由于节点的杂质减少是在训练期间确定的,因此使用训练数据集,“杂质的平均减少”不一定转化为以前看不见的测试数据:
假设我们的训练样本已编号,此编号是模型的输入特征。然后,如果我们的决策树足够复杂,它可以只知道哪个样本具有哪个标签(例如,“水果 1 是橙子”、“水果 2 是苹果”......数字特征的杂质平均减少将是巨大的,它将在我们的可视化中作为一个很重要的特征出现,尽管在将我们的模型应用于以前从未见过的数据时,它绝对没用。
局部可解释性方法旨在阐明模型在特定实例中的行为。(与此相反的是全局可解释性,即检查模型在其整个特征空间中的行为。
局部可解释模型不可知解释 (LIME) 和产生重要特征的示例 来源:作者
最古老且仍然普遍的使用的技术之一是 LIME(本地可解释模型不可知解释)。为了揭示每个输入特征对模型预测的贡献,需要拟合一个线性模型,该模型近似于模型在特征空间特定区域的行为。粗略地说,线性模型的系数反映了输入要素的重要性。结果可以可视化为特征重要性图,突出显示对特定预测最有一定的影响力的特征。局部可解释性技术能从复杂的算法中提取直观的见解。这些结果的可视化能支持与业务利益相关者的讨论,或者成为与领域专家交叉检查模型学习行为的基础。它们提供实用的、可操作的见解,增强对模型复杂内部运作的信任,并能成为促进机器学习采用的重要工具。
在本节中,我将分享有关将模型可视化无缝集成到日常数据科学和机器学习例程中的技巧。
在深入研究模型可视化之前,请确定一个明确的目的。问问自己,“我打算通过可视化实现哪些具体目标?
始终采用自上而下的方法。这在某种程度上预示着您从非常抽象的级别开始,然后更深入地探索以获得更加多见解。例如,如果您正在寻求提高模型的性能,请确保首先从简单的方法开始,例如使用简单的折线图绘制模型的精度和损失。
假设您的模型过拟合。然后,您能够正常的使用特征重要性技术根据特征对模型性能的贡献对特征进行排名。您可以绘制这些特征重要性分数,以可视化模型中最具影响力的特征。重要性较高的特征可能指向过拟合和信息泄露。
同样,您可以为相关要素创建部分依赖关系图。PDP 显示目标变量的预测如何随着特定特征的变化而变化,同时保持其他特征不变。您必须查找曲线中的不稳定行为或剧烈波动,这可能表明由于该特征而导致的过度拟合。
选择正确的工具取决于手头的任务和工具提供的功能。Python 提供了大量库,如 Matplotlib、Seaborn 和 Plotly,用于创建静态和交互式可视化。特定于框架的工具(例如用于 TensorFlow 的 TensorBoard 和用于 scikit-learn 的 scikit-plot)对于特定于模型的可视化非常有价值。
请记住,模型可视化是一个迭代过程。根据团队和利益相关者的反馈一直在优化可视化效果。最终目标是使您的模型透明、可解释且可供所有利益相关者访问。他们的意见和一直在变化的项目要求可能意味着您要重新考虑和调整您的方法。将模型可视化整合到您的日常数据科学或机器学习实践中,使您能够清晰、自信地做出数据驱动的决策。无论您是数据科学家、领域专家还是决策者,将模型可视化作为常规实践都是充分的利用机器学习项目潜力的关键一步。
有效的机器学习模型可视化是任何数据科学家不可或缺的工具。它使从业者能轻松的获得洞察力,做出明智的决策,并透明地传达结果。在本文中,我们介绍了大量有关如何可视化机器学习模型的信息。总而言之,以下是一些关键要点:
模型结构可视化可帮助数据科学家、AI 研究人员和业务利益相关者了解复杂的算法和数据流。