二手车价格预测-02-FeatureEngineering

特征工程

特征工程的大致任务整理

主要根据Tianchi上的示例和这个开源项目

1.数据处理

1.1.1 数值型变量

1.1.1.1 异常值

筛选出来删了不用

1.1.1.2 归一化/标准化
1.1.1.3 数据分桶

离散化数据,防止过拟合
二值分箱

1
from sklearn.preprocessing import Binarizer

等距分箱、分位数分箱

1
from sklearn.preprocessing import KBinsDiscretizer

示例提到的回头再研究

等频分桶;
等距分桶;
Best-KS 分桶(类似利用基尼指数进行二分类);
卡方分桶;

1.1.1.4 缺失值

根据示例的处理思路

不处理(针对类似 XGBoost 等树模型);
删除(缺失数据太多);
插值补全,包括均值/中位数/众数/建模预测/多重插补/压缩感知补全/矩阵补全等;
分箱,缺失值一个箱;

1.1.2 类别型变量

主要关注点就是怎么编码
打算看这两篇文章了解一下怎么选择编码方式
categorical-encoding-techniques打不开的话可以用这个短链
smarter-ways-to-encode-categorical-data-for-machine-learning打不开的话可以用这个短链

1.1.3 特征构造

根据背景知识去造特征
把能看懂的特征转换成机器更易懂的形式(比如邮编转换成地址什么的)
简单加减乘除或构造多项式造特征
时序变量用featuretool自动造特征

2.特征选择

2.1 过滤式(filter)

2.2 包裹式(wrapper)

LVW(Las Vegas Wrapper)是一种随机算法,看伪代码感觉思路很像模拟退火,计算开销比过滤式要大

2.3 嵌入式(embedding)

3.降维

特征太多,手里的设备carry不了,必须减少一些,用数量更少更“有用”的特征来训练

3.1 PCA/ LDA/ ICA

3.1.1 无监督的方法:PCA
1
from sklearn.decomposition import PCA

要用的时候可以看的PCA方法文档

1
from sklearn.decomposition import KernelPCA

还有这个用于非线性降维的kernel PCA方法文档

3.1.1 有监督的方法:LDA

只用于分类问题

1
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA

3.2 特征选择也是降维

这次要重点学啥

因为俺是新手,所以这次主要用些功能强大的模型像XGBoost和LightGBM,特征选择打算先交给模型去做,做完根据训练完特征的importance排序后再删除一些特征

特征工程东西太多了,以后慢慢学不着急

接下来几天重点就是着手去把数值型异常值处理了,做一下归一化/标准化或分桶;给类别型变量找个好的编码方法;然后就是好好看XGBoost和LightGBM的教程


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 carlos@sjtu.edu.cn

目录
×

恰饭