通过


特征选择(数据挖掘)

适用于: SQL Server 2019 及更早版本的 Analysis Services Azure Analysis Services Fabric/Power BI Premium

重要

SQL Server 2017 Analysis Services 中弃用了数据挖掘,现已在 SQL Server 2022 Analysis Services 中停止使用。 文档不会更新为已弃用和已停用的功能。 若要了解详细信息,请参阅 Analysis Services 向后兼容性

功能选择 是机器学习的重要组成部分。 功能选择是指减少用于处理和分析的输入或查找最有意义的输入的过程。 相关术语、 特征工程 (或 特征提取)是指从现有数据中提取有用信息或特征的过程。

为何进行特征选择?

由于多种原因,功能选择对于构建良好模型至关重要。 一个是特征选择意味着某种程度的 基数减少,以对生成模型时可以考虑的属性数施加截止。 数据几乎总是包含比生成模型所需的更多信息,或错误的信息类型。 例如,可能有一个数据集,其中包含 500 列来描述客户的特征;但是,如果某些列中的数据非常稀少,则从将它们添加到模型中获益甚微,并且如果某些列相互复制,则使用这两列可能会影响模型。

不仅特征选择提高了模型的质量,而且使建模过程更加高效。 如果在生成模型时使用不需要的列,则在训练过程中需要更多的 CPU 和内存,并且完成的模型需要更多的存储空间。 即使资源不是问题,你仍希望执行功能选择并确定最佳列,因为不需要的列可以通过多种方式降低模型的质量:

  • 干扰或冗余数据使得发现有意义的模式变得更加困难。

  • 如果数据集是高维数据集,则大多数数据挖掘算法都需要更大的训练数据集。

在功能选择过程中,分析员或建模工具或算法会根据分析的有用性主动选择或放弃属性。 分析人员可能会执行特征工程来添加特征,并删除或修改现有数据,而机器学习算法通常会对列进行评分并验证其在模型中的有用性。

简言之,功能选择有助于解决两个问题:数据过多,值很少,或者数据太少,价值过高。 在功能选择中,应确定数据源中生成模型时非常重要的最小列数。

功能选择在 SQL Server 数据挖掘中的工作原理

在训练模型之前,始终执行特征选择。 使用某些算法时,特征选择技术是“内置”,以便排除不相关的列,并自动发现最佳特征。 每个算法都有自己的一组默认技术,用于智能应用功能缩减。 但是,还可以手动设置参数以影响特征选择行为。

在自动功能选择过程中,会为每个属性计算分数,并且只为模型选择具有最佳分数的属性。 还可以调整最高分数的阈值。 SQL Server 数据挖掘提供了用于计算这些分数的多种方法,在任何模型中应用的确切方法取决于以下因素:

  • 模型中使用的算法

  • 特性的数据类型

  • 你可能已在模型上设置的任何参数

功能选择应用于输入、可预测属性或列中的状态。 当特征选择的评分完成时,只有算法选择的属性和状态包含在模型构建过程中,并可用于预测。 如果选择不符合特征选择阈值的可预测属性,该属性仍可用于预测,但预测将仅基于模型中存在的全局统计信息。

注释

特征选择仅影响在模型中使用的列,并且不会影响数据挖掘结构的存储。 不包括在数据挖掘模型中的列在结构中仍然可用,并且挖掘结构列中的数据将被缓存。

功能选择分数

SQL Server 数据挖掘支持这些常用且完善的评分属性方法。 任何特定算法或数据集中使用的特定方法取决于数据类型和列用法。

  • 有趣的分数用于对包含非二元连续数值数据的列中的属性进行排名和排序。

  • 香农的熵和两个贝叶斯分数可用于含离散和处理后离散化数据的列。 但是,如果模型包含任何连续列,则有趣的分数将用于评估所有输入列,以确保一致性。

趣味性分数

如果功能告诉你一些有用的信息,则此功能很有趣。 但是,可以通过多种方式衡量 有趣的程度新奇 性对于离群值检测可能很有价值,但区分密切相关的项目或 区分权重的能力对于分类可能更有趣。

SQL Server 数据挖掘中使用的有趣性度量 基于 entropy,这意味着具有随机分布的属性具有较高的 entropy 和较低的信息增益:因此,此类属性不太有趣。 任何特定属性的 entropy 与所有其他属性的 entropy 进行比较,如下所示:

Interestingness(Attribute) = - (m - Entropy(Attribute)) * (m - Entropy(Attribute))

中心熵或m表示整个特征集的熵。 通过从中心熵中减去目标属性的熵,可以评估该属性提供的信息量。

每当列包含非二元连续数值数据时,默认使用此分数。

香农熵

香农的熵度量随机变量在特定结果下的不确定性。 例如,硬币抛出的熵可以表示为出现正面的概率函数。

Analysis Services 使用以下公式计算香农的萎缩量:

H(X) = -∑ P(xi) 对数(P(xi))

此评分方法可用于离散和离散化属性。

贝伊西亚与 K2 Prior

SQL Server 数据挖掘提供两个基于 Bayesian 网络的特征选择评分。 Bayesian 网络是状态的有向无环图,表示状态之间的转换,这意味着某些状态始终处于当前状态之前,某些状态为后验状态,并且图形不重复或形成循环。 根据定义,Bayesian 网络允许使用以前的知识。 在计算后续状态的概率时,确定使用哪些先前状态对于算法设计、性能和准确性非常重要。

