二手车价格预测-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