功能选择(数据挖掘)

“功能选择”是在数据挖掘中常用的一个术语,用于描述可用于将输入减少到可控大小以便处理和分析的工具和技术。 功能选择不仅意味着“基数降低”(这意味着对在生成模型时可考虑的属性数目施加任意或预定义的削减),还意味着对属性的选择(这意味着分析人员或建模工具将基于其分析的可用性主动选择或放弃属性)。

能够应用功能选择对于有效分析至关重要,因为数据集包含的信息通常多于生成模型所需的信息。 例如,一个数据集可能包含 500 个用来描述客户特征的列,但是,如果其中某些列的数据非常稀疏,则您从将这些数据添加到模型中所得到的利益可能会非常少。 如果在生成模型时保留不需要的列,则定型期间需要更多的 CPU 和内存,并且已完成的模型需要更多的存储空间。

即使资源不存在任何问题,由于不需要的列可能因为下列原因而降低发现的模式的质量,因此通常需要删除这些列:

  • 某些列存在干扰或冗余。 此干扰会使从数据中发现有意义的模式更困难;

  • 若要发现质量模式,大多数数据挖掘算法需要高维数据集上的较大定型数据集。 但是某些数据挖掘应用程序中的定型数据非常少。

在数据源的这 500 列中,如果只有 50 列具有在生成模型时有用的信息,则您可以只将这些列保持在模型之外,或者可以使用功能选择技术自动发现最佳功能并且排除在统计上无用的值。 功能选择有助于解决两个问题:无价值的数据过多或有价值的数据过少。

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

通常,功能选择在 Analysis Services 中自动执行,并且每个算法都具有用于智能地应用功能选择的一组默认技术。 功能选择始终在对模型进行定型之前执行,以自动选择数据集中最有可能在该模型中使用的属性。 但是,您也可以手动设置参数以便影响功能选择行为。

通常,功能选择的工作方式是为每个属性计算一个分数,然后仅选择具有最高分数的属性。 您还可以调整最高分数的阈值。 Analysis Services 提供多种方法来计算这些分数,适用于任何模型的准确方法取决于以下因素:

  • 在模型中使用的算法

  • 属性的数据类型

  • 可对模型设置的任何参数

功能选择应用于输入、可预测属性或列中的状态。 在用于功能选择的分数完整时,只有算法选择的属性和状态才会包含在模型生成过程中并可用于预测。 即使您选择的可预测属性未满足用于功能选择的阈值,这些属性仍可用于预测,但这些预测将只是基于模型中存在的全局统计信息进行的。

注意注意

功能选择仅影响模型中使用的列,而对挖掘结构的存储没有任何影响。 留在挖掘模型之外的列仍在结构中可用,并将缓存挖掘结构列中的数据。

功能选择方法的定义

实现功能选择的方法很多,具体取决于使用的数据类型以及为分析选择的算法。 SQL Server Analysis Services 提供了用于对属性进行计分的若干现成的常用方法。 在任何算法或数据集中应用的方法取决于数据类型和列的用法。

“兴趣性”分数用于对包含非二进制连续数值数据的列中的属性进行排列和排序。

“Shannon 平均信息量”和两个“Bayesian”分数可用于包含离散和离散化数据的列。 但是,如果模型包含任何连续列,则兴趣性分数将用于评估所有的输入列,以确保一致性。

下面的部分对功能选择的每种方法分别进行了介绍。

兴趣性分数

如果某个功能可以提供一些有用的信息,则该功能很令人感兴趣。 由于有用的定义因具体方案而异,因此数据挖掘行业开发了多种方法来度量“兴趣性”。 例如,“新奇”在离群监测中也许令人感兴趣,但是在密切关联的项之间区分的功能(或称为“区分权重”)对于分类来说或许更令人感兴趣。

SQL Server Analysis Services 中所使用的兴趣性度量“基于平均信息量”,意味着随机分布的属性具有较高的平均信息量和较低的信息增益,因此,这类属性不是很令人感兴趣。 任何特定属性的平均信息量都将与所有其他属性的平均信息量进行比较,如下所示:

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

