社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

机器学习可视化技术概览(Python)

数据STUDIO • 2 年前 • 607 次点击  


本文介绍通过机器学习的可视化技术以解释和理解模型这个"黑盒子"的开发与运作。

机器学习的可视化(VIS4ML)是利用可视化技术来解释和理解机器学习模型的过程。由于数据质量极大地影响了机器模型的性能,如图1,本文从数据出发,了机器学习模型输入常见的五种数据类型,并介绍了六个以数据为中心的任务应用于来自机器学习流程不同阶段的三种类型的操作数据及机器学习可视化工具与技术,帮助大家更好地理解、诊断和完善机器学习模型。


图1 以数据为中心的分类法。ML 模型的输入数据由五种不同类型组成 (c)。六个以数据为中心的任务 (d) 应用于来自 ML 管道 (a) 不同阶段的三种类型的操作数据 (b),以帮助人们理解、诊断和完善 ML 模型。


1  常见数据类型

机器学习模型处理的五种数据类型为表格数据、序列数据、多维数组、图形和多模态数据。

对这些数据类型进行分类和操作非常重要,因为不同类型的数据可能需要不同的操作来理解、诊断和完善机器学习模型。通过对这些数据类型进行分类和操作,用户可以更好地了解数据和对其进行操作的模型,从而实现更有效和高效的机器学习工作流程。

1.1 表格数据

表格数据是一种按行和列组织的结构化数据,其中每行代表一个实例,每列代表一个特征。表格数据可能需要特征工程和选择来提高模型性能。例如,特征工程可以涉及将原始数据转换为更有意义的特征,这些特征可以更好地表示数据中的底层模式。特征选择可以涉及选择最相关特征的子集以减少数据的维度并提高模型性能。表格数据通常用于分类、回归和聚类任务,例如客户细分、欺诈检测、信用评分和客户流失预测。它还用于医疗保健等领域,可用于疾病诊断和患者风险分层等任务。
机器学习中处理表格数据相关的关键挑战之一是管理大量特征并从其复杂的协作效果(即特征交互)中学习信息。传统的机器学习模型(例如支持向量机、逻辑回归、决策树)和深度学习模型(例如多层感知)都已应用于此类数据。其他挑战包括处理缺失数据、处理不平衡数据集以及避免过度拟合。

1.2 序列数据

序列数据是一种具有时间或顺序顺序的数据,例如时间序列数据或自然语言文本。序列数据可能需要注意机制来捕获长期依赖性。例如,一个包含 k 个单词的句子是 k 个标记的序列。每个标记都是一个特征向量,例如单词的嵌入向量。例如,注意力机制可以帮助模型在进行预测时关注序列中最相关的部分。序列数据进行操作的机器学习模型可以使用循环神经网络 (RNN) 或转换器来捕获数据点之间的时间依赖性。序列数据通常用于自然语言处理任务,例如语言建模、机器翻译和情感分析。它还用于股票价格预测、天气预报、能源需求预测等时间序列预测任务。
在机器学习中处理顺序数据相关的一项挑战是需要捕获数据点之间的长期依赖性。这可以使用RNN中的注意力机制或记忆单元来解决。另一个挑战是序列的长度不同,这使得有效处理数据变得困难。此外,序列数据可能需要预处理步骤,例如标记化或填充,以确保序列长度相等。

1.3 多维数组数据

多维数组数据是一种由一组实例组成的数据类型,每个实例都是在空间上组织成规则网格结构的标量值数组。例如,灰度图像可以被视为沿宽度和高度维度存储图像像素的二维数组。多维数据需要处理大量的像素和通道,通常用于图像和视频处理任务,例如目标检测、图像分类和视频分割。它还用于其他领域,例如医学成像,可用于肿瘤检测和分割等任务。对多维数组数据进行操作的机器学习模型可以使用卷积神经网络 (CNN) 从数据中提取特征。

