Datawhale 零基础入门数据挖掘-特征工程
图片来源请点这里
到今天,我已经不再挣扎于理解代码。打算深入学习理论知识,后续打好Python基础后再认真研究代码。
一、名称解释
1.特征及特征工程
特征是数据中抽取出来的对结果预测有用的信息,可以是文本或者数据。特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。过程包含了特征提取、特征构建、特征选择等模块。
特征工程的目的是筛选出更好的特征,获取更好的训练数据。因为好的特征具有更强的灵活性,可以用简单的模型做训练,更可以得到优秀的结果。原文链接:https://blog.csdn.net/joycewyj/article/details/51647036
2.特征工程处理的意义
基于更准确地特征可以创建更简单的模型,更简单的模型它的性能也就更好,所需的计算时间也就越短。
3.特征工程主要包含特征构造、特征提取、特征选择。
特征构造指的是从原始数据构造新特征的处理过程,一般需要 根据业务分析 ,生成能更好体现业务特性的新特征。特征构造仍然是对数据的变换,像这次打卡学习,对二手车交易价格预测就要搜集些二手车价格相关的数据了。
特征抽取指的是从原始数据抽取新特征。抽取的目的是将多维的或相关的特征降低到低维,以提取主要信息或生成与目标相关性更高的信息。
特征选择是指对特征进行一定的选择。通过原始数据抽取出的的特征并不都是“平等”的,通过一些判断将与问题无关的特征移除,对模型表现影响很大的一些特征保留。
二、特征处理
1.常见的特征工程包括:
a.异常处理
- 通过箱线图(或 3-Sigma)分析删除异常值;
- BOX-COX 转换(处理有偏分布);
- 长尾截断;
b.特征中心化、标准化、归一化
中心化:把数据整体移动到以0为中心点的位置。将数据减去这个数据集的平均值。
标准化:把整体的数据的中心移动到0,数据再除以一个数。在数据中心化之后,数据再除以数据集的标准差。
归一化:把数据的最小值移动到0,再除以数据集的最大值。对这个数据集的每一个数减去min,然后除以极差。
左边是原始数据的分布情况、中间是经过中心化的分布情况、右边是经过标准化后的情况
左边是原始数据的分布情况、中间是经过中心化的分布情况、右边是经过标准化后的情况
标准化、中心化、归一化
c.数据分箱(数据分桶)
数据分箱(也称为离散分箱或分段)是一种数据预处理技术,用于减少次要观察误差的影响,是一种将多个连续值分组为较少数量的“分箱”的方法。
1.分箱的重要性及其优势
一般在建立分类模型时,需要对连续变量离散化,特征离散化后,模型会更稳定,降低了模型过拟合的风险。
分箱的有以下重要性及其优势:
1.易于模型的快速迭代;
2.运算速度快,计算结果方便存储,容易扩展;
3.离散化后的特征对异常数据有很强的鲁棒性;
4.能够提升模型表达能力,加大拟合;
5.离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力;
6.离散化后,模型会更稳定
7.简化了逻辑回归模型的作用,降低了模型过拟合的风险。
8.可以将缺失作为独立的一类带入模型。
9.可以将所有变量变换到相似的尺度上。
d.缺失值处理:
1.不处理(针对类似 XGBoost 等树模型);
2.删除(缺失数据太多);
3.插值补全,包括均值/中位数/众数/建模预测/多重插补/压缩感知补全/矩阵补全等;
4.分箱,缺失值一个箱;
缺失值是指粗糙数据中由于缺少信息而造成的数据的聚类,分组,删失或截断。它指的是现有数据集中某个或某些属性的值是不完全的。
图片来自:数据挖掘:数据清洗——缺失值处理
e.特征构造:
1.构造统计量特征,报告计数、求和、比例、标准差等;
2.时间特征,包括相对时间和绝对时间,节假日,双休日等;
首先进行数据类型转换转为datetime。函数:pandas中的to_datetime或者astype,to_datetime可以调整时间格式。
3.地理信息,包括分箱,分布编码等方法;
4.非线性变换,包括 log/ 平方/ 根号等;
5.特征组合,特征交叉;
f.特征筛选
1.过滤式(filter):先对数据进行特征选择,然后在训练学习器,常见的方法有 Relief/方差选择发/相关系数法/卡方检验法/互信息法;
2.包裹式(wrapper):直接把最终将要使用的学习器的性能作为特征子集的评价准则,常见方法有 LVM(Las Vegas Wrapper) ;
3.嵌入式(embedding):结合过滤式和包裹式,学习器训练过程中自动进行了特征选择,常见的有 lasso 回归;