降维 (空间统计)

摘要

使用主成分分析 (PCA) 或降级线性判别分析 (LDA) 将尽可能多的方差聚合成更少的分量,来降低连续变量集的维数。

变量指定为输入表或要素图层中的字段,表示新变量的新字段保存在输出表或要素类中。 新字段数将小于原始变量数,同时保持所有原始变量中的方差数量尽可能多。 降维通常用于探索变量之间的多元关系,以及降低机器学习算法的计算成本,其中所需的内存和处理时间取决于数据的维数。 在分析或机器学习算法中使用分量替代原始数据,通常可以提供可比较的(或更好的)结果,同时减少消耗的计算资源。

了解有关降维工作原理的详细信息

插图

降维工具图示
八个变量减少为三个分量。

使用情况

  • 必须在分析字段参数中至少提供两个数值字段,因为数据必须至少具有两个维度才能进行降维。

  • 降维方法参数存在以下两个选项:

    • 主成分分析 (PCA) - 此方法按顺序构建分量,每个分量用于在原始变量之间捕获尽可能多的总方差和相关性。 调整数据比例参数可用于调整各个原始变量的比例,以使每个变量在主成分中具有同等的重要性。 如果数据未调整比例,则值较大的变量在总方差中的占比最大,并且在前几个分量中过度表示。 如果打算执行使用分量来预测连续变量值的分析或机器学习方法,建议使用此方法。
    • 降级线性判别分析 (LDA) - 此方法构建的分量可最大程度地提高分析变量与在分类字段参数中提供的不同级别分类变量的可分离性。 这些分量将保持尽可能多的类别间方差,以使生成的分量在将每个记录分类为某个类别时最有效。 此方法可自动调整数据比例,如果打算执行使用分量对分类变量进行分类的分析或机器学习方法,建议使用此方法。

  • 地理处理消息将显示每个分量保持的方差百分比和累积百分比。

  • 要创建的分量数取决于是否指定要保持的最小方差百分比最小分量数参数的值。

    • 如果指定了一个参数而未指定另一个参数,则由指定参数的值确定分量数。 分量数将等于满足指定最小值所需的最小数。
    • 如果指定了两个参数,则使用生成的两个分量数中的较大者。
    • 如果这两个参数均未指定,则使用几种统计方法确定分量数,并且该工具将使用每种方法预估的最大分量数。 这两种降维方法都包含 Broken-Stick 方法和 Bartlett 球形度检验。 对于 PCA,如果置换检验次数参数值大于零,还会执行置换检验。

    有关每个检验结果的信息将显示为地理处理消息。

  • 如果表是由输出特征值表参数创建的,将在输出表中创建一个“碎石图”图表,用于可视化每个分量保持的方差。

  • 如果表是由输出特征向量表参数创建的,将在输出表中创建一个条形图,用于可视化每个特征向量。

  • 您可以使用将字段追加到输入数据参数将分量字段追加到输入表。 如果您追加分量字段,则不会提供相关表。

  • 分量数不能大于输入中的记录数。 此外,任何分析字段中具有空值的记录都将从计算中排除。 如果许多记录具有空值,则可能无法生成最小分量数参数中指定的分量数,并且该工具将失败。 在本情况下,请移除具有许多空值的分析字段或使用填充缺失值工具填充缺失值。

  • 有关 PCA 和降级 LDA 的其他信息,请参阅以下参考文献:

    • James, G., Witten, D., Hastie, T., Tibshirani, R. (2014). "An Introduction to Statistical Learning: with Applications in R." Springer Publishing Company, Incorporated. https://doi.org/10.1007/978-1-4614-7138-7

    有关用于确定分量数的方法的其他信息,请参阅以下参考文献:

    • Peres-Neto, P., Jackson, D., Somers, K. (2005). "How many principal components? Stopping rules for determining the number of non-trivial axes revisited." Computational Statistics & Data Analysis. 49.4: 974-997. https://doi.org/10.1016/j.csda.2004.06.015.

参数

标注说明数据类型
输入表或要素

包含要降维的字段的表或要素。

Table View
输出表或要素类
(可选)

包含降维的生成分量的输出表或要素类。

Table
分析字段

表示要降维的数据的字段。

Field
降维方法
(可选)

指定将用于对分析字段进行降维的方法。

  • 主成分分析 (PCA)分析字段将划分为多个分量,每个分量将保持在总方差中的最大占比。 这是默认设置。
  • 降级线性判别分析 (LDA)分析字段将将分为多个分量,每个分量将保持分类变量的最大类别间可分离性。
String
调整数据比例
(可选)

指定是否将调整每个分析的值比例,以使方差等于 1。 这种比例调整可确保每个分析字段在分量中的优先级相同。 比例调整还消除了线性单位的影响,例如,以米和英尺测量的相同数据将生成等效分量。 将转换分析字段的值,以使这两个选项的平均值为零。

  • 选中 - 将调整每个分析字段的值比例,以使方差等于 1,方法是将每个值除以分析字段的标准差。 这是默认设置。
  • 未选中 - 不会调整每个分析字段的方差比例。

Boolean
分类字段
(可选)

表示 LDA 的分类变量的字段。 这些分量将保留将每个输入记录分类为这些类别所需的最大信息量。

Field
要保持的最小方差百分比
(可选)

必须在分量中保持的分析字段总方差的最小百分比。 总方差取决于是否使用调整数据比例参数(Python 中为 scale)调整分析字段的比例。

Long
最小分量数
(可选)

最小分量数。

Long
将所有字段复制到输出数据集
(可选)

