机器学习融合想法记录
## **文档说明**
本文档主要记录模型融合的有关问题:为了使项目在模型预测有更好的表现,综合机器学习方面的模型融合技术,以提升算法在解决问题的能力。
## **使用背景**
业务情节:接单阶段;
时间段:2020
数据量:160W
特征数(本篇不对特征处理做说明):20
## **数据处理**
综合考虑数据的规范性与线上使用场景,切分数据:train,test,validate(视模型情况使用)。
#### 1、关于数据切分,有以下两个方案:
1.1、采用KFold多次洗牌,shuffle单次洗牌等方式对数据进行处理,规避特殊数据带来的影响,建议采用7:3比例,并且观察切分后各特征的误差值是否均匀(适用于验证模型效果)。
1.2、直接按时间切分数据(此法通常情况下,各数据集会存在较大的误差,特别在数据量少的情况下特别突出,但是却是实际生产环境中经常不可避免的)。
#### 2、关于数据缺失值的处理,有以下方案:
2.1、对于缺失严重值和离散性特征某个数值占据95%以上,建议直接取消该特征(实际意义已经不存在)。
2.2、采用各特征std填充。
2.3、采用各特征mean填充(更推崇2.2)。
2.2、根据业务特性进行分析,获取具有与实际业务意义符合的数据变化规律值进行填充。
## **评价指标**
MAE,MSE,残差分布
## **性能指标**
时间复杂度,空间复杂度
## **损失函数**
一般回归算法以mse做损失,考虑有些模型须进行二次求导,非二次求导可采用mae做损失。建议根据业务应用场景也可选择分段函数做损失,
## **方案说明**
### 考虑不同算法的特点及特性,如树(容错性强,部分算法可允许缺失值存在),向量机,多元神经元(特征归一化效果明显,可操作性强)等方式,不同算法对于数据的表现不同,验证各算法间的在不同使用场景下的表现,计划算法如下:
1、tensorflow框架下的自建深度学习回归算法:
(初步)tensor图中,采用线性方程为神经元,二层layer,分别做两组对比(20-20Dense,80-100Dense),每层皆以relu函数做优化,最后输出层以 linear函数做最后的激活,创建的参数共计(861,9881),优化模型参数epoch在本测试中用20,30,50,以0.3%的Adam梯度算法进行收缩。
3、xgboost(XGBRegressor):
目前应用的模型,后续详细记录。
4、SVR(SVM Regressor):
待验证。
### 不同算法在应用背景下的各项指标表现(内存占用量以数据集转DataFrame数据类型量统计空间复杂度,由于对比模型都支持该数据格式,则无需对比):
1、tensorflow深度学习回归算法:
操作空间大,相关独立的线性相关特征效果较好。
2、xgboost:
非线性关系特征训练效果相对较好
3、SVM:
## **融合策略**
1、建议结合业务指标,综合各模型predict值与actual值之间的残差进行评估,采用加权平均进行融合。
2、以LG模型对各模型的预测值进行二次训练,以寻求最优融合参数。
3、以简单模型训练得到的结果作为模型特征,通常此特征相关性相对较高,再以高级算法模型进行(业务特征与)模型特征二次训练。
4、收集各模型数据预测值与实际值间的残差值,平方差等为特征,亦可再结合相关业务性质提取重要特征,再进行二次训练进行融合。
望建议 caixuwu@outlook.com