浅谈特征工程(一)

最近实习的过程中遇到很多特征相关的问题,决定借机梳理一下,聊作一种自我沉淀,水平有限,不对的地方欢迎指正。

一、what——什么特征工程

在此之前,先定义什么是特征,见过一个很好的定义:对建模有用的属性。那么什么是特征工程呢?目前为止,我见过对特征工程比较准确且易懂的定义为:Feature engineering is the process of transforming raw data into features that better represent the underlying problem to the predictive models, resulting in improved model accuracy on unseen data——特征工程是一种将原始数据转化为能更好地表现预测模型本质问题的特征,使模型对没见过的数据能取得更好的预测效果。

举个例子,有一筐水果,有苹果、梨、香蕉,设计一个模型对它们分类,问题的本质在于同类水果在多个维度下相似,异类水果在对应的维度下区别很大,特征工程的任务就是找到这样的维度(特征)。可选特征有很多,比如:重量,水分,硬度,密度,颜色,体积,形状等,这些基本特征还能cross做组合,比如这个问题上我们可能会选择颜色和形状的组合。我们发现特征虽然很多,但对特定问题有用可能很少。特征工程就是从众多潜在特征中找出那些真正有用的特征。

上面例子里,特征还是很自然的概念很好理解,但有些场景下,特征可能需要我们创造出一种全新的概念。比如传统的图像检测识别领域,除了颜色这样最直接的特征外,还有一些构造出来的特征如Haar特征,Hog特征等等,因为它们能更好地反映问题本质。

二、why——为什么需要特征工程

在机器学习中,对特征的处理往往占据了我们很多的时间和精力,很大程度上,特征好坏决定了分类器的性能。很多刚接触机器学习的同学可能喜欢一头扎进各种精妙复杂的算法模型中,但在工业界,特征工程所耗费的时间和精力往往超过模型本身,其带来的效果指标乃至商业收益也往往超过优化模型结构。所以有人甚至会说,机器学习就是特征工程。

如果把机器学习比作做菜,那么它至少需要三个不可缺少的元素:

1,模型——厨师,掌握了做菜的方法和原理,各怀绝技,厨师有——LR,SVM,神经网络等;

2,数据——食材,巧妇难为无米之炊,用在这里再恰当不过,食材决定了该由什么厨师来做更合适;

3,硬件——炊具,炉灶刀砧,锅碗瓢盆,做什么菜有做什么菜的家伙,比如神经网络,对硬件的计算能力要求就要高一些。

这三者往往是相辅相成的,用什么模型往往取决于你有什么数据、你的硬件是什么水平,这是一个数据工程人员应该具有的基本思维。正是因为今年来大数据和大计算的出现,才使深度学习这样的大模型有了用武之地。

有人说,进入深度学习时代,特征工程不再重要。从某个层面来说这句话是对的,比如图像领域以往会人工构建一些算子来描述图片局部或全局特征,再基于这些特征送入模型进行训练和预测,而现在往往直接送入原始图像,构造特征的任务直接交给深度学习模型,也就是端到端(end2end)学习,但代价是你需要更多的数据和更大的算力。而在点击率预估等领域,由于数据和算力的限制,即使步入深度学习时代,特征工程依然是大家必须要面对的问题。比如在一些场景数据是很稀疏的,另外线上服务实时性要求模型不能过于复杂,这些都可能导致模型没有办法充分学习,所以还是需要用到特征工程。

一句话就是:数据或算力不够,特征工程来凑。(从这个角度来说,元学习、迁移学习、知识蒸馏这样的东西,也只是高级版的特征工程而已)

三、特征工程包括哪些 which

通常来说,特征工程包括四大方面:数据清洗,特征构造,特征提取,特征选择,特征学习。这几个模块是特征工程的核心了,每一个都可以单独拿出来将很多东西,后面会再单独开文整理具体,方法这里先说一下基本概念。