指定是否复制输入表或要素中的所有字段并将其追加到输出表或要素类中。 分析字段参数中提供的字段将复制到输出中,无论此参数的值为何。

  • 选中 - 将复制输入表或要素中的所有字段并将其追加到输出表或要素类中。
  • 未选中 - 仅在输出表或要素类中包含分析字段。 这是默认设置。

Boolean
输出特征值表
(可选)

包含每个分量的特征值的输出表。

Table
输出特征向量表
(可选)

包含每个分量的特征向量的输出表。

Table
置换检验次数
(可选)

确定最佳分量数时要使用的置换检验次数。 默认值为 0,表示不会执行置换检验。

Long
将字段追加到输入数据
(可选)

指定是将分量字段追加到输入数据集还是将其保存到输出表或要素类。 如果您将字段追加到输入,则会忽略输出坐标系环境。

  • 选中 - 包含分量的字段将被追加到输入要素。 此选项会修改输入数据。
  • 未选中 - 将创建包含分量字段的输出表或要素类。 这是默认设置。

Boolean

派生输出

标注说明数据类型
已更新的表或要素类

追加分量字段后的已更新输入表或要素类。

Table View

arcpy.stats.DimensionReduction(in_table, {output_data}, fields, {method}, {scale}, {categorical_field}, {min_variance}, {min_components}, {append_fields}, {output_eigenvalues_table}, {output_eigenvectors_table}, {number_of_permutations}, {append_to_input})
名称说明数据类型
in_table

包含要降维的字段的表或要素。

Table View
output_data
(可选)

包含降维的生成分量的输出表或要素类。

Table
fields
[fields,...]

表示要降维的数据的字段。

Field
method
(可选)

指定将用于对分析字段进行降维的方法。

  • PCA分析字段将划分为多个分量,每个分量将保持在总方差中的最大占比。 这是默认设置。
  • LDA分析字段将将分为多个分量,每个分量将保持分类变量的最大类别间可分离性。
String
scale
(可选)

指定是否将调整每个分析的值比例,以使方差等于 1。 这种比例调整可确保每个分析字段在分量中的优先级相同。 比例调整还消除了线性单位的影响,例如,以米和英尺测量的相同数据将生成等效分量。 将转换分析字段的值,以使这两个选项的平均值为零。

  • SCALE_DATA将调整每个分析字段的值比例,以使方差为 1,方法是将每个值除以分析字段的标准差。 这是默认设置。
  • NO_SCALE_DATA不会调整每个分析字段的方差比例。
Boolean
categorical_field
(可选)

表示 LDA 的分类变量的字段。 这些分量将保留将每个输入记录分类为这些类别所需的最大信息量。

Field
min_variance
(可选)

必须在分量中保持的分析字段总方差的最小百分比。 总方差取决于是否使用调整数据比例参数(Python 中为 scale)调整分析字段的比例。

Long
min_components
(可选)

最小分量数。

Long
append_fields
(可选)

指定是否复制输入表或要素中的所有字段并将其追加到输出表或要素类中。 fields 参数中提供的字段将复制到输出中,无论此参数的值为何。

  • APPEND将复制输入表或要素中的所有字段并将其追加到输出表或要素类中。
  • NO_APPEND仅在输出表或要素类中包含分析字段。 这是默认设置。
Boolean
output_eigenvalues_table
(可选)

包含每个分量的特征值的输出表。

Table
output_eigenvectors_table
(可选)

包含每个分量的特征向量的输出表。

Table
number_of_permutations
(可选)

确定最佳分量数时要使用的置换检验次数。 默认值为 0,表示不会执行置换检验。 提供的值必须等于 0、99、199、499 或 999。如果提供了任何其他值,将使用 0,并且不会执行置换检验。

Long
append_to_input
(可选)

指定是将分量字段追加到输入数据集还是将其保存到输出表或要素类。 如果您将字段追加到输入,则会忽略输出坐标系环境。

  • APPEND_TO_INPUT包含分量的字段将被追加到输入要素。 此选项会修改输入数据。
  • NEW_OUTPUT将创建包含分量字段的输出表或要素类。 这是默认设置。
Boolean

派生输出

名称说明数据类型
updated_table

追加分量字段后的已更新输入表或要素类。

Table View

代码示例

DimensionReduction 示例 1(Python 窗口)

以下 Python 脚本演示了如何使用 DimensionReduction 函数。


import arcpy
arcpy.stats.DimensionReduction("DemographicData", 
           "DemographicData_DimensionReduction", 
           "age_group_1;age_group2;age_group_3;age_group_4;age_group_5", 
           "PCA", "NO_SCALE_DATA", None, None, 3, 
           "NO_APPEND", "EigenValueTable", None, 99, NEW_OUTPUT)
DimensionReduction 示例 2(独立脚本)

以下独立 Python 脚本演示了如何使用 DimensionReduction 函数预测人口:


# Import system modules 
import arcpy

# Overwrite existing output, by default
arcpy.env.overwriteOutput = True

# Local variables...
arcpy.env.workspace = r"c:\projects\dimensionreduction.gdb"

# Reduce the fields of population by age group using Reduced-Rank LDA method; 
# use "State" as the categorical field; choose the eigenvector output. 
arcpy.stats.DimensionReduction("DemographicData", 
           "DemographicData_DimensionReduction", 
           "age_group_1;age_group2;age_group_3;age_group_4;age_group_5", 
           "LDA", "SCALE_DATA", "State", None, None, 
           "APPEND", None, "EigenVectorTable", 0, NEW_OUTPUT)