本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
进行探索性数据分析 () EDA
Data Wrangler 包含内置分析,只需点击几下即可帮助您生成可视化和数据分析。您还可以使用自己的代码创建自定义分析。
通过在数据流中选择一个步骤,然后选择添加分析,可以将分析添加到数据框中。要访问您创建的分析,请选择包含该分析的步骤,然后选择分析。
分析是使用数据集中最多 200,000 行的样本生成的,您可以配置样本量。有关更改数据流样本量的更多信息,请参阅编辑数据流采样配置。
注意
针对列数不超过 1000 的数据进行了优化。在为包含额外列的数据生成分析时,您可能会遇到一些延迟。
您可以将以下分析添加到数据框中:
-
数据可视化,包括直方图和散点图。
-
数据集的快速摘要,包括条目数、最小值和最大值(对于数字数据)以及最频繁和最少的类别(对于分类数据)。
-
数据集的快速模型,可用于为每个特征生成重要性评分。
-
目标泄漏报告,您可以使用该报告来确定一个或多个特征是否与目标特征密切关联。
-
使用自己的代码进行自定义可视化。
可通过以下部分了解有关这些选项的更多信息。
获取有关数据和数据质量的见解
使用数据质量和见解报告对您导入到 Data Wrangler 中的数据进行分析。建议您在导入数据集之后创建报告。可以使用该报告来协助您清理和处理自己的数据。该报告为您提供诸如缺失值数量和异常值数量之类的信息。如果您的数据存在问题,例如目标泄漏或不平衡,则见解报告可以让您注意到这些问题。
按照以下过程创建数据质量和见解报告。该过程假设您已将数据集导入到 Data Wrangler 流中。
创建数据质量和见解报告
-
选择 Data Wrangler 流程中节点旁边的省略号图标。
-
选择获取数据见解。
-
对于分析类型,选择数据质量和见解报告。
-
对于分析名称,为见解报告指定名称。
-
对于问题类型,请指定回归或分类。
-
对于 “目标” 列,指定目标列。
-
对于数据大小,指定下列项之一:
-
采样数据集-使用数据流中的交互式样本,其中最多可包含 200,000 行数据集。有关如何编辑样本大小的信息,请参阅编辑数据流采样配置。
-
完整数据集-使用数据源中的完整数据集创建报告。
注意
针对完整数据集创建数据质量和见解报告需要使用 Amazon SageMaker 处理任务。 SageMaker 处理任务预置了获取所有数据见解所需的额外计算资源。有关 SageMaker 处理任务的更多信息,请参阅带 SageMaker 处理功能的数据转换工作负载。
-
-
选择创建。
下面的主题说明了报告的各个部分:
可以下载报告或在线查看。要下载报告,请选择屏幕右上角的下载按钮。
Summary
见解报告对数据进行了简单汇总,其中包括缺失值、无效值、特征类型、异常值计数等一般信息。还可能包括高严重性警告,这些警告指出数据可能存在问题。我们建议您对警告进行调查研究。
目标列
当您创建数据质量和见解报告时,Data Wrangler 会为您提供选择目标列的选项。目标列是要预测的列。在选择目标列时,Data Wrangler 会自动创建目标列分析。它还按特征的预测能力顺序对特征进行排名。选择目标列时,必须指定是要解决回归问题还是分类问题。
对于分类,Data Wrangler 会显示最常见分类的表和直方图。分类是指类别。它还会显示目标值缺失或无效的观测值或行。
对于回归,Data Wrangler 会显示目标列中所有值的直方图。它还会显示带有缺失、无效或异常值目标值的观测值或行。
快速模型
快速模型提供您用于训练数据的模型的预期预测质量的估计值。
Data Wrangler 将您的数据拆分为训练层和验证层。它使用 80% 的样本进行训练,使用 20% 的值进行验证。对于分类,对样本进行分层分割。对于分层分割,每个数据分区的标签比例相同。对于分类问题,训练层和分类层之间的标签比例必须相同,这一点非常重要。Data Wrangler 使用默认的超参数训练XGBoost模型。它对验证数据进行提前停止,并执行最少的特征预处理。
对于分类模型,Data Wrangler 会返回模型摘要和混淆矩阵。
要了解有关分类模型摘要返回的信息的更多信息,请参阅定义。
混淆矩阵提供了以下信息:
-
预测标签与真实标签匹配的次数。
-
预测标签与真实标签不匹配的次数。
真实标签表示数据中的实际观察值。例如,如果您使用模型来检测欺诈性交易,那么真实标签表示实际上是欺诈性交易或非欺诈性交易。预测标签表示模型为数据分配的标签。
可以使用混淆矩阵来查看模型对状况存在或不存在的预测程度。如果您预测的是欺诈性交易,可以使用混淆矩阵来了解模型的敏感性和特定性。敏感性是指模型检测欺诈性交易的能力。特定性是指该模型能够避免将非欺诈性交易检测为欺诈性交易。
特征摘要
当您指定目标列时,Data Wrangler 会根据特征的预测能力对特征进行排序。预测能力是在将数据拆分为 80% 的训练和 20% 的验证倍数之后根据数据来衡量的。Data Wrangler 在训练层上分别拟合每个特征的模型。它应用最少的特征预处理并衡量验证数据的预测性能。
它将分数标准化为范围 [0,1]。预测分数越高,表示列自身对用于预测目标更有用。分数较低的列表示无法用于预测目标列的列。
某一列无法单独用于预测,但与其他列一起使用时具有预测性,这种情况并不常见。您可以放心地使用预测分数来确定数据集内的某个特征是否具有预测性。
分数低通常表示该特征是多余的。分数为 1 表示完美的预测能力,这通常表示目标泄漏。目标泄漏通常发生在数据集包含预测时不可用的列时。例如,它可能是目标列的重复项。
样本
Data Wrangler 提供有关样本是否异常或数据集内是否存在重复项的信息。
Data Wrangler 使用孤立森林算法来检测异常样本。孤立森林算法将异常分数与数据集的每个样本(行)相关联。异常分数低表示样本异常。高分数与非异常样本关联。异常分数为负的样本通常被视为异常样本,异常分数为正的样本被视为非异常样本。
查看可能存在异常的样本时,我们建议您注意异常值。例如,可能会由于收集和处理数据时出错而存在的异常值。根据 Data Wrangler 对孤立森林算法的实施,以下是异常程度最高的样本示例。我们建议您在检查异常样本时运用专业领域知识和业务逻辑。
Data Wrangler 会检测重复行,并计算您的数据中重复行的比例。某些数据来源可能包含有效的重复项。其他数据来源可能具有表明数据收集存在问题的重复项。由于数据收集错误而产生的重复样本可能会干扰依赖于将数据拆分为独立训练层和验证层的机器学习流程。
以下是见解报告中可能受到重复样本影响的元素:
-
快速模型
-
预测能力估计
-
自动超参数优化
可以使用管理行下的删除重复项转换,从数据集内删除重复样本。Data Wrangler 会显示重复程度最高的行。
定义
以下是数据见解报告中使用的技术术语的定义。
偏差报告
SageMaker Canvas 在 Data Wrangler 中提供了偏差报告,以帮助发现数据中的潜在偏差。偏差报告分析目标列(标签)与您认为可能包含偏见的列(分面变量)之间的关系。例如,如果您要预测客户转化率,则分面变量可能是客户的年龄。偏差报告可以帮助您确定您的数据是否偏向于某个年龄组。
要在 Canvas 中生成偏差报告,请执行以下操作:
在 Data Wrangler 的数据流中,选择流程中节点旁边的更多选项图标 ( )。
从快捷菜单中,选择获取数据见解。
创建分析侧面板打开。在分析类型下拉菜单中,选择偏差报告。
在分析名称字段中,输入偏差报告的名称。
在 “选择您的模型预测的列(目标)” 下拉菜单中,选择您的目标列。
f or 您的预测列是值还是阈值? ,如果目标列具有类别值,则选择值;如果目标列具有数值,则选择阈值。
在预测值(或预测阈值,取决于您在上一步中的选择)中,输入一个或多个与正面结果对应的目标列值。例如,如果预测客户转化率,则您的值可能
yes
表示客户已转化。在 “选择要分析偏差的列” 下拉菜单中,选择您认为可能包含偏见的列,也称为分面变量。
f or 您的列是值还是阈值? ,如果分面变量具有类别值,则选择值;如果分面变量具有数值,则选择阈值。
对于要分析偏差的列值(或要分析偏差的列阈值,取决于您在上一步中的选择),请输入要分析潜在偏差的一个或多个值。例如,如果您要检查针对特定年龄段以上的客户的偏见,请使用该年龄段的起点作为阈值。
在 “选择偏见指标” 中,选择要包含在偏见报告中的偏见指标。将鼠标悬停在信息图标上,了解有关每个指标的更多信息。
(可选)当出现选项提示时,您想分析其他指标吗? ,选择 “是” 以查看和包含更多偏见指标。
准备好创建偏见报告后,选择添加。
生成报告后,将为您提供所选偏见指标的概述。您可以随时从数据流的 “分析” 选项卡查看偏差报告。
直方图
使用直方图可以查看特定特征的特征值计数。您可以使用着色方式选项检查特征之间的关系。
您可以使用划分方式功能为一个列中的每个值创建另一个列的直方图。
散点图
使用散点图功能可以检查各特征之间的关系。要创建散点图,请选择要在 X 轴和 Y 轴上绘制的特征。这两列都必须是数字类型的列。
您可以通过额外的列为散点图着色。
此外,您还可以按特征划分散点图。
表格摘要
使用表摘要分析可以快速总结数据。
对于包含数值数据(包括日志和浮点数据)的列,表摘要会报告每列的条目数 (count)、最小值 (min)、最大值 (max)、均值和标准差 (stddev)。
对于包含非数字数据的列,包括具有字符串、布尔值或日期/时间数据的列,表摘要将报告条目数(计数)、最低频率值(最小值)和最常见值(最大值)。
快速模型
使用快速模型可视化可以快速评估数据并为每个特征生成重要性分数。一个特征重要性分数
创建快速模型图表时,您可以选择要评估的数据集,以及要比较特征重要性的目标标签。Data Wrangler 会执行以下操作:
-
推断目标标签的数据类型以及所选数据集内的每个特征的数据类型。
-
确定问题类型。根据标签列中不同值的数量,Data Wrangler 确定这是回归还是分类问题类型。Data Wrangler 将分类阈值设置为 100。如果标签列中存在超过 100 个不同的值,Data Wrangler 会将其归类为回归问题;否则,会将其归类为分类问题。
-
预处理特征和标签数据以供训练。所使用的算法要求将特征编码为向量类型,将标签编码为双精度类型。
-
使用 70% 的数据训练随机森林算法。Spark RandomForestRegressor
's 用于训练回归问题的模型。RandomForestClassifier 用于训练模型以解决分类问题。 -
使用剩余 30% 的数据评估随机森林模型。Data Wrangler 使用 F1 分数评估分类模型,并使用分数评估回归模型。MSE
-
使用基尼重要性方法计算每个特征的特征重要性。
目标泄漏
当机器学习训练数据集内存在与目标标签密切相关但在真实世界数据中不可用的数据时,就会发生目标泄漏。例如,您的数据集内可能有一列作为您要在模型中预测的列的代理。
使用目标泄漏分析时,可以指定以下内容:
-
目标:这是您希望机器学习模型能够预测的特征。
-
问题类型:这是您正在处理的 ML 问题类型。问题类型可以是分类,也可以是回归。
-
(可选)最大特征数:这是要在可视化中显示的最大特征数,它显示了按目标泄漏风险排序的特征。
为了进行分类,目标泄漏分析使用接收器工作特性下方的区域,或每列的 AUC-ROC 曲线,直至最大特征。对于回归,使用确定系数或 R2 指标。
AUC-ROC 曲线提供了预测指标,该指标使用交叉验证为每列单独计算,样本最多约为 1000 行。分数为 1 表示完美的预测能力,这通常表示目标泄漏。分数为 0.5 或更低,表明该栏中的信息本身无法提供预测目标的任何有用信息。尽管一列本身可能无法提供信息,但与其他特征一起使用时可用于预测目标,但如果分数较低,可能表示该特征是多余的。
多重共线性
多重共线性是指两个或多个预测变量相互关联的情况。预测变量是数据集内用来预测目标变量的特征。当您具有多重共线性时,预测变量不仅可以预测目标变量,还可以相互预测。
您可以使用方差膨胀因子 (VIF)、主成分分析 (PCA) 或 L asso 特征选择作为数据中多重共线性的度量。有关更多信息,请参阅下列内容。
检测时序数据中的异常
您可以使用异常检测可视化来查看时间序列数据中的异常值。要了解决定异常的因素,您需要明白,我们将时间序列分解为预测项和误差项。我们将时间序列的季节性和趋势视为预测项。我们将残差视为误差项。
对于误差项,您可以指定阈值,当残差远离平均值的偏差标准数达到该阈值时,便会将其视为异常。例如,您可以将阈值指定为 3 个标准差。任何距离平均值大于 3 个标准差的残差均为异常。
您可以使用以下步骤执行异常检测分析。
-
打开 Data Wrangler 数据流。
-
在您的数据流中,在数据类型下,选择 +,然后选择添加分析。
-
对于分析类型,选择时间序列。
-
对于可视化,选择异常检测。
-
对于异常阈值,选择将某个值视为异常的阈值。
-
选择预览以生成分析的预览。
-
选择添加,将转换添加到 Data Wrangler 数据流中。
时间序列数据中的季节性趋势分解
您可以使用季节性趋势分解可视化,来确定时间序列数据中是否存在季节性。我们使用STL(季节性趋势分解使用LOESS)方法进行分解。我们将时间序列分解为季节性、趋势和残差成分。这一趋势反映了该系列的长期进展。季节性成分是在一段时间内重复出现的信号。从时间序列中删除趋势和季节性成分后,您就获得了残差。
可以使用以下步骤执行季节性趋势分解分析。
-
打开 Data Wrangler 数据流。
-
在您的数据流中,在数据类型下,选择 +,然后选择添加分析。
-
对于分析类型,选择时间序列。
-
对于可视化,请选择季节性趋势分解。
-
对于异常阈值,选择将某个值视为异常的阈值。
-
选择预览以生成分析的预览。
-
选择添加,将转换添加到 Data Wrangler 数据流中。
创建自定义可视化效果
您可以向 Data Wrangler 流添加分析,来创建自定义可视化。您的数据集以及您应用的所有变换,都可以 Pandas DataFramedf
变量来存储数据框。可以通过调用变量来访问该数据框。
必须提供输出变量 chart
,以便存储 Altair
import altair as alt df = df.iloc[:30] df = df.rename(columns={"Age": "value"}) df = df.assign(count=df.groupby('value').value.transform('count')) df = df[["value", "count"]] base = alt.Chart(df) bar = base.mark_bar().encode(x=alt.X('value', bin=True, axis=None), y=alt.Y('count')) rule = base.mark_rule(color='red').encode( x='mean(value):Q', size=alt.value(5)) chart = bar + rule
要创建自定义可视化,请执行以下操作:
-
在包含要可视化的变换的节点旁边,选择 +。
-
选择添加分析。
-
对于分析类型,选择自定义可视化。
-
在分析名称中指定名称。
-
在代码框中输入您的代码。
-
选择预览以预览可视化。
-
选择保存以添加可视化。
如果您不知道如何在 Python 中使用 Altair 可视化包,可以使用自定义代码片段来协助您开始入手。
Data Wrangler 有一系列可搜索的可视化代码片段。要使用可视化代码片段,请选择搜索示例代码片段,然后在搜索栏中指定查询。
下面的示例使用分仓散点图代码片段,其中绘制了一个双维度直方图。
这些代码片段包含注释,有助于您了解需要对代码进行哪些更改。您通常需要在代码中指定自己的数据集的列名。
import altair as alt # Specify the number of top rows for plotting rows_number = 1000 df = df.head(rows_number) # You can also choose bottom rows or randomly sampled rows # df = df.tail(rows_number) # df = df.sample(rows_number) chart = ( alt.Chart(df) .mark_circle() .encode( # Specify the column names for binning and number of bins for X and Y axis x=alt.X("col1:Q", bin=alt.Bin(maxbins=20)), y=alt.Y("col2:Q", bin=alt.Bin(maxbins=20)), size="count()", ) ) # :Q specifies that label column has quantitative type. # For more details on Altair typing refer to # https://altair-viz.github.io/user_guide/encoding.html#encoding-data-types