在机器学习中处理多维数组数据相关的一项挑战是需要学习大量参数。例如CNN可能有数百万个参数需要在大型数据集上进行训练。另一个挑战是需要处理大量数据,这在计算上可能会很昂贵。此外,多维数组数据可能需要预处理步骤,例如标准化或数据增强,以提高模型性能。

1.4 图数据

图数据是一种通常由一组节点和一组边表示的数据。节点包含特征信息,边记录节点之间的连接。图数据需要考虑节点和边之间的关系。对图数据进行操作的机器学习模型可以使用图神经网络(GNN)来捕获图的结构信息并学习可用于下游任务的节点嵌入。图数据常用于社区检测、链接预测和影响力最大化等社交网络分析任务。它还用于推荐系统,可用于对用户-项目交互进行建模并做出个性化推荐。在生物信息学中,图形数据可用于表示蛋白质-蛋白质相互作用网络或基因调控网络。
在机器学习中处理图数据相关的一项挑战是需要捕获图中节点之间的复杂关系。这可以使用GNN来解决,GNN可以根据节点的连接模式学习在节点之间传播信息。另一个挑战是图表的大小不同,这使得有效处理数据变得困难。此外,图数据可能需要预处理步骤,例如节点特征工程或图标准化,以提高模型性能。

1.5 多模态数据

多模态数据是一种包含多种类型数据的数据,例如图像和文本。这就需要考虑如何整合不同类型的数据。多模态数据可能需要融合技术来组合不同模态的数据。例如,分析社交媒体帖子的模型可以使用文本内容和随附图像来预测帖子的情绪。由于数据的格式和模式各不相同,处理多模式数据可能具有挑战性。多模态数据通常用于语音识别、图像字幕和视频分析等应用。它还用于医疗保健领域,可用于集成来自多个来源的信息,例如医学图像、电子健康记录和患者生成的数据。多模态数据可以更全面地了解数据中的底层模式,并提高机器学习模型的准确性。
机器学习中处理多模态数据的关键挑战之一是以有意义的方式集成来自不同模态的信息。这可能涉及设计适当的融合技术,以捕获每种模态的补充信息。另一个挑战是处理不同的数据格式和模式,这可能需要预处理步骤,例如特征提取和标准化。此外,多模态数据可能需要专门的机器学习模型来处理数据的复杂性。

2  机器学习流程

机器学习流程通常包括数据预处理、特征工程、模型选择、训练、评估和部署等步骤。

2.1 数据预处理

数据预处理是准备用于机器学习模型的原始数据的过程。这可能涉及多种步骤,例如清理数据以消除错误或不一致、将数据转换为更合适的格式以及选择相关特征的子集。数据预处理很重要,因为它可以提高数据的质量,并使机器学习模型更容易从数据中学习。
数据预处理在机器学习中很重要,因为它可以提高数据的质量,并使机器学习模型更容易从数据中学习。通过清理数据并选择相关特征,数据预处理可以降低噪声并提高数据中的信噪比。通过缩放特征并降低数据维度,数据预处理可以使机器学习模型更容易从数据中学习并避免过度拟合。总体而言,数据预处理可以提高机器学习模型的准确性和效率

2.2 特征工程

特征工程是从原始数据中选择、转换和创建特征以提高机器学习模型性能的过程。它涉及识别可以帮助模型学习数据模式的相关特征,并创建捕获重要信息的新特征。特征工程是机器学习流程中的重要一步,可以对模型的准确性和效率产生重大影响。
特征工程是为了提高机器学习模型的性能,使其能够更好地学习数据中的模式。通过选择、转换和创建特征,特征工程可以帮助模型识别数据中的相关特征,并捕捉重要信息。特征工程可以提高机器学习模型的准确性和效率,并减少模型训练的时间和资源消耗。
特征工程中使用的一些常见技术包括特征选择、特征缩放、特征变换和特征合成。特征选择涉及选择与当前任务最相关的特征的子集。特征缩放涉及将特征标准化为通用尺度,以防止某些特征支配其他特征。特征转换涉及将数学函数应用于特征以创建新的表示。特征合成涉及组合现有特征以创建捕获重要信息的新特征。

