04特征工程
概述
定义
使用数学、统计学和领域知识,甚至不可言说的技巧将原始数据转化为高质量特征的过程,有效的特征可以让你的机器学习模型更加强大。(特征就是机器学习算法模型的输入)
特征工程指的是把原始数据转变为模型的训练数据的过程,它的目的就是获取更好的训练数据特征。
特征工程简单讲就是发现对因变量y有明显影响作用的特征,通常称自变量x为特征,特征工程的目的是发现重要特征。
特征工程的核心目标
- 提升信息密度:从数据中提取关键信号,消除噪声。
- 适配模型需求:如线性模型需要特征归一化,树模型需要特征分箱。
- 降低计算成本:通过特征降维/选择减少冗余数据。
为什么做特征工程
众所周知,数据是开发人工智能模型的基础。近年来,随着互联网和大数据技术的快速发展,在各类人工智能项目实践中可以利用的数据资源是爆炸式增长的。
从数据来源上看,既包括具体业务场景中的用户资料和财务信息,也涵盖了如电商、社交、餐饮、出行、支付等非信贷业务中产生的行为类数据;
从数据的存储格式上看,既包含结构化数据(如数据库、 Excel 表格),也存在大量半结构化(如 XML、 JSON 日志文件)和非结构化数据(如图像、文本、视频等)。
如此丰富的数据资源为研发更加精准的预测模型提供了机会,却也大大增加了数据治理和特征工程的难度。这种困难主要体现在五个方面:
第一,数据的来源广、体量大、噪声多、不确定性强,且存在大量偏差、错误以及无效的信息,数据的质量和真实性难以保证;
第二,数据关系复杂,表格间的耦合程度高,数据整合困难,难以提取有效特征,容易影响评分模型的预测精度和迭代效率;
第三,数据样本在高维空间中的分布较为稀疏,距离计算困难,引发维度灾难,导致传统的统计学模型无法较好地拟合其分布规律;
第四,数据的统计分布十分复杂,既有labeled data也有unlabeled data,导致了幸存者偏差;
第五,labeled data中具有imbalanced的类别分布,进一步影响了各类人工智能模型的训练。
从上述讨论可以看出,在开发人工智能预测模型时,有效特征往往不能从原始数据中直接获得,而是需要依托领域知识和技术工具,对数据进行清洗、挖掘、构造和筛选之后才能得到。
比较抽象,举一个简单的小例子来说明。
下图中有一些蓝色的点和一些绿色的点,在直角坐标系下它们的分布如左图所示,肉眼看上去,它们显然是属于两个类别,但是如果你想用一个机器学习的线性分类器去做分类的话是很困难的。但是你把这些点转移到极坐标系下,它们就可以很容易用一个线性分类器做分类了。
图片来自Yoshua Bengio《Deep Learning》(花书)
从上面这个小例子就能看出,数据的表示方式对机器学习模型的效果的影响还是很大的。这也是我们圈内经常说的,“数据和特征决定了机器学习的上限,而模型和算法只能去逼近这个上限”。希望大家牢牢地记住这句话。不管是做机器学习的比赛还是实际的项目,特征工程都是最最重要的一部分。
Coming up with features is difficult, time-consuming, requires expert knowledge. "Applied machine learning" is basically feature engineering.
— 吴恩达Andrew Ng, Machine Learning and AI via Brain simulations
“...some machine learning projects succeed and some fail. What makes thedifference? Easily the most important factor is the features used.”
—《终极算法:机器学习和人工智能如何重塑世界》作者 Pedro Domingos
我在数据科学竞赛:你从未见过的究极进化秘笈这篇文章中曾多次强调,机器学习不是你看书就能掌握的。判断你是不是内行的关键在于对特征工程的认知水平。
特征工程是一项既重要又极其难以解决的问题,其中涉及的领域知识、技术工具、经验技巧都是十分庞杂的。而从现实情况来看,不管是工业界还是学术界,对这个问题的解决依然缺少一套结构化、系统化、自动化的特征工程方法论。
具体来讲:
在工业界,特征工程的各个环节主要依靠人工经验来完成,构造特征时容易出现盲区和遗漏,导致模型的质量严重依赖建模人员的业务经验和技术能力,模型的预测精度不高、稳定性差、迭代效率低,难以满足实际的建模需求。同时,现存的各种特征工程技术方法,存在大量琐碎的技术细节,且只能满足基本的数据清洗、分组、统计需求,远远覆盖不到特征工程的所有环节。
在学术界,绝大多数文献拒绝讨论特征工程的具体细节,实证实验中大量使用数据格式简单、无标签缺失的高质量开源数据集做对比分析,对如何从海量用户行为数据中挖掘、提取、构造和筛选有效特征,即对特征工程的理论研究尚不充分。
此外,特别需要强调的是,虽然目前存在很多深度学习技术可以解决图像和文本等非结构化数据的特征工程问题,但在更多的机器学习预测应用中,绝大部分建模数据是具有复杂逻辑关系的结构化数据(Structured data,也称表格型数据, tabular data),面向此类数据的特征工程技术依然处在一个缺乏结构化、体系化方法论的阶段。
综上所述,不论是工业界还是学术界,都需要一套有效的特征工程方法论来指导实践工作。
特征与属性的区别
并不是所有的属性都可以看做特征,区分它们的关键在于看这个属性对解决这个问题有没有影响!可以认为特征是对于建模任务有用的属性。表格式的数据是用行来表示一个实例,列来表示属性和变量。每一个属性可以是一个特征。特征与属性的不同之处在于,特征可以表达更多的跟问题上下文有关的内容。特征是一个对于问题建模有意义的属性。我们使用有意义(有用的)来区别特征和属性,认为如果一个特征没有意义是不会被认为是特征的,如果一个特征对问题没有影响,那就不是这个问题的一部分。在计算机视觉领域,一幅图像是一个对象,但是一个特征可能是图像中的一行;在自然语言处理中每一个文档或者一条微博是一个对象,一个短语或者单词的计数可以作为特征;在语音识别中,一段声音是一个实例,一个特征可能是单个词或者发音。
怎样做特征工程:面向结构化数据的特征工程技术框架
基于丰富的实践经验,我曾从整体上对结构化数据特征工程的相关技术方法进行过梳理、归纳和总结,并对相关概念做了澄清和重新定义,提出了一个面向结构化数据的特征工程技术框架。
这个技术框架共包含五大类方法,分别是:数据预处理、特征构造、特征提取、特征选择和特征监控。
下面将对这个结构化、系统化的特征工程技术框架作详细介绍。
数据预处理
在研发人工智能模型时,因内生性原因和技术性偏差,用于建模的结构化数据中存在大量的缺失值、冗余值、异常值等噪声数据,它们会影响机器学习模型的训练和优化,导致模型的预测性能下降。为了确保数据的可靠性,提升数据的利用价值,需要对其进行预处理。结合实践经验,我将人工智能建模中常用的数据预处理方法归纳为数据整合、数据清洗、数据变换、数据规范化和数据重采样等五个部分,每部分所涉及的具体方法如图2所示。
数据整合(Data Integration),主要用于解决数据的多源性、异构性分布问题。对一家公司而言,为了满足自身快速增长的业务需求,经常分时、分批次研发新的信息系统和数据库系统,或者引入其他公司的数据源。因系统间的独立性,数据源是封闭、异构的,导致数据难以在系统之间共享和融合,容易产生“信息孤岛”。面对这类问题,可以基于数据库的表结构、表间关系和变量含义,绘制出实体-关系图(Entity Relationship Diagram, E-R 图),理清不同数据源之间的结构关系,为后续的特征工程做好垫。
数据清洗(Data Cleaning),主要包括对结构化数据中某些特征的缺失值进行填充、对离群值和异常值的识别、对不一致(歧义)数据的纠正等工作。从实践经验来看,针对数据中的缺失值,一般采用插补法进行填充,填充内容可以是某变量的均值、中位数、众数等;对离群值,一般可以将其删除,或使用特殊值进行替换;对异常值,一般也采用删除或替换的处理方式;对于数据中的冗余值,一般执行删除操作。
数据变换(Data Transforming),由于不同的机器学习算法对输入数据形式的要求不同,因此需要对结构化数据进行数据(特征)变换,将原始的属性值映射为适合算法运行的数值形式。具体来讲,对于离散(类别)型特征,有效的变换方式包括独热编码、序列编码等形式,详细的变换方式可参考图2。对于连续(数值)型特征,如需要去除分布噪声,可以考虑使用离散化(分箱)技术。另外,考虑到部分机器学习算法要求输入数据必须服从高斯分布,有时还需要对存在长尾分布或者非高斯分布的连续型特征进行分布变换,常用的分布变换方法包括使用 ln 和 log 函数对特征进行取值转换。特别地,在某些特殊的预测模型(如信用评分卡)设计中,还常常使用名为证据权重(Weight of Evidence, WOE)的数据变换方式。
数据规范化(DataStandardization),大部分机器学习算法均使用梯度下降类算法搜索最优的模型参数,为了使其收敛更加迅速,需要对数据进行标准化。数据标准化也称数据规范化,即将每个特征的属性值按比例进行缩放,通过某个函数变换将给定属性值映射到一个新的、无量纲的值域中。常用的数据标准化方法包括min-max、小数定标和 Z-score 标准化等,在研发人工智能模型时可以基于实际需求选择适合的数据标准化方法。
重采样(Data Resampling),在研发人工智能模型时,有时为了获得质量更高的训练集和测试集,还需要对数据进行重采样处理。基于有限的经验来看,数据重采样方法主要解决两方面的问题,如图2所示。首先,在许多时间序列预测问题(如流量预测、销量预测)中,常常需要使用滑窗法(Sliding Window)重构训练集,详细的技术方法可参考文献[1]。其次,各类监督学习模型的一个基本假设是不同类别的样本量是接近的,而用于人工智能建模的数据常常存在不平衡的类别分布。对原始训练样本进行重采样的具体方法可归纳为过采样、欠采样和混合采样三种[2]。
特征构造
在研发人工智能模型时,能够用于风险识别的有效特征并不是与生俱来的,而是需要丰富的业务知识和巧妙的技术手段,花费较多人力和时间才能够发现的。从预测问题出发,基于具有复杂关联关系的结构化数据进行特征设计和研发,实现特征空间扩展的过程即为特征构造(Feature Construction)。
特征构造的核心目标是研发原始数据表中并不存在的新特征,从而更好地对预测问题进行表示,因此是一个特征从“无”到“有”的过程。特征构造是整个特征工程流程中最为重要的一部分,但由于数据的复杂性和技术方法的不完善,特征构造常常被视为一种依赖头脑风暴的“艺术”而不是可以按图索骥的“技术”。
在大量应用场景中,原始建模数据主要是具有复杂关联关系的结构化数据。针对此类数据的特征构造流程十分复杂,且涉及数千维特征的研发,特征的好坏严重依赖技术专家的实践经验。综合考虑构造特征的可用性和可靠性,目前实践中特征构造仍主要由人工来完成。不过,需要说明的是,即便是依靠头脑风暴的人工构造,也是有章法可循的,并不是完全的奇思妙想。
首先,可以基于各张表格的连接关系绘制实体-关系图。一般来讲,可以将每张表格的主键定义为一个实体,因此实体可以是人、物、事件等;而实体间的关系可以是从属关系、相关关系等。例如,在 2018 年由蚂蚁金服举办的支付风险识别算法竞赛中,可以绘制出由付款方、收款方、支付事件、支付设备四个实体构成的实体-关系图。实体-关系图可以帮助风险建模人员更好的理解数据关系,进而可以结合业务背景理解每个实体及其属性的具体含义。针对实体自带的各种属性,可以使用加减乘除等数学运算进行拆分或组合,得到一部分新的特征。
其次,可以通过数据可视化方法,分析实体行为的变化趋势,思考行为中存在的模式、规律或异常。从数据形式上来讲,实体的行为数据一般为时间序列数据。针对此类数据,可以先考虑基于实体(主键)进行聚合,然后进行求和、平均值、极大值、极小值、标准差等统计计算,得到新的特征。
此外,还可以从各实体间的关系出发,思考各个实体之间可能存在的相互依赖或影响关系,设计出新的特征。例如,在支付风险识别问题中,可以考虑付款方和收款方的关系、付款方和设备的关系。若付款方和收款方为同一人,付款用户的设备存在频繁更换,则很有可能是非法交易。
除了依靠人工进行特征构造,目前在学术界已有研究者提出了多种自动特征构造算法。例如, Featuretools 是一种基于深度特征合成(Deep Feature Synthesis,DFS)的自动特征构造工具[3],它主要应用于关系型数据库,使用一组给定的转换函数对实体的原始属性进行特征衍生; Explorekit 是一种由加州大学伯克利分校研究者研发的新型自动特征构造工具,它通过组合原始特征中的信息来确定候选特征,为了克服特征构造过程中特征空间的指数式增长,引入了一种基于机器学习的特征选择方法来识别新增特征的有用性[4]; Cognito 是由 IBM 公司研发的自动特征工程工具,它使用分层和非穷举的方式探索各种构造特征的可能性,同时使用贪心搜索策略不断优化预测模型的准确度[109]。其他与自动特征工程相关的研究成果还包括基于多层感知机元学习的 (Learning Feature Engineering,LFE)算法[5]和能够实现自动特征组合的 AutoCross 算法[6]。
从实用性来看,如 Featuretools、 ExploreKit 等面向关系型结构化数据的自动特征构造算法能够使特征空间倍增,但往往计算量很大,需要占用较多计算资源,容易产生大量冗余特征,计算耗时也较长,影响后续的机器学习模型训练。
图3 特征构造方法
特征提取
在实践中,某些观测数据(如图像、视频、音频、文本等)的维度在原始状态下过于庞大,无法由机器学习算法直接建模。甚至某些结构化的表格数据,在数据预处理之后,也具有数万至数十万维的原始变量。当训练样本的维度远超训练样本的数量时,样本在高维空间中的分布十分稀疏,导致距离计算产生困难,机器学习模型无法得到有效地训练。这种问题被称为维数灾难[7](Curse of dimensionality)。
缓解维数灾难的一个重要技术是特征提取(Feature extraction),即通过某种数学变换将原始高维特征空间自动地映射为一个低维子空间,高维空间中的原始样本也相应地映射为低维的嵌入式表示(Embedding)。在这个低维子空间中,样本密度得到较大程度地提高,从而降低距离计算的难度,减少计算资源的占用。从概念上来看,特征提取是一类能够实现降维(Dimension reduction)的技术。此外,特征提取还有一个重要的特点,即在降维过程中不丢失样本的重要信息,降维得到的低维表示仍然可以准确、完整地描述原始数据集特征。因此,特征提取可以理解为一个特征从“有”到“优”的过程。在某些文献中,特征提取的方法也被称为度量学习(Metric learning)或流形学习(Manifold learning)。
特征提取是一类重要的特征工程方法。结合已有文献来看,特征提取的具体方法可以归纳为监督式和无监督式两种[8],如图4所示。其中,监督式特征提取方法包括线性判别分析(Linear Discriminative Analysis, LDA)[9]、近邻成分分析(Neighborhood Components Analysis, NCA)[10]、相关成分分析(Relevant Component Analysis, RCA)[11]等。无监督式特征提取方法较为丰富,可按照线性提取方法和非线性提取方法进行划分:线性提取方法包括主成分分析(Principal Component Analysis, PCA)[12]、独立成分分析(Independent Component Analysis, ICA)[13] 和多维缩放(Multiple Dimensional Scaling, MDS)[14]等;非线性提取方法可以按照样本特征的保留方式进行再次分类,分为保留局部特征的特征提取方法,如局部线性嵌入(Local Linear Embedding , LLE)[15],拉普拉斯特征映射(Laplacian Eigenmap, LE)[16]、随机邻域嵌入(Stochastic Neighbor Embedding, SNE)和基于 t 分布的随机邻域嵌入(t-Distributed Stochastic Neighbor Embedding, t-SNE)等,以及保留全局特征的特征提取方法,如等度量映射 ISOMAP[17],核主成分分析(Kernel Principal Component Analysis, KPCA)等。
特别地,深度学习方法是一类与特征提取具有紧密联系的神经网络模型,它可以将低维特征自动组合成更加抽象的高阶表示(也称分布式表示, Distributed Representation),在一定程度上解决了特征提取问题。这个过程是在神经网络训练的过程中自动完成的,因此也被成为特征学习(Feature Learning)。常用的深度学习特征提取方法包括自动编码器(AutoEncoder, AE)、变分自动编码器(Variational AutoEncoder, VAE)和词向量(Word Embedding)[18]等。
图4 特征提取方法
特征选择
虽然特征构造可以充分挖掘有效特征,但在构造过程中也会生成大量冗余和无效特征,如不对其进行合理的筛选,反而会加重维度灾难。此外,过多的特征还会增加学习任务的难度,造成机器学习模型的过拟合[19]。这意味着在构造完成后需要计算不同特征对预测任务的重要性,从中选取较为重要的特征用于模型的开发。
特征选择(Feature selection)是一类重要的特征工程方法,即基于某种规则从原有特征集中选择出一个最优子集用于模型训练,且保证模型性能不发生下降或有一定程度的提高。特征选择可以减少特征数量、实现降维,从而降低模型的复杂度,使模型获得更好的可解释性。同时,通过对有效特征的筛选,可以删除对分类器产生干扰的特征,消除冗余特征,减轻过拟合风险,提高模型的泛化能力。此外,特征选择结果——即特征的重要性排序,可以作为一种反馈,增强建模人员对重要特征的理解,提高整个特征工程环节的迭代效率。
从原理上讲,特征选择是一个特征从“有”到“无”的过程,它主要可以分为两个环节:一是评价候选特征子集的优劣,二是根据评价结果生成新的候选特征子集。目前有关特征选择方法的研究较为成熟,在此仅对各类方法做简要总结。具体来讲,常见的特征选择方法大致可以分为三种[20]:
(1)过滤式方法(Filter)。这类方法基于某些统计测度直接对原始特征进行评价,然后通过设定阈值或者待选择特征的个数确定最终要使用的特征子集。常用的过滤式方法包括方差选择法、相关系数法(如 Pearson 相关系数)、卡方检验法、互信息法、最大信息系数法等。过滤式特征选择方法不需要训练分类器即可对特征的重要性进行评价,复杂度较低,因此实现有效特征的快速筛选,算法的通用性比较强,适用于较大规模的数据集。但是,此类方法在特征选择的过程中未考虑特征之间可能存在的相互依赖关系。倘若排序靠前的重要特征之间具有较强的相关性,则相当于保留了冗余特征,容易造成模型的过拟合。此外,部分重要性排名较低的特征,经特征组合后也可以产生良好的预测效果,但在过滤式方法中可能会被忽视。因此,在实际应用中,过滤式特征选择方法仅可作为一种“粗筛”的手段。
(2)包装式方法(Wrapper)。此类方法直接针对预测任务所使用的特定学习器进行优化,通过遍历或者启发式搜索选出候选特征子集,然后在候选特征子集上测试学习器的预测性能,作为评价该子集优劣的准则。从最终获得的学习器性能来看,包装式方法要优于过滤式方法。但包装式方法在每次进行特征选择时都需要训练新的学习器,因此计算的复杂度很高,寻找最优特征子集的耗时较长,需要占用大量的计算资源。常用的包装式特征选择方法包括完全式搜索、随机搜索、启发式搜索和递归特征消除法[21]。
(3)嵌入式方法(Embedded Method)。该类方法的主要特点是,基于某些特定的算法设计,在学习器训练的同时可以直接计算特征的重要性权重并进行排序,从而实现对特征的筛选。常用的嵌入式特征选择方法主要包括基于正则化的特征选择方法和基于决策树集成学习的特征选择方法,如图5所示。其中, L1正则化方法亦称 Lasso 回归算法[22],即通过向回归模型的损失函数中引入关于回归系数 L1 范数的正则化项,迫使某些弱特征所对应的权重系数值为零,即相当于自动弃用了这些特征,从而实现对特征的有效筛选。 L2 正则化方法亦称岭回归算法[23],它无法使弱特征的模型系数等于零,但也同样可以使其趋于零,降低模型的复杂度,达到特征选择的目的。而基于决策树的集成学习方法,也可以在训练过程中基于多种指标计算特征重要性[24],自动去除无关紧要的特征。从实用性来看,由于嵌入式方法能够在模型训练的同时自动输出特征重要性,因此其计算效率比包装式方法更高,而特征选择的有效性也比过滤式方法更好。
从概念上看,各类特征选择方法在筛选有效特征的同时,还可以起到降维的作用。但需要强调的是,这种降维与特征提取的降维相比,其含义并不完全相同。一方面,特征选择所实现的降维仅仅是特征的消除,不涉及复杂的数学映射,留下的重要特征其取值并不发生任何改变。另一方面,特征选择并不考虑保留原始特征信息的问题,而特征提取要求在保留信息的同时进行维度的约减。总体上看,特征提取和特征选择是处理高维数据的两种关键技术,在实践中可以根据具体的任务需求进行选择。
特征监控
在各类人工智能应用中,预测系统的性能经常在部署不久后便开始下降,其中一个重要原因是客户的行为模式会随着市场环境和个体偏好的变化而改变,导致基于原始数据构造和筛选出的特征并不符合在实际预测系统中获得的数据,使机器学习模型的预测结果产生偏差[25][26]。例如,在类似消费信贷的场景中,贷款违约的反馈结果具有时滞性,当风险管理者注意到模型存在预测偏差时,往往贷款违约已经发生了,很容易给公司造成严重的损失。因此,实践中需要对人工智能系统中的评分模型进行实时监控,及时评估其预测性能是否出现了退化。
对于人工智能模型而言,当一个输入特征发生变化时,剩余特征的重要性和参数权重也会发生变化,具有牵一发而动全身的特点。由于特征决定了预测能力的上限,对评分模型的实时监控,其核心是对特征的监控。
结合个人实践经验,在此提出特征监控(Feature monitoring)的概念:
特征监控是指在人工智能实践中,对开发人工智能模型所需的数据特征进行密切跟踪,监测实时数据的特征分布与训练数据特征分布之间的偏差,以便使技术团队能够在潜在问题影响正常的信贷审核业务之前作出预警。
从实践经验来看,对特征的监控可以从如下四个维度进行:
(1)特征的可用性(Availability)。由于在实践中常常发生某些数据接口不可用的情况,因此需要对数据特征的可用性进行实时监控。另外,受各种不确定因素影响,还需要监控特征的覆盖率,即实时计算拥有该特征的样本所占的比例。一旦出现某些特征的非正常缺失或覆盖率异常,则需要检查数据源存在的问题,并考虑将其替换为数据库系统内依然存在的近似特征,或者基于可用特征重新开发新的评分模型。
(2)特征的可靠性(Reliability)。首先,需要检查技术专家是否进行了错误的特征设计;其次,需要监控系统加工出的特征是否正确地反映了技术专家的设计初衷。第三,要监测实时数据与训练数据是否来自同一个数据源。第四,要监测实时特征是否存在异常值和训练数据中并不存在的值。
(3)特征的稳定性(Stability)。受市场环境和消费者偏好的影响,需要监控实时数据中的特征分布是否与训练数据的特征分布一致。若特征分布随时间发生改变,则需要重新计算特征重要性,对失效和冗余特征进行清除,并设计新的评分模型。
(4)特征的关联性(Relevancy)。特征构造环节利用不同特征之间的逻辑关系构造了大量衍生特征和组合特征。这些特征往往源自同一数据库的不同表格或不同的数据库,且由不同的技术人员开发。因此,一旦这些数据的产生方式发生变化(例如特征的代码实现发生改变,特征的定义发生改变、特征的耦合关系发生改变),且技术人员之间未能及时沟通,则会引发连锁反应。这种因特征偏差所带来的预测误差是一种负反馈,会不断地在模型的迭代过程中被放大,最终导致整个系统的彻底崩溃。因此,在特征监控过程中,需要事先考虑特征之间的关联性和耦合关系,进行有针对性的方案设计。
目前有关特征监控的研究尚不多见,但从上述的讨论可以看出,特征监控的关键在于确保实时数据的特征分布始终与训练数据的特征分布相同。从这个思路出发,可以使用某些统计量或分布检验来评估实时特征与训练特征的分布是否存在差异。其中,对于连续型特征,可以使用 K-S 检验(KolmogorovSmirnov statistics)[27]、 K-L 散度(Kullback–Leibler divergence)[28]或总体稳定性指数(Population Stability Index, PSI)[29]等指标进行评估;对于离散型特征,可以使用卡方检验、信息熵等指标做评估。如果原始特征的维度较高,也可以考虑使用主成分分析等特征提取技术进行降维,然后再选择相应的评估方法。另外,也可以直接开发提供数据可视化服务的软件系统,针对训练和实时数据中的重要特征自动绘制概率密度分布或累积概率分布图,通过实时观测达到特征监控的目的。
图6 特征监控方法
此外,需要补充的是,对于本回答所提出的面向结构化数据的特征工程技术框架,其中涉及的数据预处理、特征构造、特征提取、特征选择和特征监控等五类技术方法之间并不是孤立的,也不是按照顺序依次执行的,而是一个需要交互和迭代的技术流程,如图7所示。
在面对实际中的人工智能任务时,如果要获得最优的特征集,需要结合可视化技术对原始数据所包含的各种信息进行深入探索,手动或自动地进行特征构建,结合本回答提出的特征工程技术框架中所涉及的各类方法,反复进行特征构造、特征选择和模型评估,在不断地试错和改进中,直到获得满足信贷业务需求的特征组合。从实践中来看,建模人员需要把 80% 以上的时间放在有关特征工程的工作上;设计和开发便捷的特征构造和模型测试工具,亦是必不可少的技术环节。
图7 面向结构化数据特征工程的技术流程
后记
从上述特征工程技术框架出发,基本上可以对特征工程有一个全面的认知,希望这个回答可以成为各位朋友的实践指导手册。
当然,更high-level的则是各种AutoML算法,这也是我在博士期间的研究工作,有时间的话我会更新本人提出一种自动特征构造算法。