Data Visualization
数据可视化将数据编码为图表、绘图和地图,让模式、异常值和错误显现出来,应用范围从数据集审查到训练曲线。
数据可视化是以图形方式呈现数据,将数值编码为位置、长度、颜色或形状,并用图表、绘图、地图和带注释的图像展示,让人们能够发现数字表格中不易察觉的模式、离群值和错误。在探索性数据分析过程中,探索性可视化能帮助分析人员理解数据;John Tukey 在 1977 年出版的同名著作中倡导了这种实践。解释性可视化则用于向他人传达发现。在机器学习和计算机视觉领域,从业者借助数据可视化审查数据集、跟踪训练过程、诊断模型错误并解释预测结果。
可视化为何重要#
统计学家 Francis Anscombe 在 1973 年用四个小型数据集阐明了这一观点;这组数据如今称为 Anscombe 四重奏,它们的汇总统计数据几乎完全相同:
import matplotlib.pyplot as plt
import numpy as np
# Anscombe's quartet: four datasets of 11 (x, y) points each
x = [10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5]
quartet = {
"I": (x, [8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68]),
"II": (x, [9.14, 8.14, 8.74, 8.77, 9.26, 8.10, 6.13, 3.10, 9.13, 7.26, 4.74]),
"III": (x, [7.46, 6.77, 12.74, 7.11, 7.81, 8.84, 6.08, 5.39, 8.15, 6.42, 5.73]),
"IV": ([8] * 7 + [19] + [8] * 3, [6.58, 5.76, 7.71, 8.84, 8.47, 7.04, 5.25, 12.50, 5.56, 7.91, 6.89]),
}
# Print each dataset's summary statistics and draw its scatter plot side by side
fig, axes = plt.subplots(1, 4, figsize=(12, 3), sharex=True, sharey=True)
for ax, (name, (xs, ys)) in zip(axes, quartet.items()):
r = np.corrcoef(xs, ys)[0, 1]
print(f"{name}: mean y {np.mean(ys):.2f}, variance y {np.var(ys, ddof=1):.2f}, correlation {r:.3f}")
ax.scatter(xs, ys)
ax.set_title(f"Dataset {name}")
fig.savefig("anscombe.png")四个数据集的 y 均值都是 7.50,方差为 4.12 或 4.13,相关系数为 0.816 或 0.817,但绘制出来的图形却截然不同:数据集 I 是带噪声的线性趋势,II 是平滑曲线,III 是带一个离群值的完美直线,IV 则是一列垂直堆叠的点,其相关性完全来自一个远离其他点的点。Autodesk 的研究人员在 2017 年拓展了这一思路,提出 Datasaurus Dozen:这 13 个数据集的统计数据相同,其中一个绘制出来的形状是一只恐龙。
如何选择图表#
当图表的编码方式与要回答的问题相匹配时,图表才有效。比较不同类别适合用条形图,呈现时间趋势适合用折线图,展示分布适合用直方图和箱线图,呈现两个变量之间的关系适合用散点图,展示空间模式则适合用地图和热力图。William Cleveland 和 Robert McGill 在 1984 年的图形感知实验中发现,人们沿共同刻度判断位置最准确,其次是长度、角度、面积,最后是颜色深浅。因此,要进行精确比较,条形图和点图比饼图更合适。颜色最适合使用感知均匀且对色盲友好的色图来表示类别和数值,例如 Matplotlib 自 2.0 版起的默认色图 viridis。
机器学习中的可视化#
- 数据集偏差审查:类别直方图可以揭示类别不平衡,边界框位置和尺寸图可以显示物体是否总出现在某个区域或以某种尺寸出现,图像网格则能帮助发现标签错误。
- 损失函数曲线:按 epoch 绘制训练损失和验证损失可以展示模型的收敛情况;如果验证损失上升而训练损失下降,则说明模型过拟合。
- 混淆矩阵和精确率-召回率曲线:展示模型容易混淆哪些类别,以及置信度阈值变化时精确率与召回率之间的权衡。
- 带有 t-SNE 的嵌入图:t-SNE 等投影方法会将相似样本映射到二维空间中彼此相近的位置,从而揭示聚类、重复样本和离群值。
- 显著性图和预测叠加图:在图像上绘制边界框、掩码或关键点,并突出显示影响模型决策的像素。
TensorBoard 和 Weights & Biases 等实验跟踪工具会实时绘制多个训练运行中的这些指标,因此一旦验证损失开始上升,就能及时发现过拟合。Ultralytics YOLO 默认也会将核心图表保存到每次训练运行的文件夹中:labels.jpg 展示类别实例数量、边界框形状样本,以及边界框中心和框宽与框高的二维直方图;results.png 则会按轮次绘制所有损失和指标,验证过程还会生成混淆矩阵和精确率-召回率曲线。
数据可视化与相关术语的区别#
- 数据分析:检查、清理和建模数据以回答问题的更广泛流程。可视化是数据探索和结果报告的主要工具之一。
- 可解释人工智能(XAI):解释模型做出某项决策的原因;显著性图等可视化是其主要输出之一。
- 数据挖掘:利用算法自动在大型数据集中发现模式,可视化则经常用于呈现发现的模式。
- 仪表板:在一个屏幕上汇集多个图表,以跟踪关键指标随时间的变化,常见于商业智能工具和生产环境中的模型监控。










