1 概述
特征工程是一个超集,它包括特征提取、特征构建和特征选择这三个子模块。在实践当中,每一个子模块都非常重要,忽略不得。根据答主的经验,他将这三个子模块的重要性进行了一个排名,即:特征构建>特征提取>特征选择。特征工程就是一个把原始数据转变成特征的过程,这些特征可以很好的描述这些数据,并且利用它们建立的模型在未知数据上的表现性能可以达到最优(或者接近最佳性能),我认为这是在机器学习模型训练中非常关键,重要性:
1.好特征的灵活性在于它允许你选择不复杂的模型,同时运行速度也更快,也更容易理解和维护;
2.有了好的特征,即便你的参数不是最优的,你的模型性能也能仍然会表现的很nice,所以你就不需要花太多的时间去寻找最有参数,这大大的降低了模型的复杂度,使模型趋于简单
2 特征工程处理过程
1.(Task before here)
2.选择数据(Select Data): 整合数据,将数据规范化成一个数据集,收集起来.
3.数据预处理(Preprocess Data): 数据格式化,数据清理,采样等.
4.数据转换(Transform Data):这个阶段做特征工程.
5.数据建模(Model Data): 建立模型,评估模型并逐步优化.
(Tasks after here…)
我认为比较好的一些方法:
预处理
1.缺失值处理,对于一些重要的特征数据,缺失值的填充,起到很关键的作用,在本次天池大数据竞赛中,对于使用寿命缺失值填充,我选择随机森林预测的方法,对预测结果起到了很好的作用。代码如下:
同时值得注意的是,以下是一种很好的可视化缺失值的方法
import missingno as msno
data.bodyType.fillna(data.bodyType.median(),inplace=True)
p=msno.bar(data)
plt.show()
特征可视化方法:
f = pd.melt(Train_data, value_vars=numeric_features)
g = sns.FacetGrid(f, col="variable", col_wrap=2, sharex=False, sharey=False)
g = g.map(sns.distplot, "value")