机器学习回归预测中预处理的特征工程
1.项目目标和数据分析
2.数据预处理
3.特征构造与生成
4.特征选择
5.时间序列回归预测-——引用风速预测案列简单说明
在机器学习回归预测中,特征工程是至关重要的环节,它能显著提升模型的性能和预测准确性。这里从一个项目开始分析到最终确定特征的思考,本文章先主要理论说明,后续会对每一个方法和用法进行单独说明和代码示例。说明的涉及领域比较多,方法都可以用代码实现。
一、项目目标和数据分析
1. 明确业务目标与数据来源
理解预测目标,如房价预测、销量预测、信用评分、疾病风险预测、药物研发、产品质量控制、电力负荷预测、交通流量预测、广告点击率(CTR)、作物产量预测等,确定关键影响因素。分析数据来源的可靠性,如传感器数据、用户行为数据等,评估数据质量缺失值、异常值、噪声等。
2. 数据探索性分析(EDA)
(1)统计分析:计算均值、中位数、标准差等,观察特征分布(正态分布、偏态分布等)。
(2)可视化分析:
连续特征:绘制直方图、箱线图,识别异常值。
离散特征:绘制条形图,分析类别分布。
特征与目标变量:绘制散点图、相关性矩阵(如皮尔逊相关系数),筛选强相关特征。
相关性检验:通过统计学方法(如 Spearman 秩相关)量化特征与目标的关联程度。
二、数据预处理
1. 缺失值处理
(1)删除法:若缺失比例过高且特征重要性低,可直接删除特征;若缺失样本少,可删除样本。
(2)插值法:
连续特征:用均值、中位数、众数填充,或使用 KNN、回归模型预测填充。
离散特征:用众数、最频繁值填充,或新增 “缺失” 类别。
2. 异常值处理
(1)检测方法:
统计方法:Z-score(适用于正态分布)、IQR(四分位距,适用于非正态分布)。
机器学习方法:孤立森林、局部离群因子(LOF)。
(2)处理方式:
修正:若为数据录入错误,修正为正确值。
保留:若异常值代表真实业务场景,保留并作为独立特征。
删除或平滑:对噪声型异常值,可删除样本或用均值 / 中位数平滑。
3.数据转换
1.标准化(Standardization)
将特征缩放到均值为 0、标准差为 1 的范围,适用于基于距离或梯度的模型(如 SVM、神经网络)。这里内容前面文章说明过链接机器学习数据预处理回归预测中标准化和归一化。
2.归一化(Normalization)
将特征缩放到0,1或−1,1区间,适用于需要数值范围一致的模型(如 KNN)。
3.对数变换
处理右偏态数据(如房价),使其接近正态分布,提升模型稳定性。
4.分箱(Binning)
将连续特征离散化,减少噪声影响。等距分箱是按固定区间划分。等频分箱是每个箱内样本数相等。卡方分箱是基于统计显著性合并区间。
三、特征构造与生成
1. 基于业务逻辑的特征构造
(1)组合特征:将多个特征组合生成新特征。
时间特征:从日期中提取年、月、日、星期、节假日等。
空间特征:经纬度计算距离。
交互特征:特征相乘或逻辑组合(如 “是否为节假日且是否为周末”)。
(2)统计特征:对分组数据计算统计量。
用户历史订单的均值、最大值、标准差。物品的类别频数。
2. 基于机器学习的特征生成
(1)特征交叉(Feature Crossing):通过多项式特征扩展(如二次项、三次项)捕捉非线性关系,适用于线性模型。
(2)文本特征处理(如用户评论用于情感预测):词袋模型(BOW)、TF-IDF、Word2Vec 生成数值特征。
(3)图像特征处理(如图片预测价格):使用 CNN 提取图像特征(如边缘、纹理)。
3. 特征衍生工具
自动特征工程工具:Featuretools(自动生成基于时间序列或图结构的衍生特征)。
领域特定方法:如时间序列数据中生成滞后项(lag)、滚动窗口均值(rolling mean)。
四、特征选择
1. 过滤法(Filter Methods)
(1)单变量统计:连续特征与目标的相关性(如皮尔逊相关系数绝对值 > 0.3)。假设检验,ANOVA(方差分析,适用于离散特征与连续目标)。
(2)阈值法:删除方差低于阈值的特征(如方差为 0 的常量特征)。
2. 包装法(Wrapper Methods)
(1)递归特征消除(RFE):通过模型递归删除重要性最低的特征,保留指定数量的特征。
(2)随机搜索 / 网格搜索:结合特征子集搜索,选择使模型性能最优的特征组合。
3. 嵌入法(Embedded Methods)
(1)正则化:L1 正则化(Lasso)自动稀疏特征,筛选重要特征;L2 正则化(Ridge)用于特征权重衰减。
(2)树模型特征重要性:如随机森林、XGBoost 的feature_importances_属性,直接筛选 top-k 特征。
4. 降维技术
(2)线性降维:主成分分析(PCA)、线性判别分析(LDA),用于减少特征维度并保留主要信息。
(2)非线性降维:t-SNE(用于可视化高维数据)、UMAP。
五、时间序列回归预测-——风速预测案列
时间序列数据具有时序依赖性、周期性、趋势性等独特性质,其特征工程需要围绕时间上下文、序列模式、动态相关性展开。
1. 数据收集
气象数据:风速、风向、温度、湿度、气压等。
地理位置数据:海拔、经纬度、地形等。
时间数据:日期、时间、季节等。
历史数据:过去的风速、风向等。
2. 数据预处理
缺失值处理:使用插值、均值或删除等方法处理缺失值。
异常值处理:通过统计方法或可视化识别并处理异常值。
数据标准化/归一化:将数据缩放到相同范围,如使用Min-Max或Z-score标准化。
3. 特征选择
相关性分析:通过皮尔逊相关系数等方法选择与目标变量(风速)相关性高的特征。
特征重要性:使用随机森林、XGBoost等模型评估特征重要性,选择关键特征。
4. 特征构造
时间特征:从时间数据中提取小时、星期、月份等特征。
统计特征:计算滑动窗口内的均值、方差等统计量。
交互特征:构造特征间的交互项,如风速与温度的乘积。
地理特征:利用地理位置数据计算距离、高度差等。
5. 特征转换
多项式特征:生成多项式特征,捕捉非线性关系。
对数/指数转换:对数据进行对数或指数转换,使其更符合线性关系。
编码分类变量:对分类变量进行独热编码或标签编码。
6. 特征降维
PCA:使用主成分分析减少特征维度,保留主要信息。
t-SNE:用于高维数据可视化,帮助理解数据结构。
7. 特征工程工具
Pandas/Numpy:用于数据处理和特征构造。
Scikit-learn:提供标准化、特征选择、PCA等工具。
Featuretools:自动化特征工程的Python库。
8.注意事项
1.禁止随机划分(避免未来信息泄露),直接使用随机抽样(如train_test_split默认参数)划分数据集,可能导致测试集数据时间早于训练集,造成模型 “偷看” 未来数据,高估性能。
2.严格按时间顺序划分:确保训练集数据全在测试集之前。
例如:若数据时间范围为2020-01至2025-12,可划分为:
训练集:2020-01至2022-12
验证集:2023-01至2023-06
测试集:2023-07至2025-12
3.时间序列数据的核心是历史数据对未来的影响,多步长划分(适用于长序列预测):用前n个时间点预测第n+1个点,滑动窗口不重叠。
4.训练集和测试集包含完整的周期,避免截断周期导致模型无法学习规律。如按完整周期划分(如周、月)。