数据清洗:拿到一份数据后,首先要做的就是检查数据质量,把脏数据清洗干净。主要的脏数据问题包括:量纲不齐、缺失值、异常值(奇异值)。

2.1 无量纲化
    2.1.1 标准化
    2.1.2 区间缩放法
    2.1.3 标准化与归一化的区别
  2.2 对定量特征二值化
  2.3 对定性特征哑编码
  2.4 缺失值计算
  2.5 数据变换

特征提取特征选择一起来说,因为它们都是使特征变少的过程,所以很容易混淆。特征提取可以看作特征浓缩,浓缩的是精华,就好像小学语文提取全文中心思想一样,这个中心思想就是全文的精华,它包含了全文的主要信息,同时篇幅又很小;特征选择就是从一堆特征里面选几个具有代表性的,就好像语文选课文中的几段具有代表性的背诵,它没有浓缩的过程,只是特征集合的一个子集。具体到机器学习中,特征提取主要是包括PCA(主成分分析),LDA(线性判别分析)等方法的降维,特征选取一般包含filter、wrapper和embedded三类方法。

特征构造就是创造特征,不然特征从哪里来呢。这部分是特征工程真正具有艺术性的体现,因为这部分需要人的经验参与,解决什么问题,即创造什么特征。比如连续数值特征离散化、特征交叉、构造统计特征。

特征学习也叫表征学习,简单来说就是机器替代人来构造特征。深度学习改变了人们对特征处理的方式,或者说几乎不用再谈“特征”这个词啦,你直接给深度神经网络喂最原始的数据,比如图像的像素灰度,提特征的事儿交给网络去办就行,神经网络可以自由地组合出它觉得最好的那些特征,好的特征赋予更高的权重。特征学习不仅干了特征构造的活儿,还干了特征提取和特征选择的活,但它是个黑盒子,到底用了哪些特征我们不得而知,这也是深度学习被理论界诟病的一个点。However,it works!

额外说一下,在工业界,特征跟业务是强耦合的,需要哪些特征取决于对业务的理解,不同于学术界面对的很多已经采集好的标准的数据,现实生产环境中,很多时候需要先计划好需要哪些特征,再去思考怎么获取这些数据,然后把数据处理成需要的特征,生产环境下还需要例行化地监控这些特征情况,所以工业界的特征工程要复杂得多。数据的采集和监控这些工作也非常重要,比如基于Storm、Flink等流式计算框架的事是特征

四、什么时候需要用到特征工程 when

特征工程作为机器学习的一部分,什么时候该它上场呢?我个人觉得,特征工程其实是贯穿整个机器学习过程的,当然,有的环节体现的多,有的少罢了。机器学习的过程大概如下:

1,收集数据。比如电商推荐中,数据就是谁(user)对什么东西(item)采取了什么操作(action),user可以用userid,年龄,性别,地域,学历,兴趣等描述,item可以用itemid ,类别,价格,推荐位等描述,action可以用曝光,点击,购买,退货,评论等描述,这些属性都可以作为特征。你再电商平台上所有的操作都被记录下来,这就是数据。

2,数据预处理。主要有数据清洗,统一格式,归一化,离散化,dummy化(0/1化),数据平滑,省缺值处理等等。

3,数据转化。也就是特征工程的核心,这个时候特征工程就大有可为啦。

4,模型训练。将特征输入到模型,不断优化迭代,最终确定模型参数。

5,利用训练好的模型干活啦。

五、小结

机器学习的效果很大程度上依赖特征工程,数据-模型-计算三者相辅相成,特征工程作为数据的信息构造方式对机器学习至关重要 ,特征工程主要包括特征提取,特征选择,特征构造和特征学习,当得到标准格式的数据后,特征工程将数据转化为机器学习模型的输入,以实现数据的高效学习。

机器学习中,有哪些特征选择的工程方法? - 知乎

表征学习 | 机器之心

机器学习:特征工程、特征提取、特征选择与数据降维间的关系_mechleechan的博客-CSDN博客

https://segmentfault.com/a/1190000024522693

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值