用于从贝耶斯网络学习的 K2 算法由 Cooper 和 Herskovits 开发,通常用于数据挖掘。 它是可缩放的,可以分析多个变量,但需要对用作输入的变量进行排序。

此评分方法可用于离散和离散化属性。

Bayesian Dirichlet 等效于统一的 Prior

贝叶斯 Dirichlet 等效 (BDE) 分数也使用贝叶斯分析来评估给定数据集中的网络。 BDE 评分方法由 Heckerman 开发,基于库珀和赫斯科维茨开发的 BD 指标。 Dirichlet 分布是一种多项式分布,描述网络中每个变量的条件概率,并且具有许多可用于学习的属性。

Bayesian Dirichlet Equivalent with Uniform Prior (BDEU)方法假设了Dirichlet分布的一个特殊情况,其中使用数学常数来创建先验状态的固定或均匀分布。 BDE 分数还假定可能性等价,这意味着无法预期数据会区分等效结构。 换句话说,如果“如果 A 则 B”的分数与“如果 B 则 A”的分数相同,则无法根据数据区分这些结构,也无法推断因果关系。

每个算法的特征选择方法

下表列出了支持特征选择的算法、算法使用的功能选择方法以及你设置为控制特征选择行为的参数:

算法 分析方法 注释
Naive Bayes 香农熵

贝伊西亚与 K2 Prior

贝叶斯狄利克雷(默认,均匀先验)
Microsoft Naïve Bayes 算法仅接受离散或离散化属性;因此,它不能使用有趣的分数。

有关此算法的详细信息,请参阅 Microsoft Naive Bayes 算法技术参考
决策树 趣味性分数

香农熵

贝伊西亚与 K2 Prior

贝叶斯狄利克雷(默认,均匀先验)
如果任何列包含非二进制连续值,则为了确保一致性,所有列都使用趣味性评分。 否则,将使用默认功能选择方法,或创建模型时指定的方法。

有关此算法的详细信息,请参阅 Microsoft决策树算法技术参考
神经网络 趣味性分数

香农熵

贝伊西亚与 K2 Prior

贝叶斯狄利克雷(默认,均匀先验)
只要数据包含连续列,Microsoft 神经网络算法就可以使用基于贝叶斯和熵的方法。

有关此算法的详细信息,请参阅 Microsoft神经网络算法技术参考
逻辑回归 趣味性分数

香农熵

贝伊西亚与 K2 Prior

贝叶斯狄利克雷(默认,均匀先验)
尽管Microsoft逻辑回归算法基于Microsoft神经网络算法,但无法自定义逻辑回归模型来控制特征选择行为;因此,功能选择始终默认为最适合属性的方法。

如果所有属性都是离散的或离散化的,则默认值为 BDEU。

有关此算法的详细信息,请参阅 Microsoft逻辑回归算法技术参考
Clustering 趣味性分数 Microsoft聚类分析算法可以使用离散或离散化的数据。 但是,由于每个属性的分数被计算为距离,并且表示为连续数值,因此需要使用有趣性得分。

有关此算法的详细信息,请参阅 Microsoft聚类分析算法技术参考
线性回归 趣味性分数 Microsoft 线性回归算法只能使用趣味性评分,因为它仅支持连续数据列。

有关此算法的详细信息,请参阅 Microsoft线性回归算法技术参考
关联规则

顺序聚类分析
未使用 不会使用这些算法调用特征选择。

但是,可以通过设置参数的值MINIMUM_SUPPORT和MINIMUM_PROBABILIITY来控制算法的行为,并在必要时减小输入数据的大小。

有关详细信息,请参阅 Microsoft关联算法技术参考Microsoft序列聚类分析算法技术参考
时序 未使用 功能选择不适用于时序模型。

有关此算法的详细信息,请参阅 Microsoft时序算法技术参考

功能选择参数

在支持功能选择的算法中,可以使用以下参数控制何时启用功能选择。 每个算法都有允许的输入数的默认值,但可以重写此默认值并指定属性数。 本部分列出了用于管理功能选择的参数。

MAXIMUM_INPUT_ATTRIBUTES

如果模型包含的列数多于 MAXIMUM_INPUT_ATTRIBUTES 参数中指定的数字,该算法将忽略计算为不感兴趣的任何列。

MAXIMUM_OUTPUT_ATTRIBUTES

同样,如果模型中包含的可预测列数超过MAXIMUM_OUTPUT_ATTRIBUTES参数中指定的数量,该算法将忽略其计算为不感兴趣的任何列。

MAXIMUM_STATES

如果模型包含的事例数多于 MAXIMUM_STATES 参数中指定的情况,则最不受欢迎的状态组合在一起并被视为缺失。 如果其中任一参数设置为 0,则关闭功能选择,从而影响处理时间和性能。

除了这些功能选择方法之外,还可以通过对模型设置 建模标志 或设置结构上的 分布标志 来提高算法识别或提升有意义的属性的能力。 有关这些概念的详细信息,请参阅建模标志(数据挖掘)列分布(数据挖掘)。

另请参阅

自定义挖掘模型和结构