2.3 模型选择

模型选择是指在机器学习中选择最适合特定任务的模型的过程。在模型选择中,需要考虑多个因素,如模型的复杂度、准确性、可解释性、训练时间和资源消耗等。模型选择是机器学习流程中非常重要的一步,可以对模型的性能产生重大影响。

在选择模型时,可以使用交叉验证、网格搜索和贝叶斯优化等方法来评估模型性能和寻找最佳模型参数。此外,还可以考虑使用集成学习方法来结合多个模型,以提高模型的准确性和鲁棒性。最终选择的模型应该能够在特定任务中表现出最佳的性能

2.4 模型训练

模型训练是指使用数据来训练机器学习模型的过程。在模型训练中,需要将数据分成训练集和测试集,并使用训练集来训练模型,以便模型能够学习数据中的模式。模型训练是机器学习流程中的重要步骤,可以对模型的性能产生重大影响。

提高模型训练的效果可以从多个方面入手,如增加数据量、优化模型结构、调整超参数、使用正则化方法、使用集成学习方法等。增加数据量可以提高模型的泛化能力,优化模型结构可以提高模型的准确性和效率,调整超参数可以优化模型的性能,使用正则化方法可以防止模型过拟合,使用集成学习方法可以结合多个模型以提高模型的准确性和鲁棒性。此外,还可以使用自动化机器学习工具来简化模型训练过程。

2.5 模型评估

模型评估是指对已训练的模型进行测试、评估和验证,以确定其性能和准确性的过程。在机器学习和人工智能领域中,模型评估是非常重要的一步,它可以帮助我们了解模型的优点和缺点,以及在哪些情况下模型能够发挥最佳效果。

模型评估的步骤包括确定评估指标、准备数据集、计算评估指标、分析结果、监控模型性能。除此之外,还可以进行交叉验证、超参数调整等操作,以提高模型的性能和准确性。

2.6 模型部署

模型部署是指将训练好的模型应用于实际生产环境中,以实现特定的业务目标。这一过程需要将模型转化为可执行的形式,并集成到现有的系统中。

模型部署涉及到一系列的技术和工具,包括模型解释、模型优化、模型部署平台等。在部署过程中,需要考虑模型的稳定性、可扩展性、可维护性、可靠性、安全性和易用性等因素,以确保模型的可靠性和可持续性。常见的模型部署平台包括云计算平台、服务器、嵌入式设备、移动设备等。模型部署之后,需要定期监控和评估模型的性能,并及时迭代更新,以确保模型的稳定性和可靠性。

3  数据中心任务

3.1 数据展示

数据展示就是将运营数据的信息可视化。这是每个机器学习工作都会进行的基本可视化操作,但不同的工作可能会关注来自不同机器学习阶段的数据。由于机器学习模型的数据是实例的集合,因此可视化映射要么关注单个数据实例(图2),要么关注一组实例的聚合(实例/组级别)(图3)。

图2 实例级别的展示。(a) 输入图像通过散点图展示,每个图像对应一个点。 (b) 中间隐藏状态通过热图展示,每行是一个实例(主成分),每列是一个时间步。 (c) 输出概率通过PCP展示,每个实例对应一条折线。

图3 组级别的展示。(a) 表格输入数据被分成子组并呈现为直方图。 (b) 来自实例子组的中间DNN激活被聚合在ActiVis 中,并呈现为圆圈,其颜色表示活跃水平。 (c) 基于桑基图的时间混淆矩阵用于呈现树提升模型训练期间的输出预测。

3.2 数据探索

探索数据是指使用可视化技术探索数据以获得对数据的洞察和理解的过程。它包括两种类型的探索:垂直探索和水平探索。

