zoukankan      html  css  js  c++  java
  • 机器学习融合想法记录

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

    ## **使用背景**

    业务情节:接单阶段;

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

  • 相关阅读:
    Docker(二)Image 与网络
    Docker(一)概念与基础
    Apache Hudi 介绍与应用
    Flink读写Kafka
    Flink 应用的一致性保障
    Flink系统配置
    Flink架构(五)- 检查点,保存点,与状态恢复
    Flink架构(四)- 状态管理
    HBase 中读 HDFS 调优
    Nginx模块之http.md
  • 原文地址:https://www.cnblogs.com/cxw296052618/p/13232182.html
Copyright © 2011-2022 走看看