作者 | gongyouliu

编辑 | auroral-L

全文共6858字,预计阅读35分钟。

本章目录

一、特征的基本概念

二、特征工程介绍

三、特征工程的基本思路和方法

1. 根据不同数据类型来构建特征

2. 构建特征的流程和步骤

四、构建特征的基本原则

1. 能用简单的模型先用简单的模型

2. 特征不是越多越好,需要挖掘能够代表事物本质的特征

3. 尽量选择从多个维度来描述事物的特征

4. 特征之间要尽量独立

5. 平衡构建特征的成本和收益

五、特征工程的难点与挑战

1. 特征工程依赖所获得的数据

2. 特征是模型、领域相关的

3. 数据来源的复杂多样性

4. 应用场景的限制

总结

我们知道自然界中的万事万物都是演化发展的。宇宙经过亿万年的演化,形成了当今浩瀚的空间。地球作为无垠宇宙中的一个不起眼而又特别的星球,在这亿万年的进化中出现了生命的奇迹,而人作为这一进化链条中最高级的物种,不过3亿年(人类是从一种3亿多年前漫游在海洋中的史前鲨鱼演化而来的,参见百度百科)。

生命作为一个有机体,是可以感受外界的刺激并对外界的刺激做出反应的。正是这种对外界的感受、反馈能力,让生命体可以更好地生存繁衍。人类作为地球上(或许是宇宙中)最高级的生命体,我们的感受力更强,我们除可以直接感受外界的物理刺激,还有内在的情感感受。

人类的感受往往是通过我们的身体器官来识别的。所谓的七情六欲,就是我们身体器官对外界或者内心的直接或者潜意识反馈。眼、耳、鼻、口、手、皮肤、大脑等身体器官都可以感受到外界和内在的各种刺激。所有这些刺激对我们产生的影响,我们会以特定的方式识别和记忆。

当我们用眼睛观察外面的世界时,我们可以看见五颜六色、多姿多彩的世界,我们可以看到物体的长度、大小、颜色、形状、质地、纹理等;当我们品尝美味的食物时,我们可以感受到酸甜苦辣。当我们用手触摸东西时,我们可以感受到光滑、柔软、坚硬、冰凉等;当我们用耳朵听声音时,可以感受到轻柔、悦耳、嘈杂等;当我们用鼻子闻味道时,我们可以闻到花香、食物的香气、腐烂物体的臭味;当我们跟别人相处时,我们内心可以感受到和谐、平静、不安、躁动、快乐、痛苦等。

我们就是利用我们的身体器官去感受外界事物的,不同的器官对物体的不同方面进行识别,通过这些感受我们在大脑中留下了对这些事物的记忆。事物不同维度的特性(比如上面提到的形状、大小、颜色、质地、气味、味道等)就是事物的不同特征,正是这些特征让我们可以识别、理解和认识这个世界。人类的感觉器官对外界的刺激进行处理转化为人类大脑可以识别的对象的处理过程,就是特征处理

人的成长过程可以看成是一个不断学习的过程,我们从婴幼儿开始就不断接触外界,通过不断地感受外界的刺激、与外界的交互,我们可以更好地认识理解这个世界。这些理解就沉淀为我们获得的知识与技能,这样以后遇到类似的事物或者环境,我们可以更好地做出正确的反馈(比如我们知道颜色鲜艳的毛毛虫是有毒的,触摸它,我们会受伤,小时候如果我们有触摸的惨痛教训,以后在遇到时,我们就会躲得远远的),从而更好地在这个复杂的世界上生存下来。

机器学习的学习过程可以看成人类学习、认识世界的等价体。机器学习模型学习的数据等价于人类感受到的各种外界刺激。我们需要对数据进行处理(特征工程),形成合适的数据结构,以便机器学习模型可以更好地利用这些数据,这个处理过程就类似于人类的身体器官对外界刺激的识别与反馈,处理好后的数据机器学习模型就可以直接使用了。而构建机器学习模型的过程就类似于人类对外界的理解学习过程。训练好的模型就类似于人类在成长过程中获得的对外界的理解和认识。机器学习模型做推断的过程就类似于人类通过学习到的认知对未知事物进行处理反馈的过程。