中央平均信息量(即 m)表示整个功能集的平均信息量。 通过用中央平均信息量减去目标属性的平均信息量,可以评估该属性提供了多少信息。

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

Shannon 平均信息量

Shannon 平均信息量针对特定的结果度量随机变量的不确定性。 例如,抛硬币的平均信息量可以表示为其正面朝上概率的函数。

Analysis Services 使用以下公式来计算 Shannon 平均信息量:

H(X) = -∑ P(xi) log(P(xi))

此计分方法适用于离散和离散化的属性。

Bayesian with K2 Prior

Analysis Services 提供了两种基于 Bayesian 网络的功能选择分数。 Bayesian 网络是状态的“定向”或“非循环”曲线图,也是状态间的转换,这意味着某些状态始终早于当前的状态,某些状态是较晚的,曲线图不会重复或循环。 根据定义,Bayesian 网络允许使用先前的知识。 但是,对于算法设计、性能和精确度而言,关于在以后状态的概率计算中要使用以前的哪一个状态的问题是很重要的。

从 Bayesian 网络中了解的 K2 算法是由 Cooper 和 Herskovits 开发的,经常在数据挖掘中使用。 该算法是可伸缩的,并可以分析多个变量,但需要对用作输入的变量进行排序。 有关详细信息,请参阅由 Chickering、Geiger 和 Heckerman 编写的了解 Bayesian 网络

此计分方法适用于离散和离散化的属性。

Bayesian Dirichlet Equivalent with Uniform Prior

Bayesian Dirichlet Equivalent (BDE) 分数还使用 Bayesian 分析来评估给定数据集的网络。 BDE 计分方法是由 Heckerman 开发的,并基于 Cooper 和 Herskovits 开发的 BD 指标。 Dirichlet 分布是描述网络中每个变量的条件概率的多项分布,其中很多属性对学习很有用。

Bayesian Dirichlet Equivalent with Uniform Prior (BDEU) 方法假定一个 Dirichlet 分布的特殊事例,在这个事例中使用一个数学常量创建一个以前状态的固定或均匀分布。 BDE 分数还假定可能性均等,这意味着数据不应当用来区分相等的结构。 也就是说,如果 If A Then B 的分数与 If B Then A 的分数相同,则该结构将无法基于数据进行区分,也无法推断其原因。

有关 Bayesian 网络和这些计分方法实现的详细信息,请参阅 Learning Bayesian Networks(了解 Bayesian 网络)。

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

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

算法

分析方法

注释

Naive Bayes

Shannon 平均信息量

Bayesian with K2 Prior

Bayesian Dirichlet with uniform prior(默认值)

Microsoft Naïve Bayes 算法仅接受离散或离散化的属性,因此它不能使用兴趣性分数。

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

决策树

兴趣性分数

Shannon 平均信息量

Bayesian with K2 Prior

使用统一先验的 Bayesian Dirichlet(默认)

如果任何列包含非二进制连续值,则兴趣性分数将用于所有列,以确保一致性。 否则,将使用默认的功能选择方法或者您在创建模型时指定的方法。

有关此算法的详细信息,请参阅 Microsoft 决策树算法技术参考

神经网络

兴趣性分数

Shannon 平均信息量

Bayesian with K2 Prior

使用统一先验的 Bayesian Dirichlet(默认)

只要数据包含连续列,Microsoft 神经网络算法就可同时使用基于平均信息量的方法和 Bayesian 方法。

有关此算法的详细信息,请参阅 Microsoft 神经网络算法技术参考

逻辑回归

兴趣性分数

Shannon 平均信息量

Bayesian with K2 Prior

Bayesian Dirichlet with uniform prior(默认值)

虽然 Microsoft 逻辑回归算法基于 Microsoft 神经网络算法,但您不能自定义逻辑回归模型以控制功能选择行为;因此,功能选择始终默认为最适合该属性的方法。

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

有关此算法的详细信息,请参阅 Microsoft 逻辑回归算法技术参考

群集

兴趣性分数

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,则功能选择将被关闭,这会影响处理时间和性能。

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

请参阅

概念

自定义挖掘模型和结构