特征工程到底是什么?

特征工程是机器学习,甚至是深度学习中最为重要的一部分,也是课本上最不愿意讲的一部分,特征工程往往是打开数据密码的钥匙,是数据科学中最有创造力的一部分。因为往往和具体的数据相结合,很难优雅地系统地讲好。所以课本上会讲一下理论知识比较扎实的归一化,降维等部分,而忽略一些很dirty hand的特征工程技巧。

什么是特征工程呢?一个非常简单的例子,现在出一非常简答的二分类问题题,请你使用逻辑回归,设计一个身材分类器。输入数据X:身高和体重 ,标签为Y:身材等级(胖,不胖)。显然,不能单纯的根据体重来判断一个人胖不胖,姚明很重,他胖吗?显然不是。针对这个问题,一个非常经典的特征工程是,BMI指数,BMI=体重/(身高^2)。这样,通过BMI指数,就能非常显然地帮助我们,刻画一个人身材如何。甚至,你可以抛弃原始的体重和身高数据。

所以说,特征工程就是通过X,创造新的X'。基本的操作包括,衍生(升维),筛选(降维)。说起来简单,实际中,衍生和筛选都是困难重重,甚至需要非常专业的专家知识。

file

当然,人类的进化也就是一直在变懒,深度学习的兴起,让很多人相信,deep learning,作为一种强大的自动化特征工程工具,能够自动学习各种低级和高级的特征。至少在视觉领域,似乎没有人愿意提起SIFT算子,仿佛被翻进了历史的另一页。Embedding为代表的表征学习,在大规模稀疏ID问题和多值ID问题上,似乎也能搞定自动化特征工程,于是互大家看到很多,各种千奇百怪的文本分类模型,CTR预估模型,似乎就是Embedding后面一顿盘他,最终转化成分类问题,似乎并不需要特征工程这门祖传的手艺了。

然而真的是这样吗?

讲一个比较复杂的例子,如果你对speech稍有了解,或者做过说话人验证/声纹识别(SVR)任务,你会知道,有一种特征工程叫做MFCC 特征,现在解决说话人本身特性的问题,前端还是无法离开MFCC,而我认为MFCC是一种非常有代表性的饱含了专家知识的特征工程,感兴趣的同学可以了解一下:MFCC(梅尔频率倒谱系数)。

关于特征工程的系统部分前面的回答已经总结的很好了。如果你读过很多博客,书籍,你会发现,特征工程的实践和理论是高度割裂的,在这里,我要推荐一门coursera的课程,Advanced Machine Learning(高级机器学习),有Kazanova大神授课的部分,(顶级Kaggle GM,巅峰TOP3),这里面有很多来源于实践中的很多技巧。

Kaggle上有一句非常经典的话,数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已,而这恰恰是课堂上最为缺失,一门需要在实践中学习的手艺。

其实是有一本讲特征工程的书的,不过并不推荐,因为实在是太简单了,可能看了就跟喝了一杯白开水一样。链接在下面

作者:包大人
链接:https://www.zhihu.com/question/29316149/answer/607394337
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

为者常成,行者常至