有了上面的介绍,我们就可以更好地理解这篇文章中讲解的机器学习中的特征与特征工程相关的知识了。那么,下面我们就从特征的基本概念、特征工程介绍、特征工程的基本思路和方法、构建特征的基本原则、特征工程的难点与挑战等5个方面来展开介绍。

一、特征的基本概念

特征(Feature)是对事物某种特性的描述,是建立在原始数据之上的特定表示,它是一个可识别的属性。日常生活中的很多事物我们都可以用二维表格来表示(这就是为什么Excel这么通用的原因),我们收集到的数据同样也可以用二维表格表示,那么通常特征就对应这种表示中的某一列。对于一个通用的二维数据集,每个观测值由一行表示,每个特征由一列表示,对于每一个观测具有一个特定的值。下面图1就是用户基本属性表,其中每一列就是一个特征,其中年龄、身高、体重是数值的,是数值特征,数值特征也叫做连续特征,而性别是用文本描述的,并且只有男女两种取值,是离散特征。

图1:用户属性特征

通过上面的简单介绍,我们知道了什么是特征,知道有连续特征和离散特征,那么特征具体怎么分类呢?一般从特征的取值类型可以分为5类:

(1) 离散特征

离散特征一般分为类别特征和有序特征,类别之间是无序关系的, 比如性别,有序特征之间是有序关系的,比如收入的低、中、高三个等级,之间是有序的。

(2) 连续(数值)特征

能够用实数或者整数等数值度量的特征就是连续特征,比如身高、通过算法获得的嵌入特征等都属于连续特征。

(3) 时空特征

在某些模型中时间是非常重要的特征,时间一般是相对的,具有周期性。对基于地理位置的服务,位置是非常重要的特征,位置也可能跟用户的行为有关(如东北地区的喜欢看二人转),地理位置可以用行政区划的层级关系表示,也可以用相对距离来表示。

(4) 文本特征

文本是非常重要的一类数据,我们可以从文本中抽提特征,比如利用TF-IDF等获得的特征,文本特征一般可以通过转化为向量来表示。

(5) 富媒体特征

包括从图片、视频、音频、HTML、XML、Json,甚至程序语言等富媒体中抽提的特征,这些特征也一般用数值向量来表示。

从特征的可解释性来分类,可以分为显式特征和隐式特征:

(1) 显示特征

显示特征是具有实际意义的特征,人们可以理解,可以用语言来说明和解释。类别、数值、时空、TF-IDF、LDA等特征都属于这一类。

(2) 隐式特征

隐式特征是不具备实际意义,难于在现实中找到对应的特征,一般通过算法生成的嵌入特征都属于这一类,如word2vec、矩阵分解等模型生成的嵌入特征。

这里我们从两个维度简单介绍了一下特征的分类,我们在第二篇的第3章还会更细致、从更多的维度来讲解特征的概念。

讲完了什么是特征,特征的两种分类方法及对应不同特征的介绍,那么大家肯定会关心特征怎么转化为机器学习模型可以识别和处理的对象,有什么方法和技巧,这就是下面一节要解决的问题。

二、特征工程介绍

特征工程(Feature Engineering)是将原始数据转化为特征的过程,这些特征可以很好地测量或者描述输入输出之间的内在关系,通过这些特征来构建数学模型,从而提高模型对未知数据预测的准确性。特征工程在整个机器学习模型生命周期中所处的阶段见下面图2。

图2:特征工程在机器学习建模中所处的阶段

绝大多数机器学习模型一般只能处理数值特征(这不是绝对的,比如树模型就可以处理非数值特征),特征工程的主要目的就是将原始的特征转变为数值形式,并且处理的过程也需要保证获得的特征可以更好地度量事物的属性,这样机器学习才可以更好学习事物内在的规律和特性。

