特征工程是指将数据转化为能更好地表示潜在问题的特征,从而提高机器学习性能。主要分为如下几点:
- 数据理解
- 数据清洗
- 特征构造
- 特征选择
- 类别不平衡
1.数据理解
目的: 探索数据,了解数据,主要在EDA阶段完成。
2.数据清洗
目的:提高数据质量,降低算法用错误数据建模的风险。
主要方法有:
特征变换:模型无法处理或不适合处理
方法:定性变量编码:Label Encoder;Onehot Encoder;Distribution coding;
标准化和归一化:
缺失值处理:增加不确定性,可能会导致不可靠输出
方法:不处理:少量样本缺失
删除:大量样本缺失
补全:(同类)均值/中位数/众数不全;高位映射,模型预测,最近邻补全,矩阵补全
异常值处理:减少脏数据
方法:简单统计:如describe()、散点图等
正态分布、箱型图截断
利用模型进行离群点检测:聚类,K近邻,One Class SVM Isolation Forest
其他:删除无效列,更改dtypes,删除列中的字符串,将时间戳从字符串转换为日期时间格式等
特征构造
目的:增强数据表达,添加先验知识
1.统计量特征:
计数,求和,比例,标准差
2.时间特征:绝对时间,相对时间,节假日,双休日
3.地理信息:分桶
4.非线性变换:取log, 平方,根号
5.数据分桶:等频/等距分桶,Best-KS分桶,卡方分桶
6.特征组合
特征选择
目的:降低噪声,平滑预测能力和计算复杂度,增强模型预测性能。
1.过滤式(Filter): 先用特征选择方法对初始特征进行过滤然后再训练学习器,特征选择过程与后续学习器无关。
Relief,方差选择,相关系数,卡方检验,互信息法
2.包裹式(Wrapper):直接把最终将要使用的学习器的性能作为衡量特征子集的评价标准,其目的在于为给定学习器选择最有利于其性能的特征子集。
LVM
3.嵌入式(Embedding):结合过滤式和包裹式方法,将特征选择与学习器训练过程融为一体,两者在同一优化过程中完成,即学习器训练过程中自动进行了特征选择。
LR+L1 或决策树
类别不平衡
缺点:少类别提供信息太少,没有学会如何判别少数类。
扩充数据集
尝试其他评价指标:AUC等
调整 θ \thetaθ值
重采样:过采样/欠采样
合成样本:SMOTE
选择其他模型:决策树等
加权少类别人样本错分代价
创新:
将大类分解成多个小类
将小类视为异常点,并用异常检测建模。
特征工程的流程
机器学习中数据的转换过程:
选择数据:收集整合数据,将数据规划化为一个数据集
预处理数据:对数据进行清洗、格式化、采样
转换数据:特征工程所在
对数据建模:构建模型、评估模型、调整模型
特征工程的迭代过程:
对特征进行头脑风暴:深入分析问题,观察数据特点,参考其他问题的有关特征工程的方法并应用到自己问题中
特征的设计:你可以自动提取特征,手动构造特征,或将两者相结合
特征选择:使用不同的特征重要性评分方法或特征选择方法
评估模型:利用所选择的特征对测试数据进行预测,评估模型准确性