浅谈特征工程(一)

来源:互联网 发布:异次元的软件世界 编辑:程序博客网 时间:2024/05/22 04:53

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

一、什么特征工程 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,硬件——炊具,炉灶刀砧,锅碗瓢盆,做什么菜有做什么菜的家伙,比如神经网络,对硬件的计算能力要求就要高一些。

这三者往往是相辅相成的,用什么模型往往取决于你有什么数据、你的硬件是什么水平,这是一个数据工程人员应该具有的基本思维。正是因为今年来大数据和大计算的出现,才使深度学习这个大模型有了用武之地。也由于数据(类型和数目)和计算代价(时间和存储)的一些限制,复杂模型难以实现或难以取得好的效果,特征工程是大家必须要面对的问题。

三、特征工程包括哪些 which

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

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

特征构造就是创造特征,不然特征从哪里来呢。这部分是特征工程真正具有艺术性的体现,因为这部分需要人的经验参与,解决什么问题,即创造什么特征。扁平数据如电商数据,通常就是将年龄、性别、地域、兴趣、收入等做交叉产生新的特征,可以二者交叉,也可以更多基础特征交叉,这就取决于你的计算能力了;图像数据可能需要构造如sobel算子、canny算子来得到边缘特征,Harris算子来找角点特征。

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

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

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

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

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

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

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

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

五、小结

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

原创粉丝点击