特征工程一般包括对原始数据的预处理、特征构建、特征筛选、特征评估等多个环节 ,每个环节都有对应的方法和策略,我们会在下面进行简单介绍,第二章会详细讲解这些知识点,这里不赘述。

特征工程在整个机器学习流程中是非常重要的一环,有很多枯燥、繁杂的工作需要处理,看起来不那么高大上,并且很多特征工程的技巧是需要经验积累的,也是领域相关的(不同领域有自己的一套做特征工程的独特的方法和思路),我们这本书主要讲解的就是在推荐系统中怎么去做特征工程。特征工程的质量往往直接决定了机器学习的最终效果,在机器学习圈有一句很出名的话很好地说出了特征工程的价值,这句话大致意思是“特征工程的好坏决定了机器学习能力的上限,而算法和模型只是无限逼近这个上限”。

三、特征工程的基本思路和方法

特征工程是一个偏工程实践的领域,需要非常多的经验积累,更需要对建模的问题有很好的理解和把握。下面我们从2个维度来概述构建特征工程的基本思路和方法。这里我们不会细讲,只是概述大致的思路,具体的讲解我们会放到第二篇和第三篇中。这里主要的目的是让读者有一个大致的认知,方便后面系列文章的学习。

1. 根据不同数据类型来构建特征

我们在第一部分特征的基本概念中讲到特征可以分为离散特征、数值特征、文本特征、时空特征、富媒体特征。不同数据类型的存储、表示、处理方式都是不一样的,因而基于这些数据构建特征的方式也不一样。所以我们可以根据数据形式的不同来采用不同的方法来构建特征。我们会在第二篇第5章来讲解针对不同形式的数据构建特征的一般方法和思路,这里不赘述。

2. 构建特征的流程和步骤

为机器学习模型构建特征,构建完了特征不代表事情结束,我们还需要保证特征是合适的,是有价值的,可以让模型获得很好的效果。一般来说,构建特征的过程是一个闭环的体系,我们需要不断迭代,获得最适合具体模型和问题(即我们期望用机器学习解决的问题,比如推荐、风控等)的特征,让模型获得更好的业务价值。

图3:构建特征的流程

上面图3就是构建特征的一般步骤。下面我们对各个步骤进行的工作进行简单介绍,更具体、细致的介绍我们会在第二篇的第4、5、6、7章中展开。

 数据预处理

我们构建的特征的原材料就是我们收集的数据。数据预处理这一步就是对收集的数据进行适当的处理,包括剔除掉脏数据,补全缺失的字段,对异常值进行处理,将数据转化为合适的量纲等操作。我们会在第4章详细讲解各种方法和策略。

 特征构建

特征构建这一步是最重要的一步,这一步就是从处理好的数据中构建出适合机器学习模型训练处理的特征的过程。一般会根据不同的数据类型采用不同的方法来构建。针对不同的模型和应用场景也会有独特的要求和方法。这一块我们会在第5章详细展开。

 特征选择

所谓特征选择,就是从构建的所有特征中选择最合适模型的特征。合适的特征一般能够起到提升模型的度量指标(如点击率、人均播放时长、转化率等)、减少模型的复杂度等作用。

特征选择可以根据特征之间的相关性进行选择,也可以结合特征加入或者剔除出模型对模型效果的影响这种方式去选择。总之,有很多种选择特征的策略和方法,我们会在第6章详尽地介绍。

 特征评估

所谓特征评估是在将特征灌入模型进行训练之前,事先评估特征的价值,提前发现可能存在的问题,及时解决,避免将有问题的特征导入模型,导致训练过程冗长而得不到好的结果。特征评估是对选择好的特征进行整体评价,而不是特征选择中所谓的对单个特征重要性的评判。特征评估包括特征的覆盖率、特征的维度、定性分析和定量分析等几种方式。我们会在第6章详细介绍。