如图2(a1)所示,用户通过套索选择来选择紫色和棕色簇之间的实例(例如,具有相似概率为数字“4”和“9”的图像)。图2(a2)显示了这些图像的细节,并使用户能够进一步研究单个图像。

图4(a1,a2)展示了使用 tSNE+散点图来可视化 DNN 的早期和后期层中所有数据实例的激活。这两种布局清楚地揭示了前向传播如何将数据实例分为不同的类。同样,图4(b1, b2)显示了两个训练阶段的 DNN 最后一层激活的布局。

图4 探索不同 DNN 层(a1、a2)或训练的数据迭代(b1,b2)

如图5(c)所示,原始图空间和三个嵌入空间呈现为四个并置的散点图。

3.3 数据比较

机器学习可视化中的数据比较可识别操作数据的相似性和差异,以支持模型理解或诊断。他们关注单个数据实例或实例组,并且通常在实例/组内部或实例/组之间进行比较。

使用 PCP 来呈现在图像上训练的 βVAE 的潜在维度(图5(a))。通过扰动潜在维度的值并交互地将扰动的潜在表示解码回图像,用户 可以得出维度编码的内容。具体来说,图5(a)中的六张图像显示了同一输入图像的六次重建,但在维度 20 上具有不同的值。

如图5(b)所示,蓝色、橙色和紫色三种颜色分别对应于三个图像激活的神经元。跨层连接相同颜色的神经元形成相应图像的数据路径。作者还设计了一种新的可视化来有效地呈现这些数据路径及其随时间的演变模式(图5(b),底部)。

如图5(c)所示,每个散点图显示了一种算法生成的嵌入的降维结果。

如图5(d) 所示,每一行条形图都用一个指标(例如准确度、精确度和召回率)来表示所研究模型的性能,并且每个条形条(一行内)代表一个子组。

图5 (a) 实例内:SCANViz 比较同一图像的重建。(b) 实例间:AEVis 比较三个图像的数据路径以诊断对抗性攻击。(c) 组内:EmbeddingVis 比较来自不同模型的同一组实例的嵌入。(d) 组间:FairVis 比较不同实例组的模型性能。

3.4 数据评估

评估数据是指使用可视化技术来评估机器学习模型的输入和输出数据的质量和偏差,以便更好地理解、诊断和完善机器学习模型。机器学习可视化在数据评估方面的努力来自三个主要方向:(1)监控输入数据的质量以检测数据缺陷;(2) 评估 ML 模型的输出以进行评估;(3) 诊断机器学习模型的输入和输出,以揭示数据和模型中根源的偏差。

如图8(a1)所示,pi表示第i步的预测误差,1-pi是准确率。pmin 表示在步骤 i 结束的时间窗口内的最小错误率。条形字形显示了可疑漂移区域中准确度下降的幅度。根据掉落级别,使用不同的字形(例如,空心圆圈、实心圆圈/带十字的三角形)来标记图8(a2) 中的重要步骤。

如图8(b)所示,每个方块代表一个数据实例,其垂直位置反映了相应类别(即此处的C3)的概率。

图 8(c)通过根据排名分数对节点(蓝色或橙色方块)进行聚类,并将同一聚类的节点组织成水平矩形(带有黑色笔划)以实现平等曝光,可解决了内容偏差。

图8  (a) 旨在识别概念漂移的字形。(b) 每个方块代表一个实例,其垂直位置显示类别概率。方块字形及其位置也编码预测的正确性。(c) 图节点(橙色和蓝色)根据其排名分数进行聚类,同一聚类的节点呈现在矩形中以实现相似的曝光。还可以比较两个模型的排名。

3.5 数据生成

数据生成讲的是如何通过生成新的具有所需特征的实例来扩展数据集,以探索机器学习模型的行为并改进模型的性能。数据生成的本质是特征增强,可以直接在数据空间间接在潜在空间中进行。通过生成新的具有所需特征的实例,可以探索模型在不同情况下的行为,例如“假设”分析和对抗性训练。

