作者:Isabelle Guyon1 and Andr´e Elisseeff2
这一章向读者介绍了本书3中涵盖的特征提取( Feature Extraction)的各个方面。第1节 综述了定义和符号,并提出了特征提取问题的统一定义。第2节 是概述书中提出的方法和结果,强调方法的新颖性。第3节 通过展示简短、具有启发性例子和简单但有效的算法,为读者提供特征提取领域的切入点。最后,第4节介绍了一种更理论化的形式,并指出了研究方向和有待解决的问题。
在这一节中,我们将介绍一些对本书第一部分的理解必要的关键概念。稍后会分别看到我们建立的不同概念。
这本书是关于预测建模(Predictive modeling)或有监督的机器学习问题(supervised machine learning)。后者指的是计算机科学的一个分支,其致力于用计算机程序重现人类学习能力。机器学习这个词最初是由塞缪尔在50年代创造的,旨在涵盖许多可以从人类转移到机器的智能活动。术语“机器”应该以抽象的方式来理解: 不是物理实例化的机器,而是一个自动化的系统,例如,可以在软件中部署。上个世纪50年代以来,机器学习的研究主要集中在寻找数据中的关系,并分析如何提取这种关系的过程,而不是构建真正的“智能系统”。
机器学习问题是指当一个任务是由一系列例子定义的,而不是由预先设置的规则定义的。机器学习问题有着广泛的应用:从机器人技术、模式识别(语音、手写、人脸识别),到互联网(文本分类)以及医学领域(诊断、预后、药物发现)。给定一些与预测结果相关的训练样本(也称为数据点、样本、模式或观察),机器学习的过程是仅仅只使用训练样本来发现模式和结果之间的关系。这与人类学习有很多相似之处,在学生的学习中,学生会得到一些例子,说明哪些是正确的,哪些是错误的,并推断出哪些规则是决策的基础。具体来说,考虑下面的例子: 训练数据是病人的临床观察数据,数据标签是健康状况:健康或患有癌症。学习目标是预测新的未知的测试实例的结果,即新患者的健康状况。在测试数据上的性能称为泛化能力。要执行此任务,必须建立一个预测模型或预测器,它通常是一个具有可调参数的函数,称为学习机,通过利用训练样本选择学习机的最优参数集。
我们将在本书的各个章节中看到,通常,增强学习机的泛化能力能够促进特征选择。基于这个原因,在第一章将会看到经典的学习机器(如Fisher的线性判别和K近邻)和先进的学习机器(如神经网络,树分类器,支持向量机(SVM))。更高级的技术如集成方法(ensemble methods)将在第5章进行介绍。不那么传统的神经模糊方法将在第8章中介绍。第2章提供了如何评估分类器性能的方法。但是,在进行任何建模之前,必须进行特征构造。这是下一节的内容。
在这本书中,数据用固定数量的特征来表示,这些特征可以是二进制的、分类的或连续的。特征和输入变量或属性是相同的意思。找到一个好的特征是取决于特定的领域,并且与可用的测量方法相关。在我们的医疗诊断示例中,特征可能是症状,即对患者健康状况进行分类的一组变量(例如发烧、血糖水平等)。
将原始数据转换为一组有用的特征通常需要人类的专业知识,此外,自动特征构造方法可以对其进行补充。在某些方法中,特征构造被集成到建模过程中(译者注:例如深度学习方法)。例如,人工神经网络中的“隐藏层的神经元”的计算就类似于构造特征。在其他方法中,特征构造属于预处理的过程。为了描述这个预处理的步骤,我们介绍一些概念:设 X X X为 n n n维的模式向量, X = [ x 1 , x 2 , … , x n ] X = [x_1, x_2,…,x_n] X=[x1,x2,…,xn], 这个向量的分量 x i x_i xi是原始特征。我们令 X ′ X' X′为 n ′ n' n′维的变换后的特征向量。预处理变换可能包括:
有些方法不改变空间维数(如信号增强、归一化、标准化),而有些方法则扩大空间维数(非线性扩张、特征离散化)、有的缩小空间维数(空间嵌入方法),或者朝任意方向降低维度(提取局部特征)。
特征构建是数据分析过程中的关键步骤之一,在很大程度上决定了后续统计或机器学习的成功与否。特别是,应该注意不要在特征构建阶段丢失信息。将原始特征添加到预处理后的数据中可能是个好主意,或者至少比较用两种数据表示方法获得的性能。我们认为,过于包容总比冒着放弃有用信息的风险要好。我们之前使用的医疗诊断示例说明了这一点。许多因素都可能影响病人的健康状况。在通常的临床变量(温度、血压、血糖水平、体重、身高等)之外,可能还需要添加饮食信息(低脂肪、低碳酸盐量等)、家族史,甚至天气状况。添加所有这些特性似乎是合理的,但这是有代价的:它增加了模式的维度,从而将相关信息沉浸在可能不相关、嘈杂或冗余的特性的海洋中。我们如何知道什么时候一个特征是相关的或信息丰富的?这就是特征选择的意义所在,也是本书的重点。
我们将特征提取问题分解为两个步骤:特征构建(在上一节中简要回顾)和特征选择(现在我们将关注这两个步骤)。虽然特征选择主要是为了选择相关的和信息丰富的特征,但它可能有其他动机,包括:
第一部分中有几章专门讨论特征选择技术。第三章回顾了滤波器法(filter methods)。滤波器通常被认为是特征排序方法。这些方法使用相关性指数提供了特征的完整顺序。排序指标的计算方法包括用来评估个体变量对结果(或目标)的依赖程度的相关系数。还使用了多种其他统计量,包括经典检验统计量(t检验、f检验、卡方检验等)。更普遍的是,在不优化预测器性能的情况下选择特征的方法称为“滤波器”。第6章介绍了信息理论滤波器。
第4章和第5章专门讨论包装器和嵌入式方法。这些方法将预测器作为选择过程的一部分。
包装器利用学习机作为黑盒子,根据特征的预测能力对子集进行评分。嵌入式方法在训练过程中进行特征选择,通常针对特定的学习机器。在数据集的小扰动下,包装器和嵌入方法可能产生非常不同的特征子集。为了减小这种影响,第七章解释了如何使用集成方法来提高特征集的稳定性。
特征选择的一个关键方面是正确地评估所选特征的质量。第二章回顾了经典统计和机器学习的方法。特别地,本章回顾了假设检验、交叉验证和实验设计某些方面(需要多少训练样本来解决特征选择问题)。
最后,需要注意的是,作为全局优化问题的一部分,特征构建和特征选择可以同时进行。第6章向读者介绍了这方面的方法。
第一部分的章节以主题的方式将论题分组,而不是以方法的方式。在本节中,受到(Liu and Motoda, 1998)观点的启发, 我们提出了一个统一的特征选择定义,它超越了旧的过滤器/包装器。
特征提取有四个方面:
最后三个方面与特征选择有关,如图1所示。
过滤器和包装器的不同主要取决于评价标准。一般认为过滤器使用的标准不涉及任何学习机,例如基于相关系数或统计检验的相关指数,而包装器使用基于给定特征子集训练的学习机的性能。
过滤器和包装方法都可以利用搜索策略来探索所有可能的特征组合的空间,而这些空间通常太大,无法详尽地探索(见第4章)。然而,有时过滤器被当做是特征排序方法,因为只有单个特征被评估,因此生成特征子集是平凡的(见第3章)。基于这样定义的规则,由学习机生成和计算得到的特征嵌套子集,就是采用包装方法。另一类嵌入方法(第5章)在训练算法中加入了特征子集的生成和评估。
最后一项,准则估计,将在第2章中介绍。需要克服的困难是,必须从有限的训练数据中估计一个已定义的标准(相关性指数或学习机器的性能)。有两种可能的策略:样本内或样本外。第一个(样本内)是经典的统计方法。它指的是使用所有的训练数据来计算一个经验估计。然后使用统计检验对估计进行测试,以评估其重要性,或者使用性能范围给出保证的估计。第二种(样本外)是机器学习方法。它指的是将训练数据拆分为用于估计预测模型(学习机)参数的训练集和用于估计学习机预测性能的验证集。平均多次分裂(或交叉验证)的结果通常用于减少估计量的方差(译者注:现在的机器学习方法多采用第二种方式)。
在1997年,当一个关于相关性的特别问题,包括一些关于变量和特征选择的论文发表(Blum and Langley, 1997, Kohavi and John, 1997),包含一些很少会使用超过40个特征的领域。这种情况在过去几年中发生了很大的变化。我们在2001年组织了第一次NIPS研讨会,该研讨会的论文集包括探索具有数百到数万个变量或特征的领域的论文(Guyon and Elisseeff, 2003)。在这次研讨会之后,我们组织了一个特色选择比赛,其结果在2003年的NIPS研讨会上公布。本书是后者的成果。
书中第二部分描述了比赛结果的排名和参与者使用的方法。第二章对比赛结果进行了总结。我们使用了五个数据集,这些数据集跨越了不同的领域(生物标志物发现、药物发现、手写识别和文本分类)和困难问题(输入变量是连续的或二进制的、稀疏的或密集的;一个数据集有不平衡的类。)一个数据集被人为地构建来说明一个特殊的困难问题:当没有单独提供信息的特征集时,选择一个特征集。我们选择了具有足够多示例的数据集,以创建足够大的测试集并获得统计上显著的结果(Guyon,2003)。我们引入了许多称为探头的随机特征,以增加任务的难度,并确定能够过滤掉它们的算法。
第10章描述了挑战获胜的方法。作者使用贝叶斯神经网络(Neal,1996)和Dirichlet扩散树(Neal,2001)的组合。对于所有数据集,它们的方法有两个方面是相同的:(1)通过使用简单的单变量显著性检验或主成分分析来选择特征子集,将用于分类的特征数量减少到不超过几百个;(2)使用基于贝叶斯学习的分类方法,在使用自动相关确定(ARD)之前,允许模型确定哪些特征最相关(MacKay,1994,Neal,1996)。马尔可夫链蒙特卡罗(MCMC)计算贝叶斯神经网络学习(Neal,1996)。Dirichlet扩散树是一种新的贝叶斯密度建模和层次聚类方法
在第二部分中提出的各种其他方法的性能几乎相同。对于特征选择,过滤方法被证明是非常有效的。前四名参赛者成功地探索了使用随机森林(RF)作为过滤器(第11章、第15章和第12章)。而简单相关系数(第13、14、20、23章)和信息理论排序标准(第22、24章)的表现也很好。最近引入的一些使用支持向量机(SVM)或相关核函数方法的嵌入式方法已成功应用(第12章、第13章、第16章、第18章、第19章和第21章)。其中最具创新性的方法是第17章和第29章提出了一种基于边缘的特征选择方法,该方法受到了Relief 算法的启发(Kira and Rendell, 1992)
在分类器的选择上,排名第二的入选者(第11章)使用简单的正则化最小二乘核方法作为分类器。许多其他的顶尖进入者使用具有各种损失函数的正则核方法,包括核偏最小二乘(KPLS)(21章), vanilla支持向量机(SVM)(第12、20、22、23和24章),传导支持向量机(第13章),贝叶斯SVM(第18章),潜在的SVM(第19章)和1-范数SVM(第十六章)。另外两名参赛者使用了与获胜者类似的神经网络(第14章和第26章)。其他方法包括随机森林(RF)(第15章)、朴素贝叶斯(24章和25章)和简单的最近邻(第17章)。
本书的第三部分用了几章介绍构建特征的新方法。第27章给出了线性和非线性空间嵌入方法的统一框架。第28章提出了一种构造任意损失的正交特征的方法。第31章给出了一个句法特征构造的例子:蛋白质序列基序。
在方法的森林中,刚刚开始这一领域的读者可能会迷失。在这一节中,我们将介绍基本概念,并简要描述简单而有效的方法。我们用小的二维分类问题(图2)来说明一些特殊情况。
特征选择的一种方法是根据单个特征之间相关性对特征进行排序(第3.1节)。这种特征排序方法被认为是快速有效的,特别是在特征数量大,可用的训练样本数量相对较少的情况下(例如,10,000个特征,100个例子)。在这些情况下,试图广泛搜索特征子集空间以获得最优预测的方法可能会慢得多,而且容易出现过拟合(对训练数据可以实现完美的预测,但对测试数据的预测能力可能会很低)。
然而,正如我们将在其他例子中看到的(第3.2节和第3.3节),由于“单变量"方法所做的潜在的特征独立性假设,使得单个特征的排序是有局限性的。
所谓的多变量方法考虑了特征之间的依赖关系。多变量方法可能获得更好的结果,因为它们没有对变量/特征独立性进行简化假设。
图2-a显示了一种情况,其中一个特征(x1)单独相关,而另一个特特征(x2)不能帮助提供更好的类分离。在这种情况下,单独的特征排序很有效:单独提供良好的类分离的特征所以排名高,因此将被选择。
皮尔逊相关系数是对个体特征进行排序的经典相关指标。我们用 x j x_j xj表示包含所有训练例子的第 j j j个特征的所有值的 m m m维向量,用 y y y表示包含所有目标值的 m m m维向量。 P e a r s o n Pearson Pearson相关系数定义为:
C ( j ) = ∣ ∑ i = 1 , j m ( x i , j − x ˉ j ) ( y i − y ˉ ) ∣ ∑ i = 1 , j m ( x i , j − x ˉ j ) 2 ∑ i = 1 m ( y i − y ˉ ) 2 (1) C(j) = \frac{|\sum_{i=1,j}^m(x_{i,j}-\bar x_j)(y_i - \bar y)|}{\sqrt {\sum_{i=1,j}^m(x_{i,j} - \bar x_j)^2\sum_{i=1}^m(y_i - \bar y)^2}}\tag{1} C(j)=∑i=1,jm(xi,j−xˉj)2∑i=1m(yi−yˉ)2∣∑i=1,jm(xi,j−xˉj)(yi−yˉ)∣(1)
变量上的横线表示的是对于索引 i i i的平均值,在向量 x i x_i xi和 y y y居中对齐之后(减去它们的平均值), P e a r s o n Pearson Pearson相关系数也是向量 x i x_i xi和 y y y之间的余弦相似性的绝对值。皮尔逊相关系数可用于回归和二值分类问题。
对于多类问题,可以使用密切相关的费雪系数。Pearson相关系数也与t检验统计量、朴素贝叶斯排序指标密切相关。有关详细信息和其他排名标准的例子,请参阅第3章。
特征空间的旋转往往会简化特征的选择。图2-a由图2-d旋转45度得到。我们注意到,为了实现同样的分离,图2-d中需要两个特征,而图2-a中只需要一个。旋转是一个简单的线性变换。一些预处理方法,如主成分分析(PCA)执行这样的线性变换,这允许减少空间维数和显示更好的特征。
相关性的概念与所追求的目标有关。与分类无关的特征可能与预测类条件概率有关。图2-a中的特征 x 2 x_2 x2就是这样。这两个类的样本来自于类中心与轴 x 1 x_1 x1对齐后的重叠高斯分布。因此,P(y|x)并不是独立于 x 2 x_2 x2,但无论保留 x 2 x_2 x2特征还是丢弃 x 2 x_2 x2特征,最优贝叶斯分类器的错误率是相同的。这表明密度估计是一个比分类更难的问题,通常需要更多的特征。
在接下来的内容中,我们证明了多变量方法的合理性,它利用联合考查而不是单独考查的特征的预测能力。
一个有用的特性本身可能是不相关的。多元方法的一个理由是,单独不相关的特征在结合使用时可能变得相关。图2-b给出了一个线性分离的例子,其中一个单独不相关的特征在与另一个特征一起使用时有助于更好地实现类分离。这种情况发生在现实世界的例子中:特征x1可能代表图像中被局部背景变化随机偏移的测量值; 特征x2可能测量的是这样的局部偏移量,它本身并没有提供信息。因此,特征x2与目标完全不相关,但从特征x1减去后,可提高其可分性。
两个单独不相关的特征在组合使用时可能变得相关。图2-c的例子,即众所周知的棋盘问题说明了这种情况。在特征选择挑战(见第二部分)中,我们提出了一个在更高维度空间中推广这种情况的问题:Madelon数据集是由放置在五个维度超立方体顶点上的集群构建的,并随机标记。
Relief 法是多变量过滤法的一个经典例子。使用多变量方法对特征子集进行排序,而不是对单个特征进行排序。
尽管如此,仍然存在根据单独特征在其他背景下的相关性,使用多元相关标准对其进行排序。为了说明这一概念,我们以由Relief算法(Kira and Rendell, 1992)衍生出的分类问题排序指标为例:
C ( j ) = ∑ i = 1 m ∑ k = 1 K ∣ x i , j − x M k ( i ) , j ∣ ∑ i = 1 m ∑ k = 1 K ∣ x i , j − x H k ( i ) , j ∣ (2) C(j)=\frac{\sum_{i=1}^m\sum_{k=1}^K|x_{i,j}-x_{M_k(i),j}|}{\sum_{i=1}^m\sum_{k=1}^K|x_{i,j}-x_{H_k(i),j}|}\tag{2} C(j)=∑i=1m∑k=1K∣xi,j−xHk(i),j∣∑i=1m∑k=1K∣xi,j−xMk(i),j∣(2)
稍后将解释表示法。Relief算法采用一种基于k近邻算法的方法。为了评价排序指标,我们首先在原始特征空间中识别,对于每个样本 x i x_i xi,取K个同一类中最近的{ x H k ( i ) x_{Hk(i)} xHk(i)}(距离最近且正确的类), k = 1,…, K ,以及,K个不同类{ x M k ( i ) x_{M_k(i)} xMk(i)}(距离最近且误分的类)中最近的样本。然后,在特征 j j j的投影中,将这些样本与距离最近且误分的类的距离之和与它们距离最近且正确的类的距离之和进行比较。在方程2中,我们使用这两个量的比率来创建一个独立于特征尺度变化的指标。Relief 算方法适用于多类问题。
多变量方法的另一个合理性理由是:它们考虑了特征冗余,并产生更紧凑的特征子集。检测冗余不能像单变量方法那样通过分析特征投影来完成。下面的示例将说明这一点。
当特征具有相同的投影分布时,可以实现降噪。在图2-d中,如果我们比较两个特征投影的分布,它们看起来很相似。然而它们并不是完全冗余的: 二维分布比任意一个特征的一维分布都能实现更好的类分离。在这个例子中,这两个类的数据点是由等方差 σ 2 \sigma^2 σ2的高斯分布产生的。在任何一个特征上的投影,两类之间的距离d是相同的。因此,每个特征的信噪比就是 d d d/ σ \sigma σ。在第一对角线上投影时,两类之间的距离为 d 2 d\sqrt 2 d2,因此信噪比提高了 2 \sqrt 2 2。加入 n n n个具有此类条件独立性的特征,信噪比可提高 n \sqrt n n。(译者注:信噪比越大越好)
相关性并不意味着冗余。图2-e和图2- f显示了更引人注目的例子,其中特征投影与图2-d相同。通常认为特征相关(或负相关)意味着特征冗余。在图2-f中,特征是相关的(译者注:散点图趋势越接近直线,越可能是相关),而且确实是冗余的:使用两个特征并没有比使用一个特征能够显著地改善类分离状况。但是在图2-e中,尽管两个特征具有相似的投影并且是负相关的,但它们根本不是冗余的:使用两个特征实现了完美的分离,而每个单独的特征提供了糟糕的类的分离。
在认识到在其他特征的背景下选择特征和消除冗余的必要性之后,我们有大量的算法可供选择。在包装器和嵌入式方法(第4章和第5章)中,贪婪方法(前向选择或后向消除)是最常用的。在前向选择方法中,人们从一个空集开始,并逐步添加性能指标改进后的特征。在向后消除过程中,人们从所有的特征开始,然后逐步消除最没用的特征。对于过拟合,这两种方法都相当快速和健壮的。这两个过程都提供了嵌套的特性子集。但是,我们将看到,它们可能导致不同的子集,根据应用程序和目标,一种方法可能比另一种方法更可取。我们用算法的例子来说明每种类型的过程。
向前或向后?在图2-g和h中,我们展示了一个三维示例,说明了正向和后向选择过程的差异。在这个例子中,前向选择方法首先选择 x 3 x_3 x3,然后选择另外两个特征中的一个,从而得到 x 3 , x 1 , x 2 x_3, x_1, x_2 x3,x1,x2或者 x 3 , x 2 , x 1 x_3, x_2, x_1 x3,x2,x1的顺序。后向选择方法会先消去 x 3 x_3 x3,然后再消去另外两个特征中的一个,最终得到 x 1 , x 2 , x 3 x_1, x_2, x_3 x1,x2,x3或者 x 2 , x 1 , x 3 x_2, x_1, x_3 x2,x1,x3中的一个。的确,在图2-h中,我们看到特征 x 1 x_1 x1和 x 2 x_2 x2中的前投影给出了类似于图2-e的图形。最后一个特征 x 3 x_3 x3单独分离得很好,优于单独取 x 1 x_1 x1或 x 2 x_2 x2。但是,与 x 1 x_1 x1或 x 2 x_2 x2结合使用,它不能提供像{ x 1 , x 2 x_1, x_2 x1,x2}对那样好的分离。因此,如果我们最终选择一个特征(排名最高的 x 3 x_3 x3),前向选择排序会产生更好的选择,但如果我们最终选择两个特征(排名最高的 x 1 x_1 x1和 x 2 x_2 x2),后向选择排序会产生更好的结果。反向消除过程可能产生更好的性能,但可能以更大的特征集为代价。然而,如果特征集减少太多,性能可能会突然下降。在我们前面的例子中,通过后向选择排名最高的特征比通过正向方法选择 x 3 x_3 x3要糟糕得多。
现在给出前向选择算法的例子。GramSchmidt正交化过程是正向选择方法的一个简单例子(详见第2章)。第一个选择的特征是与目标的余弦值最大。对于中心特征,这相当于首先选择与目标最相关的特征(方程1)。如下所示迭代地选择后续的特征:
该程序选择的特征,是以增量减少线性预测器的最小平方误差。我们可以通过统计检验或交叉验证来停止这个过程(第2章)。这个过程的优点是可以用很少的代码来描述,并且在实践中表现良好。我们给的Matlab实现算法在附录a .值得注意的是与偏最小二乘法(PLS)方法相似的地方是:两种方法涉及迭代计算(投影)输入特征和目标的相关性,紧随然后在所选的特征的零空间上进行一个新的投影;不同的是,在Gram-Schmidt中,选择原始输入特征,而在PLS中,选择的特征被构造成原始特征的加权和,权重由与目标的相关性给出。
另一个更先进的前向选择方法是“随机森林”或RF。决策树的集合(如随机森林(Breiman, 2001))在构建分类或回归树的过程中选择特征。免费的RF软件包来自http://www.stat.berkeley.edu/users/breiman/RandomForests/, Matlab接口来自http://sunsite.univie.ac.at/statlib/matlab/RandomForest.zip。
现在给出后向消除算法的例子。递归特征消除支持向量机(RFE-SVM)是向后消除方法的一个简单例子(详见第5章详细资料)。对于决策函数 f ( x ) = w x + b f(x) =wx +b f(x)=wx+b的线性SVM,该方法可归结为简单地迭代去除绝对值 ∣ w i ∣ |w_i | ∣wi∣中权重最小的特征 x i x_i xi,并对模型进行再训练。以次优为代价,在每次迭代中,通过去除一些特征加快该方法的速度。该方法也可以推广到非线性支持向量机(第5章)。支持向量机在第1章中有描述,并且有许多免费的软件包(参见http://www.kernel-machines.org/),这使得这种方法在实现方面相当简单。
RFE是一种根据目标函数的最小变化进行权值剪枝的方法。它遵循与最优脑损伤程序(OBD)相同的模式,OBD用于神经网络中的权值剪枝,并可用于特征选择。OBD也与比赛获胜者使用的自动相关性确定(ARD)贝叶斯方法相似(详见第7章和第10章)。
表1总结了本节中提到的方法。我们建议按照递增的统计复杂性的顺序尝试这些方法:
特征选择 | 分类器 | 计算复杂度 | 备注 |
---|---|---|---|
Pearson (公式 1) | 朴素贝叶斯 | n m nm nm | 排名滤波器特征。线性单变量。在特征之间做了独立性假设。低计算和统计复杂度。 |
Relief (公式 2) | K近邻 | n m 2 nm^2 nm2 | 特征排名滤波器。非线性多变量。由邻居数量决定统计复杂度。 |
Gram-Schmidt(第3.4节) | 线性RLSQ | f n m fnm fnm | 前向选择,停在特征f处。线性多变量。由正则化参数或岭系数决定的RLSQ的统计复杂度 |
RFE-SVM(第 3.4节) | SVM | m a x ( n , m ) m 2 max(n,m)m^2 max(n,m)m2 | 后向消除法。多元、线性或非线性。由核选择和软边界约束决定的统计复杂度。 |
OBD/ARD | 神经网络 | m i n ( n , m ) n m h min(n, m)nmh min(n,m)nmh | 后向消除法。非线性多变量。由隐藏单元数h和正则化参数或权值衰减决定统计复杂度 |
RF | RF | t n m l o g m t\sqrt n m log m tnmlogm | 每个预先前向选择中,由t树分类器集成学习。非线性多变量。 |
表1 常用的特征选择方法。我们用缩写RLSQ=正则化最小二乘;RFE =消除递归特征;支持向量机=支持向量机;OBD =最佳脑损伤;ARD =自动关联的决心;RF=随机森林。我们称m为训练样本的数量,n为特征的数量。计算复杂度主要取决于实现,应该谨慎对待。
计算复杂度有时也要考虑。我们在表1中增加了特征选择过程的一些数量级的计算复杂度。这并不包括确定要选择的特征的最佳数量的评估部分。我们估算的理由见附录B。
这本书介绍了一个迅速发展的领域的现状。这些应用推动了这一领域:生物信息学、化学信息学、文本处理、语音处理和机器视觉提供了非常高维空间的机器学习问题,但通常比较少的例子(数百个)。令人惊讶的是,现在仍然有大量的特征选择方法,而且似乎没有形成共识。第一个原因是有几个关于特征选择问题的表述。其他原因包括一些方法专门特定情况下(如二进制输入或输出),可以使用一些方法计算效率低下,所以他们只有少量的特征,一些方法容易过拟合,这样他们仅可以用于大量的训练样本。
简单的方法通常很有效,这一事实鼓励了从业者。然而,这不应掩盖问题的复杂性和我们在改进现有技术和巩固理论方面所面临的挑战。发明一种新的算法是了解这些问题的一种很好的方法。但是已有的算法太多,如果不从原则上进行改进,很难在现有技术的基础上有显著的提高。这一节提出了一些问题的正式数学表述,在这些问题上可以建立新的理论。
让我们先介绍一些符号。模式是特征向量 x = [ x 1 , x 2 , … , x n ] x = [x_1, x_2,…, x_n] x=[x1,x2,…,xn],它是一个随机向量 X = [ X 1 , X 2 , … , X n ] X = [X_1, X_2,…,X_n] X=[X1,X2,…,Xn]的实例。对于每一个值的取值,我们有一个概率 P ( X = x ) P(X = x) P(X=x)来决定。我们假设这些值是离散的,以简化符号。目标是一个取 y y y值的随机变量 Y Y Y, X和Y之间的依赖性由分布 P ( X = x , Y = y ) = P ( Y = y ∣ X = x ) P ( X = x ) P(X = x, Y = y) = P(Y = y |X = x)P(X = x) P(X=x,Y=y)=P(Y=y∣X=x)P(X=x)决定。
我们的意思是,对于随机变量所取的所有值,等式都成立。设 V V V是 X X X的子集。设 X − i X^{ -i} X−i是 X X X除 x i x_i xi外的子集。并且 V − i V^{-i} V−i是 X − i X^{-i} X−i的子集。
我们从相关特征的概念开始。我们首先将不相关性定义为随机变量独立性的结果,然后通过对比来定义相关性。首先,我们假设对数据分布有一定的了解,而实际上这些数据分布是未知的。然后我们讨论在有限样本情况下可以做什么。
定义1:确定不相关特征(Surely irrelevant feature)。一个特征 X i X_i Xi是确定和所有 V − i ∈ X − i V^{-i} \in X^{-i} V−i∈X−i的子集不相关: P ( X i , Y ∣ V − i ) = P ( X i ∣ V − i ) P ( Y ∣ V − i ) P(X_i, Y |V^{ -i}) = P(X_i|V^{ -i})P(Y |V^{ -i}) P(Xi,Y∣V−i)=P(Xi∣V−i)P(Y∣V−i)5
由于我们很少关心概率为零或较小的情况,因此测量概率的不相关性似乎很自然,例如 P ( X i , Y ∣ V − i ) P(X_i, Y |V^{ -i}) P(Xi,Y∣V−i)和 P ( X i ∣ V − i ) P ( Y ∣ V − i ) P(X_i|V^{-i})P(Y |V^{ -i}) P(Xi∣V−i)P(Y∣V−i)之间的Kullback-Leibler散度:
M I ( X i , Y ∣ V − i ) = ∑ { X i , Y } P ( X i , Y ∣ V − i ) l o g P ( X i , Y ∣ V − i ) P ( X i ∣ V − i ) P ( Y ∣ V − i ) MI(X_i, Y|V^{-i}) = \sum_{\{X_i, Y\}}P(X_i, Y|V^{-i}) log\frac{P(X_i, Y |V^{ -i}) }{ P(X_i|V^{ -i})P(Y |V^{ -i})} MI(Xi,Y∣V−i)={Xi,Y}∑P(Xi,Y∣V−i)logP(Xi∣V−i)P(Y∣V−i)P(Xi,Y∣V−i)
我们注意到得到的表达式中随机变量 X i X_i Xi和 Y Y Y的所有可能值的和就是条件互信息6。因此它是一个 n − 1 n - 1 n−1个变量的函数。为了得出一个能够总结特征 X i X_i Xi相关性程度的分数,我们对所有 V − i V^{-i} V−i条件下的互信息值进行平均: E M I ( X i , Y ) = ∑ V − i P ( V − i ) M I ( X i , Y ∣ V − i ) EMI(X_i, Y ) =\sum_{V^{-i}} P(V^{-i})MI(X_i, Y |V^{-i}) EMI(Xi,Y)=V−i∑P(V−i)MI(Xi,Y∣V−i)
我们定义:
定义2:近似无关特征(Approximately irrelevant feature):在近似水平 ϵ > 0 \epsilon > 0 ϵ>0或者 ϵ − r e l e v a n t \epsilon -relevant ϵ−relevant下, 一个特征 X i X_i Xi是近似无关特征,当且仅当,对于所有 V − i ∈ X − i V^{-i} \in X^{-i} V−i∈X−i的子集有:
E M I ( X i , Y ) ≤ ϵ EMI(X_i, Y) \leq \epsilon EMI(Xi,Y)≤ϵ
当 ϵ = 0 \epsilon=0 ϵ=0, 特征被称为几乎确定无关。
在上面表述中,自然会想到把条件互信息当做是相关性的排序指标,我们可以通过对比不相关性的概念来定义相关性。但是这样定义中的特征选择的计算代价昂贵,因为它需要考虑所有的子集特征 V − i V^{-i} V−i和所有 V − i V^{-i} V−i的值累加求和。但是如果我们假设对于所有 i ≠ j i \neq j i=j, 特征 X i X_i Xi和 X j X_j Xj 是独立的,那么平均条件互信息 E M I ( X i , Y ) EMI(X_i, Y) EMI(Xi,Y)是与 X i X_i Xi和 Y Y Y之间的互信息相同的: E M I ( X i , Y ) = M I ( X i , Y ) EMI(X_i, Y ) = MI(X_i, Y ) EMI(Xi,Y)=MI(Xi,Y)
这引出了下面的定义:
定义3:单独无关特征。特征 X i X_i Xi是单独无关,当且仅当,存在相关阈值 ϵ ≥ 0 \epsilon\geq 0 ϵ≥0使得:
M I ( X i , Y ) ≤ ϵ MI(X_i, Y ) ≤ \epsilon MI(Xi,Y)≤ϵ
这个定义的推导证明了使用互信息作为特征排名指数的合理性(见第6章)。
现在讨论有限样本(finite sample case )。在实际情况中,我们无法获得 P ( X ) P (X) P(X)和 P ( Y ∣ X ) P (Y |X) P(Y∣X)的概率分布,但我们有从这些分布中提取的训练样本。我们定义了一个可能近似不相关(Probably approximately irrelevant)的新概念。同时,我们将定义中的准则 E M I ( X i , Y ) EMI(X_i, Y) EMI(Xi,Y)或 M I ( X i , Y ) MI(X_i, Y) MI(Xi,Y)替换为一个通用的非负指标 C ( i ) C(i) C(i),对于不相关的特征,其期望值为零。我们将指标写成 C ( i , m ) C(i, m) C(i,m),以强调它是由 m m m个训练样本计算出来的经验指标值。
定义4:可能近似不相关特征(Probably approximately irrelevant feature):由 m m m个样本的计算的指标 C C C的估计值,在近似水平 ϵ ≥ 0 \epsilon \geq 0 ϵ≥0和风险 δ ≥ 0 \delta\geq0 δ≥0下,特征 i i i可能近似无关, 当且仅当: P ( C ( i , m ) > ϵ ( δ , m ) ) ≤ δ P(C(i, m) > \epsilon(δ, m)) ≤ \delta P(C(i,m)>ϵ(δ,m))≤δ
显然,对于相关的特征,我们并不知道大小为 m m m而类型不同的训练集之间 C ( i , m ) C(i, m) C(i,m)的概率分布,所以我们似乎进展不大。然而,对于不相关的特征,我们可以对 C C C的分布做一些假设。遵循假设检验的范式,我们称不相关特征的 C C C值分布为零(null)分布。对于给定的候选特征i,原假设为该特征不相关。如果 C ( i , m ) C(i, m) C(i,m)显著偏离零,我们将拒绝这个原假设。使用零(null)分布和一个选择风险值,我们可以计算显著性阈值 ( δ , m ) (\delta,m) (δ,m),评估特征相关性的统计显著性方法将在第二章进一步探讨。
讨论。文献中提供了许多有关相关性的定义。Kohavi和John (Kohavi and John, 1997)区分了强相关特征和弱相关特征。我们回顾这些定义:
特征 X i X_i Xi是强相关的, 当且仅当,存在一些值 x i , y , v i x_i, y, v_i xi,y,vi,当 P ( X i = x i , X − i = v i ) > 0 P (X_i = x_i, X^{-i} = v_i) > 0 P(Xi=xi,X−i=vi)>0时: P ( Y = y ∣ X i = x i , X − i = v i ) ≠ P ( Y = Y ∣ X − i = v i ) P (Y=y | X_i = x_i ,X^{-i} = v_i) \neq P (Y = Y | X^{-i} = v_i) P(Y=y∣Xi=xi,X−i=vi)=P(Y=Y∣X−i=vi)7。一个特性 X i X_i Xi是弱相关的, 当且仅当, 它不那么强相关,并且如果存在特征集合 V − i V^{-i} V−i的一个子集,对于存在一些值 x i , y , v i x_i, y, v_i xi,y,vi, 使得当 P ( X i = x i , V i = v i ) > 0 P(X_i = x_i, V_i = v_i) >0 P(Xi=xi,Vi=vi)>0 时有: P ( Y = y ∣ X i = x i , V i = v i ) ≠ P ( Y = y ∣ V i = v i ) P (Y = y |X_i = x_i, V_i = v_i) \neq P (Y = y |V_i = v_i) P(Y=y∣Xi=xi,Vi=vi)=P(Y=y∣Vi=vi)。
我们对相关性的渐近定义同样基于条件作用。Kohavi和John对强相关性和弱相关性的介绍似乎是以考虑冗余的需要为指导的:需要强相关性特征,不能删除;而弱相关性特征与其他相关特征是冗余的,因此如果保留相似特征,可以省略弱相关特征。我们的方法将冗余的概念与相关的概念分开:如果一个特征包含了关于目标的一些信息,那么它就是相关的。由于我们对相关性的定义不那么具体,我们在第4.2节引入了充分特征子集(sufficient feature subset)的概念,这是一个提取相关特征的最小子集的概念,从而在需要时排除冗余概念。
在上一节中,我们提供了特征相关性概念的正式定义。如3.3节所述,相关的特征可能是冗余的。因此,根据相关性对特征进行排序, 并不能提取出能够做出最优预测的最小特征子集。在本节中,我们提出了特征子集充分性的一些正式定义。我们引入符号 V ˉ \bar V Vˉ来表示特征集合 V V V的补集,其中 V ∈ X : X = { V , V ˉ } V\in X : X=\{V, \bar V\} V∈X:X={V,Vˉ}。
定义5:确定充分特征子集(Surely sufficient feature subset ):一个特征集合的子集 V V V是充分的,当且仅当,对该子集的补集 V ˉ \bar V Vˉ所有取值有: P ( Y ∣ V ) = P ( Y ∣ X ) P(Y |V ) = P(Y |X) P(Y∣V)=P(Y∣X)
就像在定义特征相关性的情况下一样,由于我们很少关心概率为零或概率很小的情况,因此在概率中度量充分性似乎很自然。我们定义一个新的量: D M I ( V ) = ∑ { v , v ˉ , y } P ( X = [ v , v ˉ ] , Y = y ) l o g P ( Y = y ∣ X = [ v , v ˉ ] ) P ( Y = y ∣ V = v ) DMI(V)=\sum_{\{v,\bar v, y\}}P(X=[v,\bar v], Y=y)log\frac{P(Y=y|X=[v,\bar v])}{P(Y=y|V=v)} DMI(V)={v,vˉ,y}∑P(X=[v,vˉ],Y=y)logP(Y=y∣V=v)P(Y=y∣X=[v,vˉ])
这个量在(Koller and Sahami, 1996)中被引入,是 P ( Y ∣ X ) P(Y |X) P(Y∣X)和 P ( Y ∣ V ) P(Y |V) P(Y∣V)之间的Kullback-Lebler散度的期望值除以P(X)。可以证明: D M I ( V ) = M I ( X , Y ) − M I ( V , Y ) DMI(V ) = MI(X, Y ) - MI(V , Y ) DMI(V)=MI(X,Y)−MI(V,Y)
定义6:近似充分特征子集(Approximately sufficient feature subset):特征集合的子集 V V V是近似充分特征子集,在近似水平 ϵ ≥ 0 \epsilon \geq 0 ϵ≥0, 或者是 ϵ − 充 分 \epsilon-充分 ϵ−充分, 当且仅当:
D M I ( V ) ≤ ϵ DMI(V ) \leq \epsilon DMI(V)≤ϵ
如果 ϵ = 0 \epsilon =0 ϵ=0那么,子集V就是几乎充分的。
定义7:最小近似充分特征子集(Minimal approximately sufficient feature subset ):当且仅当近似水平 ϵ ≥ 0 \epsilon \geq 0 ϵ≥0时,如果它是 ϵ − 充 分 \epsilon-充分 ϵ−充分的,并且不存在其他较小的 ϵ − 充 分 \epsilon-充分 ϵ−充分的子集,那么特征的一个子集V是最小的近似充分的。
根据我们的定义,可以得出推论:最小近似充分特征子集是优化问题的一个解(可能不是唯一的): min V ∣ ∣ V ∣ ∣ 0 \min_V ||V||_0 Vmin∣∣V∣∣0 s . t D M I ( V ) ≤ ϵ s.t\quad DMI(V ) ≤ \epsilon s.tDMI(V)≤ϵ
式中, ∣ ∣ V ∣ ∣ 0 ||V||_0 ∣∣V∣∣0表示选择的特征数量。这种优化问题可以通过使用拉格朗日乘子 λ > 0 \lambda > 0 λ>0进行变换为:
min V ∣ ∣ V ∣ ∣ 0 + λ D M I ( V ) \min_V ||V||_0 + \lambda DMI(V ) Vmin∣∣V∣∣0+λDMI(V)
需要注意的是 M I ( X , Y ) MI(X,Y) MI(X,Y)是常数,因此上面等价于:
min V ∣ ∣ V ∣ ∣ 0 − λ M I ( V , Y ) \min_V ||V||_0 - \lambda MI(V, Y ) Vmin∣∣V∣∣0−λMI(V,Y)
我们获得了第6章所述的特征选择问题:找到使特征子集和目标之间的互信息最大的最小可能特征子集。
我们注意到V0是离散的,因此很难优化。有人建议(Tishby et al., 1999)用MI(X, V)代替它。如3.1节所述,后验概率的预测是一个比分类或回归更难的问题。因此,我们可能想用最小化给定风险函数(例如分类错误率)来代替最大化互信息的问题。零范数特征选择方法的制定遵循了这一思路(见第5章)。
如果数据具有冗余的特征,不同的特征子集可以同等有效。对于某些应用程序,可能希望有意生成可提供给后续处理阶段的备选子集。仍然有人可能会发现方差是不可取的,因为(i)方差通常是泛化能力很差的模型的症状, (ii)结果不可重复;(iii)一个子集不能捕捉全局信息。
在第七章中提出的一种稳定变量选择的方法是使用集成方法。特征选择过程可能会重复选择带有训练数据的子样本。所选特征子集的并集可以作为最终的稳定子集。可以将相关性指标定义为单个特征在选定子集中出现的频率。
这种方法显示出了巨大的潜力,但有以下局限性值得一提:当一个与自身高度相关的特征是许多具有弱独立相关性的可替代的特征的补集时,高度相关的特征将很容易在过程中浮现,而弱相关特征则很难从不相关的特征中区分开来。这可能对性能不利。
在结束本章之前,我们想描述一些我们认为值得注意的研究方向。
更具有理论基础的算法。很多流行的算法没有原则性,很难理解它们要解决什么问题以及如何以最佳方式解决它。重要的是要从一个清晰的数学表述开始(见第4.1节和第4.2节的初步指南)应该清楚地说明所选择的方法如何最佳地解决所述问题。最后,对于所述的优化问题, 该算法所作的最终近似应加以说明。一个有趣的研究课题是在理论框架内改进成功的启发式算法。
更好地估计计算成本。计算方面的考虑是相当容易理解的。但是,尽管不断增长的计算机速度降低了算法效率的重要性,但估计算法在特征选择问题上的计算成本仍然是至关重要的。计算时间本质上是由搜索策略和评价准则驱动的。有几种特征选择方法需要检查大量的特征子集,可能还需要检查所有的特征子集,即 2 n 2^n 2n个子集。贪心方法通常更省力,只访问 n n n或 n 2 n^2 n2个的子集。评估准则也可能是代价昂贵的,因为它可能涉及训练一个分类器或比较每对样本或特征。另外,评估标准可能涉及一个或几个嵌套的交叉验证循环。最后,集成方法以额外的计算为代价提高了性能。
更好特征选择的性能评估。另一个需要解决的重要问题是统计性质方面的:在选择相关的特征或获得良好的预测性能上,一些方法比其他方法需要更多的训练样本。过度拟合的危险在于找到能很好地解释训练数据的特征,但却不具备真正的相关性或预测能力。对解决特征选择问题所需的样本数进行理论预测,对于选择合适的特征选择方法和规划未来的数据采集至关重要。解决这个问题的初步结果如(Almuallim和Dietterich, 1991)和(Ng, 1998)。
睿智的读者会注意到,在4.2节中,我们没有处理有限的样本情况以获得足够的特征子集。形式表述还不够充分。我们认为,在有限的样本情况下,不充分的特征子集可能比充分的子集(即使它们是最小的,不包含不相关的特征)产生更好的性能,因为进一步降低空间维数可能有助于降低过拟合的风险。根据包装器方法论(Kohavi和John, 1997),可能有必要引入一个有效特征子集的概念:当学习机用有限数量的m个样本训练时,一个子集提供风险的最佳期望值。一个核心问题是设计性能界限来描述有效的特征子集。
**其他挑战。**虽然我们在这篇介绍和书中努力涵盖了大量与特征提取相关的主题,但我们并没有穷尽所有。我们简要列出其他一些感兴趣的主题。
无监督的变量选择。一些作者尝试为集群应用程序进行特征选择(参见,例如,Xing和Karp, 2001, Ben-Hur和Guyon, 2003,以及其中的参考文献)。对于有监督的学习任务,可能需要预先过滤一组最重要的变量,而不是使用y来减少过度拟合的问题。
样本选择。特征选择/构造的对偶问题就是样本选择/构造。标错的样本可能会导致错误的特征选择,因此最好是将特征和样本联合进行选择。
**系统逆向工程。**我们的介绍集中在构造和选择有用的特征来建立一个好的预测器的问题上。阐明变量之间的因果关系和对产生数据的系统进行反向工程是一项更具挑战性的任务(见,例如,Pearl, 2000),这超出了本书的范围。
在这篇介绍中,我们介绍了特征提取问题的许多方面。这本书涵盖了广泛的主题,并提供了解决问题的途径,特别是特征选择,这是本书的第二部分的对象。简单而有效的解决办法已经被提出作为出发点。读者现在可以学习其他章节来发现更高级的解决方案。我们已经指出了一些开放的问题,以挑战读者为这个迅速发展的领域作出贡献。
ClopiNet, 955 Creston Rd., Berkeley, CA 94708, USA. [email protected] ↩︎
IBM Research GmbH, Zurich Research Laboratory, S ¨ ¨aumerstrasse 4, CH-8803Ruschlikon, Switzerland. ¨ [email protected] ↩︎
http://clopinet.com/isabelle/Projects/NIPS2003/call-for-papers.html ↩︎
译者注:本文中,相关一词指的是特征和目标之间的相关性 ↩︎
译者注--条件独立定义:事件 Z 的发生,使本来可能不独立的事件X和事件Y变得独立起来。则称X、Y关于Z条件独立。数学符号表示:对于第三个给定事件Z,如果有 P ( X , Y ∣ Z ) = P ( X ∣ Z ) P ( Y ∣ Z ) P(X,Y|Z)= P(X|Z)P(Y|Z) P(X,Y∣Z)=P(X∣Z)P(Y∣Z),则称X、Y关于Z条件独立。 ↩︎
译者注:互信息(非条件互信息) M I ( X , Y ) = ∑ { X , Y } P ( X , Y ) l o g P ( X , Y ) P ( X ) P ( Y ) MI(X,Y)=\sum_{\{X,Y\}}P(X,Y)log\frac{P(X,Y)}{P(X)P(Y)} MI(X,Y)={X,Y}∑P(X,Y)logP(X)P(Y)P(X,Y), 即联合分布P(X,Y)与边缘分布P(X)P(Y)的相对熵 ↩︎
译者注(条件独立事件的推论):若 X,Y关于事件Z条件独立,则有 P ( Y ∣ X , Z ) = P ( Y ∣ Z ) P(Y|X,Z)=P(Y|Z) P(Y∣X,Z)=P(Y∣Z)成立。证明过程: P ( Y ∣ X , Z ) = P ( Y ∣ X , Z ) P ( X ∣ Z ) P ( X ∣ Z ) = P ( Y ∣ X , Z ) P ( X , Z ) P ( Z ) P ( X ∣ Z ) = P ( X , Y , Z ) P ( Z ) P ( X ∣ Z ) = P ( X , Y ∣ Z ) P ( X ∣ Z ) = P ( X ∣ Z ) P ( Y ∣ Z ) P ( X ∣ Z ) = P ( Y ∣ Z ) P(Y|X,Z)=P(Y|X,Z)\frac{P(X|Z)}{P(X|Z)}=\frac{P(Y|X,Z)\frac{P(X,Z)}{P(Z)}}{P(X|Z)}=\frac{\frac{P(X,Y,Z)}{P(Z)}}{P(X|Z)}=\frac{P(X,Y|Z)}{P(X|Z)}=\frac{P(X|Z)P(Y|Z)}{P(X|Z)}=P(Y|Z) P(Y∣X,Z)=P(Y∣X,Z)P(X∣Z)P(X∣Z)=P(X∣Z)P(Y∣X,Z)P(Z)P(X,Z)=P(X∣Z)P(Z)P(X,Y,Z)=P(X∣Z)P(X,Y∣Z)=P(X∣Z)P(X∣Z)P(Y∣Z)=P(Y∣Z) ↩︎