请点击上方“AI公园”,关注公众号
本文选自Kaggle
作者:Will Koehrsen
编译:ronghuaiyang
Kaggle的信用卡违约风险预测竞赛,非常有参考价值,做风控和大数据挖掘的同学可以参考一下,非常详细,非常适合入门,从数据处理到模型的构建,非常全面,文章比较长,分几次发出来,这是第三部分,主要讲特征工程。
特征工程
Kaggle比赛获胜都是通过特征工程获胜的:能创造出最有用的特征的人才能获胜。就像吴恩达说的:“应用机器学习基本上就是在做特征工程。”
选择正确的模型和最佳的设置非常重要,模型只能从数据中学习给到的内容。需要保证数据是和最终的任务是有关系的,这是数据科学家的工作。
特征工程指的是一个广泛的操作,可以包括在特征的建设:加入新的特征,和特征的选择:选择最重要的特征,或者降维方法。还有些方法可以同时创建特征和选择特征。
我们会做很多的特征工程的工作,但在这里,我会尝试两个简单的特征建设的方法:
多项式特征
领域知识特征
多项式特征
一个简单的特征建设的方法叫做多项式特征。这个方法中,我们会对特征进行平方以及让特征两两组合相乘。比如,我们创建变量EXT_SOURCE_1^2
和EXT_SOURCE_2^2
,还有 EXT_SOURCE_1
x EXT_SOURCE_2
, EXT_SOURCE_1
x EXT_SOURCE_2^2
, EXT_SOURCE_1^2
x EXT_SOURCE_2^2
等。独立的特征的乘积组成的特征称作相互关系项,因为获取的是变量之间的相互关系。换句话说,两个变量本身可能对target的影响不是很大,组合了之后可能会对target有比较大的影响。相互关系项在统计模型中非常常用,但是在机器学习中用的不多。不管怎样,我们可以试试看。
下面的代码中,我们使用 EXT_SOURCE
和 DAYS_BIRTH
创建了多项式特征。Scikit-Learn中有个很有用的类叫做PolynomialFeatures
,可以创建特定阶的多项式特征,我们可以试试3阶的效果,特征的数量和阶数是指数的关系,可能会遇到过拟合的问题。
In [31]:
In [32]:
这个方法创建了客观的特征数量。为了获取名字,我们使用了多项式特征的 get_feature_names
方法。
In [33]:
Out[33]:
有35个特征,有特征的3次方,还有3阶的相互组合。现在我们看看这些新的特征和target的相关性。
In [34]:
有一些新的特征的相关性要比原始的特征要大。当我们创建机器学习模型的时候,我们可以试试使用或者不使用这些特征。在机器学习中,很多时候想知道一个方法是不是有效的唯一方法就是试试看!
In [35]:
领域知识特征
可能叫“领域知识”并不是很合适,因为我不是一个征信专家,也许可以叫“尝试应用有限的金融知识”。这种思想就是我们可以组合一些我们认为是重要的特征,收到了 Aguiar 的 this script 的启发,这里我们使用了5个特征:
CREDIT_INCOME_PERCENT
: 客户收入相对于信用额度比例ANNUITY_INCOME_PERCENT
: 客户收入对于养老金的比例CREDIT_TERM
: 偿还的时长,按月算。DAYS_EMPLOYED_PERCENT
: 客户年龄相对于受雇佣天数的比例
再次感谢 Aguiar 探索了这些特征。
In [36]:
In [37]:
新变量可视化
我们可以可视化领域知识变量,我们同样会做一个KDE和target的图。
In [38]:
很难事先说这些新的特征是不是有用,只有试过之后才知道。
(未完待续)
本文可以任意转载,转载时请注明作者及原文地址。
请长按或扫描二维码关注我们