如图9(a)所示,通过直接在原始图像上添加人工阴影来生成更多的训练图像。对它们进行微调的CNN表现出相当大的性能提升。

VAE 编码器用于将两个图像转换为 10D 潜在空间,如图 9(b1) 中的 PCP 所示。橙色和蓝色折线表示两个图像的 10D 潜在表示。然后,两条折线在各个潜在维度内(即青色带内)进行线性插值。最后,通过从插值区域采样折线并将其输入到 如图9(b2)所示,生成的图像呈现出从数字“4”(左上角)到“9”(右下角)平滑转移的特征。)。

图 9  (a) 通过添加人工生成的阴影来增强图像。DeepVID 通过对潜在向量 (b1) 进行插值,在待解释的数字“4”和“9”(b2) 之间生成图像。

3.6 改进数据

化机器学习模型可以通过优化模型的架构/超参数或提高输入数据的质量来完成。 随着前者的技术不断成熟,模型开发人员越来越认识到从后者获得更大的性能提升相对更容易。这导致最近以数据为中心的人工智能越来越受欢迎。

4  工具和技术

4.1 TensorBoard
TensorBoard是TensorFlow的可视化工具,可以帮助用户可视化模型的结构、训练过程和性能指标等。它提供了丰富的可视化功能,如图表、直方图、分布图、嵌入式投影等,可以帮助用户更好地理解和优化模型。
官网:www.tensorflow.org/tensorboard

4.2 Matplotlib
Matplotlib 是Python的绘图库,它提供了一整套和 matlab 相似的命令 API,可以生成出版质量级别的精美图形,Matplotlib 使绘图变得非常简单,在易用性和性能间取得了优异的平衡。
官网:https://matplotlib.org

使用 Matplotlib 绘制多曲线图:

# plot_multi_curve.pyimport numpy as npimport matplotlib.pyplot as pltx = np.linspace(0.1, 2 * np.pi, 100)y_1 = xy_2 = np.square(x)y_3 = np.log(x)y_4 = np.sin(x)plt.plot(x,y_1)plt.plot(x,y_2)plt.plot(x,y_3)plt.plot(x,y_4)plt.show()
4.3 Seaborn
Seaborn 是在 Matplotlib 的基础上进行了更高级的API封装的Python数据可视化库,从而使得作图更加容易,应该把 Seaborn 视为 Matplotlib 的补充,而不是替代物。它支持多种图表类型,如热力图、分布图、分类图等。
官网:https://seaborn.pydata.org

使用 Seaborn 绘制 pairplot :

import seaborn as snsimport matplotlib.pyplot as pltsns.set_theme(style="ticks")
df = sns.load_dataset("penguins")sns.pairplot(df, hue="species")plt.show()
4.4 Plotly

Plotly是一款开源的交互式可视化工具,支持多种编程语言,如Python、R、MATLAB等。支持40余种图表类型如散点图、折线图、柱状图、热力图等涵盖统计、金融、地理、科学和3D图表。可以帮助用户更好地展示数据和分析结果。

官网:https://plotly.com

使用 plotly 高级API——express:

import plotly.graph_objects as go  # 标准引用格式,一般简写为:goimport plotly.express as px  # 标准引用格式,一般简写为:pxtips = px.data.tips()  # plotly内置数据集:tips
# 使用express绘图只需要调用一个函数px.scatter(tips, x='total_bill', y='tip', width=900, height=600, title='tips').show()


🏴‍☠️宝藏级🏴‍☠️ 原创公众号『数据STUDIO』内容超级硬核。公众号以Python为核心语言,垂直于数据科学领域,包括可戳👉 PythonMySQL数据分析数据可视化机器学习与数据挖掘爬虫 等,从入门到进阶!

长按👇关注- 数据STUDIO -设为星标,干货速递

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/163614