上述四个步骤一般可以依次进行,当确定最后的特征后,我们可以利用最终的特征进行模型训练。训练好后,我们可以对模型进行离线评估,获得离线评估的度量指标(比如召回率、精准度、MAP等)。如果达不到预定的要求,我们需要找原因,可以对特征工程的流程进行迭代优化(也可能是换不同的模型)。如果达到了要求,我们就可以利用训练好的模型用于真实业务场景,然后收集用户反馈数据获得真实的业务指标数据(如点击率、播放时长等),再根据真实业务数据的情况去对构建特征的过程进行优化迭代。总之,构建特征及模型服务业务的整个过程是一个闭环系统,我们可以基于业务指标对整个过程不断迭代优化,最终让业务指标越来越好(也可能是螺旋式上升)。

四、构建特征的基本原则

特征工程虽然有很多方法和策略,但这是一个偏业务和工程的领域,需要遵循一些最基本的原则,这样可能让我们少走弯路。我觉得最重要的基本原则如下:

1. 能用简单的模型先用简单的模型

一般来说,简单的模型可能泛化能力更好(在同样数据下),简单模型也更容易理解,特征工程、构建、训练、推断的成本也相对较低。当我们在简单模型下能够将业务闭环打通,然后就可以尝试一些更复杂一些的模型了。对于在工业界比较成熟的复杂模型(比如wide & deep模型)等也是可以使用的,不建议对一些学术上发表的新模型直接拿到业务中使用,除非你们有非常多的人才和资源去预研、测试,否则不建议做第一个吃螃蟹的人。

2. 特征不是越多越好,需要挖掘能够代表事物本质的特征

在构建特征之前,需要对模型要解决的业务问题有比较深刻的了解(这要求自己多用用自己负责的产品),多跟产品、运营、用户沟通(或者查看用户行为数据),他们可能对业务更了解,往往可以给你提供更好的建议,有利于你找到更本质的特征。

在特征选择上,“奥卡姆剃刀”原则也是适用的。如果能够找到最本质的特征,那么少量的特征就可以获得非常好的效果。

3. 尽量选择从多个维度来描述事物的特征

这一条原则背后的原理是:从概率统计上看,任何一个机器学习模型可以看成一个概率问题,我们选择的数据是从服从某个分布(可能是非常复杂的)中的一次随机抽样。那么选择描述事物更广泛维度的特征的意思就是选择的样本要能够代表整个概率空间。

这一条原则也跟集成学习的思路是不谋而合的。在集成学习中,每个模型可能学习到了客观规律的一部分,多个不同的模型结合起来就可以学习到事物的更全面的特性。

4. 特征之间尽量要独立

特征独立的要求跟上面一条原则的道理是一样的,相关的特征描述事物相同的特性,那么就没必要重复(重复的缺点在于,首先构建特征需要花费资源,另外对模型效果也没有太多的作用)。

有很多特征我们是可以基于实际数据来源就可以判定他们是不是相关的,不一定需要构建好后再去计算特征之间的相关性(我们在特征选择那一章会讲到这方面的知识点)。

5. 平衡构建特征的成本和收益

有些特征可能对模型有用,但是构建这类特征需要收集相关数据,如果收集数据的过程非常复杂或者构建特征的过程非常复杂,那么我们就需要权衡投入产出比了。

上面这5条原则看起来非常简单,上面也没有细致地讲解怎么使用这些原则,可能指导性没有那么强。不过这些原则是当你在特征工程相关业务上有一些经验和积累之后是可以比较容易理解和感受到的,最终你也会形成自己的一套策略和方法去思考和落地这些原则的。这里只希望读者可以了解和记住这些原则,我们在后续章节的具体场景中也会提到这些原则。

五、特征工程的难点与挑战

虽然说构建特征工程有一套比较完善的思路和方法体系,但要构建一套好的特征不是一件容易的事情。构建特征需要依赖数据,也需要对问题有更深刻的理解,同时也会受到不同场景的限制,具体来说,构建特征工程的过程中,我们会面临如下的挑战。

1. 特征工程依赖所获得的数据

