特征选择(数据挖掘)

特征选择 是数据挖掘中常用的术语,用于描述可用于将输入减少到可管理大小的工具和技术,以便进行处理和分析。 特征选择不仅意味着 基数减少,这意味着在构建模型时可以考虑的属性数量施加任意或预定义的截止,还意味着分析器或建模工具会根据属性的有用性主动选择或放弃属性。

应用特征选择的能力对于有效分析至关重要,因为数据集通常包含的信息远多于生成模型所需的信息。 例如,数据集可能包含描述客户特征的 500 列,但如果某些列中的数据非常稀少,则从将它们添加到模型中获益甚微。 如果在生成模型时保留不需要的列,则在训练过程中需要更多的 CPU 和内存,并且完成的模型需要更多的存储空间。

即使资源不是问题,你通常也希望删除不需要的列,因为它们可能会降低发现的模式的质量,原因如下:

  • 某些列是干扰或冗余的。 这种干扰使得从数据中发现有意义的模式变得更加困难;

  • 为了发现高质量模式,大多数数据挖掘算法在高维数据集上需要更大的训练数据集。 但在一些数据挖掘应用程序中,训练数据非常小。

如果数据源中只有 500 列中有 50 个信息可用于生成模型,则只需将其排除在模型外,也可以使用特征选择技术自动发现最佳特征,并排除在统计上无关的值。 功能选择有助于解决数据过多、价值不足或数据太少、价值过高的孪生问题。

Analysis Services 数据挖掘中的功能选择

通常,功能选择在 Analysis Services 中自动执行,每个算法都有一组用于智能应用特征减少的默认技术。 在训练模型之前,始终执行特征选择,以自动选择最有可能在模型中使用的数据集中的属性。 但是,还可以手动设置参数以影响特征选择行为。

通常,功能选择的工作原理是计算每个属性的分数,然后仅选择具有最佳分数的属性。 还可以调整最高分数的阈值。 Analysis Services 提供了用于计算这些分数的多种方法,在任何模型中应用的确切方法取决于以下因素:

  • 模型中使用的算法

  • 特性的数据类型

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

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

注释

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

特征选择方法的定义

有多种方法可以实现功能选择,具体取决于所使用的数据类型以及要进行分析的算法。 SQL Server Analysis Services 为评分属性提供了几种常用和完善的方法。 在任何算法或数据集中应用的方法取决于数据类型和列用法。

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

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

以下部分介绍功能选择的每个方法。

有趣程度评分

如果功能告诉你一些有用的信息,则此功能很有趣。 由于用途的定义因方案而异,因此数据挖掘行业已经开发了各种方法来衡量 有趣性。 例如,在离群值检测中, 新奇 性可能很有趣,但区分密切相关的项目或 区分权重的能力对分类可能更有趣。

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

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

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

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

香农熵

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

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

H(X) = -∑ P(xᵢ) 对数(P(xᵢ))

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

贝伊西亚与 K2 Prior

Analysis Services 提供两个基于贝叶斯网络的特征选择评分。 Bayesian 网络是一个表示状态及状态之间转换的有向无环图,这意味着某些状态始终在当前状态之前,某些状态是后续状态,并且图不会重复或循环。 根据定义,Bayesian 网络允许使用以前的知识。 在确定用于计算后续状态概率的先前状态时,这个问题对算法设计、性能和准确性至关重要。

用于从贝耶斯网络学习的 K2 算法由 Cooper 和 Herskovits 开发,通常用于数据挖掘。 它是可缩放的,可以分析多个变量,但需要对用作输入的变量进行排序。 有关详细信息,请参阅 Learning Bayesian Networks by Chickering、Geiger 和 Heckerman。

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

贝叶斯狄利克雷等价于统一先验

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

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

有关 Bayesian 网络和这些评分方法的实现的详细信息,请参阅 Learning Bayesian Networks

Analysis Services 算法使用的功能选择方法

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

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

贝伊西亚与 K2 Prior

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

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

香农熵

贝伊西亚与 K2 Prior

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

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

香农熵

贝伊西亚与 K2 Prior

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

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

香农熵

贝伊西亚与 K2 Prior

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

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

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

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

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

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

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

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

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

功能选择参数

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

最大输入属性

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

最大输出属性

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

最大状态数

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

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

另请参阅

自定义挖掘模型和结构