数据可视化是指使用图表、图形、绘图和仪表板等视觉元素以图形方式表示数据。它有助于向利益相关者或观众解释复杂的数据,他们可以使用这些数据进行决策。
机器学习中的数据可视化会直接影响模型的质量、您做出的决策以及他人对您工作的理解。
可视化贯穿整个 ML 工作流,从收到原始数据到模型的最终评估。以下是风险在每个阶段出现的位置。每个步骤中提到的可视化技术将在后面的章节中详细讨论。
在开始任何分析之前,您需要了解正在处理的内容。这意味着要检查 Missing Values、不一致的数据类型和重复记录,因为此阶段数据的任何结构性问题都会悄然破坏后续所有内容。缺失值热图、数据类型分布图和记录频率图能在你投入时间构建数据之前,快速且可靠地了解数据的健康状况。
探索性数据分析有助于在构建任何内容之前了解数据集中的结构、分布和关系,通过使用直方图、散点图、相关矩阵、箱形图和配对图来呈现原始数据无法揭示的模式、异常和关系。EDA 在本质上是一种迭代:您要将某些内容可视化,提出假设,对其进行测试,然后再次将其可视化,直到您真正理解数据告诉您什么。
在了解原始数据后,您可以开始转换并为模型选择功能。此时对数据进行可视化可以让您检查转型是否按预期进行,并帮助您确定哪些功能真正有用。理解分布图、特征重要性图表或特征在不同目标组中的行为方式,可以将任意预处理转变为可以清楚证明合理性的选择。
随着机器学习模型的训练,可视化不再是检查数据,而是成为跟踪模型学习过程的一种方式。学习曲线或损失曲线等图表可揭示模型是在改进、趋于平稳还是过拟合。这些反馈可让您在作业完成之前微调超参数、调整正则化或更改训练持续时间。
训练结束后,可视化使您超越单一的准确率数字,真正了解模型的表现。混淆矩阵、ROC 曲线、精确度-召回率曲线和残差图都揭示了模型行为的不同维度。它们按类别、阈值和预测值范围细分性能,不仅知道模型表现如何,还能知道它在哪些方面成功,哪些方面不足。
了解机器学习中使用的数据可视化类型意味着要从用例的角度思考,而不仅仅是图表名称。以下是对其的结构化细分。
直方图显示单个数值功能的分布情况。它在 x 轴上将数值拆分为分箱,并计算 y 轴上属于每个分箱的数据点数量。在 Python 中,使用 matplotlib 或 seaborn 等工具,绘制直方图可以快速显示特征是正常、右倾、双峰还是接近均匀。
每种模式代表不同的预处理步骤。 例如,您可能会绘制产品价格的直方图,并看到大多数价格都在 50 美元以下,但有一个很长的范围达到 500 美元。这种模式表明,在模型中使用该功能之前,进行对数转换会使其优点提升。
散点图在 x 轴和 y 轴上放置两个数值变量,每个数据点表示为一个点。 它们有助于观察线性和非线性模式,识别簇形成的位置,并标记那些远离数据的异常值。例如,将房屋大小与销售价格绘制出来,可能显示出清晰的上升趋势,直到某个尺寸阈值后价格趋于平稳,这一模式值得在训练前进行调查。
相关矩阵显示数据集中每个数值功能之间的成对相关性。以热力图形式呈现,单元颜色编码相关强度,使多重共线性一目了然。相关性为 0.95 或更高的特征通常是特征选择过程中需要删除的候选特征,因为它们带有冗余信息。
相关性只捕捉线性关系,因此接近零的相关性并不意味着两个功能是独立的。例如,住房数据集中的“房间总数”和“卧室总数”几乎总是显示出非常高的相关性,同时保留两者不会向模型添加新信息。
箱形图通过显示中位数、数据的主要范围(四分位距)和任何异常值,快速总结变量的分布情况。它们在机器学习中特别有用,可以比较数值功能在不同目标群体之间的差异,例如查看拖欠贷款和不拖欠贷款的人的收入。
配对图为数据集中每个数值功能组合生成散点图网格,沿对角线排列直方图或密度图。Seaborn 的 pairplot() 函数在一行中生成这些图。对于多达 10-15 个功能的数据集,配对图提供了快速的多变量概览,而这需要许多独立图才能复制。
在这种情况下,特征仅指数据集中的各个列,例如年龄、收入或购买频率。例如,销售数据集的配对图可能很快就会显示出收入和销售单位的变化趋势密切相关,而贴现率与这两者之间没有太多关联。这样的洞察分析可以帮助您决定哪些功能值得保留。
密度图就像平滑版的直方图。它们可用于比较某项功能在两个组之间的分布情况。当曲线相距较远时,该功能通常具有很强的预测价值。但是,如果它们重叠,那就没有帮助了。
例如,如果您将忠诚客户与流失客户的“购买频率”密度绘制成图表,且两条线形成明显独立的峰值,那么这是良好的迹象,表明该功能将在客户流失预测模型中提供帮助。
模型训练完成后,您可以提取功能重要性得分,并将其可视化为柱状图,以查看哪些功能最为重要。基于决策树的模型是常见的例子,因为它们可以自然地提供这些重要性分数。重要性很低的功能通常是很好的去掉对象,Plotly 或 Matplotlib 等工具即使有很多功能,也能轻松生成这些图表。
这些图比较功能在转型(缩放、编码、对数变换)前后的分布,并确认预处理步骤是否达到预期效果。这种比较很重要,因为将转换不当的功能输入到模型中可能会导致预测偏差,而一个简单的并排图就能在问题进入训练之前进行检测。
学习曲线是一种模型训练可视化方式,y 轴上绘制了模型性能(准确性或损失),x 轴上显示了训练集大小或训练迭代次数,并用单独的线表示训练和验证。
这种单一的可视化方法可以诊断两种最常见的 ML 模型故障模式:过拟合(训练和验证性能之间的巨大差距)和欠拟合(两条线都很低并快速收敛)。在看到学习曲线后,调整模型复杂性、正则化或训练数据大小就变得有针对性,而不是猜测。
对于深度学习模型来说,绘制随时间推移的训练损失和验证损失是标准做法。如果验证损失停止改善或开始增加,而训练损失继续下降,则需要提前停止训练。这些图通常在培训期间通过 TensorBoard 等工具实时生成。
更广泛地说,跟踪训练迭代的任何指标(准确率、F1 分数、曲线下面积)的折线图可以连续展示模型的演变情况。它们比单个训练结束指标提供的信息更丰富,因为它们显示了轨迹,而不仅仅是目的地。
混淆矩阵是一种模型评估可视化类型,它在网格中列出实际类标签和预测类标签的每种组合(真正、真负、假正和假负),以便您可以准确地看到模型的正确位置和错误位置错误。
它是大多数分类指标的基础;精度、召回率和 F1 分数均从中得出。它呈现为热图,并带有显示计数或百分比的注释,使类级别的故障立即清晰可见。如果某个模型的准确性“看起来不错”,但关键类为空行,那么它在混淆矩阵中就会立即显示为故障。
ROC 曲线绘制了在每个可能的分类阈值(从 0 到 1)下,真正例率与假正例率的对比情况。曲线下面积 (AUC) 用一个数字总结了整体模型的判别能力:0.5 代表随机猜测,1.0 代表完美。当比较多个模型或当假阳性和假阴性的成本不同时,ROC 曲线特别有用。scikit-learn 和 plotly 等工具都具有生成它们的内置支持。
当数据集严重不平衡时,精确度-召回率曲线比 ROC 曲线更能真实地反映模型性能。强大的分类器向图的右上角推进,可在不牺牲召回率的情况下保持高精度。它在不同的决策阈值上绘制了纵轴为精确度、横轴为召回率的曲线图。
在医疗诊断或欺诈检测等高风险领域,未能发现罕见病例造成的影响远比误报更大,因此这条曲线通常比任何其他方法都能告诉您更多信息。
对于回归模型,残差图显示预测值与实际值之间的差异(残差)在 y 轴上,预测值在 x 轴上。残差应围绕零随机分布,没有明显的规律。如果残差呈扇形分布、曲线状分布或簇状分布,则表明该模型存在结构性问题,它无法捕捉数据中关系的某些方面。
Matplotlib 是其他所有功能的开源基础。其“pyplot”模块(导入为“plt”)可处理标准图、直方图、散点图、折线图、柱状图等多种图种。与较新的库相比,它的语法比较冗长,但这种冗长性使您可以精确控制每个细节:注释、轴标签、图形布局和大小。
Seaborn 基于 matplotlib,并大幅减少了样板代码。在 matplotlib 中需要 15 行的热图、配对图或箱形图在 seaborn 中只需一到两行。它直接从 pandas DataFrame 读取,这使其成为 Jupyter Notebook 环境中 EDA 的首选。
当您的输出需要交互式时,Plotly 是正确的选择。图表以 HTML 形式渲染,允许浏览者悬停在数据点上,放大并切换系列,使其在通过仪表板或网络报告向利益相关者展示结果时,比静态图片更实用。
NumPy 本身不是可视化工具,但它是几乎所有可视化工作流的核心,处理 matplotlib 和 seaorn 所依赖的数组操作和 x 轴/y 轴数据准备。
Yellowbrick 专为 ML 评估而构建。它封装了 scikit-learn,并在一次函数调用中生成混淆矩阵、ROC 曲线、学习曲线和函数重要性图,省去了Matplotlib所需的手动连接。
TensorBoard 负责深度学习方面。它在训练过程中流式传输实时训练指标、损失曲线和模型图,这对于监控大型数据集和长时间运行的神经网络作业是必不可少的。
有效的数据可视化不仅仅是选择正确的图表,还在于避免悄然产生误导的模式。
机器学习中的数据可视化并不是最后的完成步骤,而是贯穿项目的每个阶段。数据科学家如何诊断表格中看不到的问题,发现指标掩盖的模型故障,向利益相关者传达发现,并在工作流程的每个阶段做出自信的数据驱动决策。
养成在每个阶段都有意识地进行可视化的习惯,是您可以做的最简单、最有效的事情之一,可以提高模型的质量和思维的清晰度。
使用面向 AI 构建器的新一代企业级开发平台 IBM watsonx.ai,可以训练、验证、调整和部署生成式 AI、基础模型和机器学习功能。使用一小部分数据,即可在很短的时间内构建 AI 应用程序。
借助 IBM 业界领先的人工智能专业知识和解决方案组合,让人工智能在您的业务中发挥作用。
通过增加 AI 重塑关键工作流程和运营,最大限度提升体验、实时决策和商业价值。