当我们在为某个业务构建机器学习模型时,我们能够构建什么样的特征,往往依赖我们的数据。如果我们收集不到足够多的、高质量的数据,那么我们构建的特征的数量和质量就得不到保证。

2. 特征是模型、领域相关的

不同的机器学习模型能够处理的数据类型以及对数据变化的敏感度是不一样的(比如树模型可以处理非数值特征,也不需要对特征进行归一化),因此,对于某个问题,我们选择不同的模型,对我们怎么去做特征是有前置限制的。

另外,不同的领域由于对问题处理的要求是不一样的,那么对我们构建什么样的特征是有限制的。比如在金融领域,是对模型的可解释性是有要求的,那么像嵌入特征这类隐式特征就不太合适。

3. 数据来源的复杂多样性

目前的手机APP包含了非常多的富媒体信息(比如文字、图片、视频、声音等,淘宝现在很多商品就包含了短视频的商品介绍,见下面图4),处理这些更复杂的信息不仅更耗费时间、资源(计算、存储等),处理的方法也会更加复杂,这无形对特征工程提出了更高的挑战和要求。

图4:淘宝商品介绍采用短视频的形式

4. 应用场景的限制

目前很多机器学习模型用在了时效性非常高的场景下(比如信息流推荐、竞价排名广告等),这就需要能够对收集到的用户行为数据进行实时处理,获得实时的特征,才能够利用构建好的模型进行预测和推断。这对特征工程的时效性提出了非常高的要求。

有些机器学习模型部署在终端上(比如无人驾驶汽车等),这不光对特征工程的时效性提出了要求,还对构建特征的精准度提出了更高的要求(比如L4级无人驾驶车在下雨天、甚至是晚上都能够很好地识别障碍物,在环境不好的时候,激光雷达的处理也需要达到极高的精准度)。

总之,随着机器学习在各行业各、在更多场景下的应用的出现,对特征工程提出了更好的要求,这也无形中凸显了特征工程的重要性。

总结

这一章我们对特征工程的基本知识做了一个简单的概括。我们拿人类理解和认识世界作为例子,讲解什么是特征、人是怎么识别这些特征的,基于人与机器的类比关系,大家可以更好地理解机器学习和特征工程相关概念和问题。

本章我们主要讲解了特征的基本概念、特征的分类、特征工程的概念、构建特征的基本思路和方法、构建特征的基本原则,以及特征工程的难点和挑战。这一节的主要目的是给读者提供一个全局的视觉,希望读者对特征工程相关的概念和知识有一个初步的印象,我们会在后续章节中对本节中提到的每一点都会深入讲解。

