作者:Prateek Joshi
翻译:张玲
校对:李润嘉
本文约4000字,建议阅读10分钟。
本文简要介绍特征工程的基本组成部分,并用直观的示例理解它们,最后给出使用Python Featuretools库实现自动化特征工程的操作过程。
简介
在机器学习黑客马拉松和竞赛中,特征工程的质量通常是进入排行榜10强和无缘50强的重要区别,因此,所有参赛过的人都可以证明特征工程的重要性。
自从我意识到特征工程具有巨大的潜力以来,我一直是它的大力倡导者。但当手动完成时,这可能是一个缓慢而艰难的过程。我必须绞尽脑汁来思考有哪些特征存在,并从不同的角度分析它们的可用性。现在,整个FE(Feature Engineering,特征工程)流程都可以实现自动化,我将在本文中向您展示。
我们将使用一个名为Featuretools的Python特征工程库,来实现这一流程。但是在深入研究之前,我们首先了解下FE的基本组成部分,并用直观的示例理解它们,最后利用BigMart Sales数据集来深入了解自动化特征工程这一精彩世界。
目录
1. 什么是特征?
2. 什么是特征工程?
3. 为什么需要特征工程?
4. 自动化特征工程
5. Featuretools简介
6. Featuretools实践
7. Featuretools的可解释性
1. 什么是特征
在机器学习的背景下,特征是用来解释现象发生的单个特性或一组特性。 当这些特性转换为某种可度量的形式时,它们被称为特征。
举个例子,假设你有一个学生列表,这个列表里包含每个学生的姓名、学习小时数、IQ和之前考试的总分数。现在,有一个新学生,你知道他/她的学习小时数和IQ,但他/她的考试分数缺失,你需要估算他/她可能获得的考试分数。
在这里,你需要用IQ和study_hours构建一个估算分数缺失值的预测模型。所以,IQ和study_hours就成了这个模型的特征。
2. 什么是特征工程?
特征工程可以简单定义为从数据集现有特征中构造新特征的过程。假设我们有一个样本数据,里面含有一些商品的细节信息,例如重量和价格。
现在,我们可以用Item_Weight和Item_Price来构造名为Price_per_Weight的新特征。它仅是用商品的价格除以商品的重量而已。这样的过程称为特征工程。
这只是一个从现有特征中构造一个新特征的简单示例,但实际上,当我们有相当多的特征时,特征工程可变得非常复杂和繁琐。
再看另一个例子,在常用的Titanic数据集中,存在一个乘客名字的特征,下面是这个数据集中的一些名字:
Montvila, Rev. Juozas
Graham, Miss. Margaret Edith
Johnston, Miss. Catherine Helen “Carrie”
Behr, Mr. Karl Howell
Dooley, Mr. Patrick
这些名字实际上可以分解成另外几个有意义的特征。例如,将相似的称谓提取出来,合并成一个类别。让我们来看一看乘客姓名中这些称谓的不同个数。
从上图可以看出,“Dona”、“Lady”、“the Countess”、“Capt”、“Col”、 “Don”、“Dr”、“Major”、“Rev”、“Sir”和“Jonkheer”这些称谓是十分少见的,可以将它们放在一个标签下,即rare_title。除了这些,称谓“Mlle”和“Ms”可归到“Miss”下,而“Mme”可以用“Mrs”来代替。