机器学习融合想法记录

## **文档说明**
本文档主要记录模型融合的有关问题:为了使项目在模型预测有更好的表现,综合机器学习方面的模型融合技术,以提升算法在解决问题的能力。

## **使用背景**

业务情节:接单阶段;

时间段: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

posted @ 2020-07-03 18:30  小裁缝  阅读(123)  评论(0编辑  收藏  举报