「推荐系统中的特征工程」1. 特征工程基础知识介绍相关推荐

  1. 光纤中的多种光学模式芯径_光纤基础知识介绍,看懂这一篇就够!

    弱电监控系统中,当链路传输距离超过100米后,我们就会考虑使用光纤传输,光纤具有抗干扰能力强,传输距离远,带宽大等优势,今天我们就来一起聊聊光纤的基础知识! 1.光纤的定义 光纤是一种柔软.纤细的固态 ...

  2. 高光谱遥感数据光谱特征的提取与应用---高光谱基础知识科普论文

    论文地址 高光谱遥感数据光谱特征的提取与应用 杜培军 遥感基础知识积累: 绝对温度大于0的物体在整个光谱轴上具有连续的光谱曲线 高光谱可以有效的描述一些窄而重要的局部光谱特征,可以明显看到高光谱对于光 ...

  3. 计算机领域中所谓课机是指,1.计算机基础知识题及答案

    第1章计算机基础知识(单选题) 这些题目必须做一遍,来自统考题库(期末考试题也多半出在这里),参考答案在另一个Word文档中(上传自己做的答案后才可以下载-).据说,统考题库中大约有10,000测试题 ...

  4. 计算机信息学中比较大小的代码,信息学奥赛计算机基础知识.doc

    信息学奥赛计算机基础知识 目 录 青少年信息学奥林匹克竞赛情况简介5 第一章 计算机基础知识7 1.1 计算机的基本常识7 1.1.1 计算机的产生与发展7 1.1.2 计算机系统及工作原理7 1.1 ...

  5. 在微型计算机中应用最普遍的数字编码是,计算机基础知识理论复习题及答案

    基础知识复习题及答案 一.选择题 1.第三代计算机所使用的电子器件是( ). A)晶体管B)电子管C)中小规模集成电路D)大规模和超大规模集成电路 2.微型计算机中使用的关系数据库,就应用领域而言是属 ...

  6. 计算机在无纸化办公系统中应用属于,福建省闽侯职专计算机基础知识练习题.doc...

    福建省闽侯职专计算机基础知识练习题 ?福建省闽侯职专计算机基础知识练习题 1.当前,计算机正朝着巨型化.微型化.智能化和______ 发展 A)信息化 B)网络化 C)数据化 D)集成化 2.当前电子 ...

  7. 机器学习中的数学——点估计(一):基础知识

    分类目录:<机器学习中的数学>总目录 相关文章: · 点估计(一):基础知识 · 点估计(二):矩估计 · 点估计(三):极大似然估计/最大似然估计(Maximum Likelihood ...

  8. 「推荐系统从0到1」服务发现

    前沿 首先谈谈我对推荐系统的引擎和算法的理解. 现在市面上讲起推荐系统,大多都是讲各种算法,讲的天花乱坠,高深莫测,其实很多算法都是大同小异,核心思想是差不多的,只不过实现手段略有差异.而在工业上,各 ...

  9. bootstraptable 加载完成回调函数_牛皮了!头一次见有大佬把「JavaScript中的回调函数」详解得如此清晰明了...

    前言 callback,大家都知道是回调函数的意思.但是你对这个概念应该是模模糊糊.比如Ajax,你只知道去调用返回函数,如果对callback没有理解清楚,估计你在学习Node.js后会崩溃,因为c ...

最新文章

  1. 计算机网络7层协议模型,计算机网络(一) OSI七层模型及TCP/IP dubbo协议
  2. 数据结构--二叉树的创建和相关操作
  3. thinkphp 视图(二)变量输出、赋值和替换
  4. 区块链与分享型数据库
  5. ECCV 2020 目标检测与跟踪赛事,清华大学主办 GigaVision 2020 欢迎报名~
  6. Linux 原生异步 IO 原理与使用
  7. windows下安装phpcms html/ 文件夹不可写的一种错误以及解决方法
  8. 全面认识openstack:OpenStack架构详解
  9. 微信小程序项目实例——印记
  10. 群晖python套件包_想在群晖上运行python该怎么弄?
  11. 【MC-CNN论文翻译】Computing the Stereo Matching Cost with a Convolutional Neural Network
  12. 用计算机撩人套路,撩人套路-撩人套路情话一问一答 - 个性说说吧
  13. web和http协议-详解
  14. (附源码)计算机毕业设计SSM精品旅游项目管理系统
  15. 分布式闭锁-redisson的闭锁应用
  16. linux 命令查询主机名,主机名命令,linux查看主机名命令
  17. 价值1.35亿美元的BUG
  18. 精选!必备的VSCode插件
  19. win11系统SecoClient接收返回码超时解决办法(亲测有效)
  20. proxifier注册码

热门文章

  1. nyist-部分和问题
  2. call()与appy()
  3. [USACO09MAR]向右看齐Look Up————单调栈
  4. 鸿蒙系统微信怎么操作,鸿蒙系统无微信?为何腾讯如此恶心
  5. 【swagger2】Spring Boot 配置swagger2
  6. [论文阅读]Auto-Encoder Guided GAN for ChineseCalligraphy Synthesis
  7. 错过这次,再等一年!视频云CDN全线折扣Hi购启动...
  8. 35 小白鼠排队 北大复试
  9. b-tree和b+tree以及mysql为什么使用了b+树
  10. 输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数【c语言】