模型调优与融合

0.调优模型,让模型在给定的数据集上有更好的效果。

一、前序工作流程

  0.数据清洗

    (1)不可信的样本丢掉

    (2)缺省值极多的字段考虑不用

  1.数据采样:

    (1)下/上采样

    (2)保证样本均衡 

  2.特征处理(特征工程)

    数值型

    类别型

    时间型

    文本型

    统计型

    组合特征

  3.特征选择(特征工程)

    (1)过滤型

    (2)包裹型

    (3)嵌入型

  4.数据处理

     5.特征工程

  6.模型选择

    交叉验证(cross validation),尽量的把数据集中所有的数据都拿出来都参与到所有的k折交叉验证的过程中

      交叉验证集做参数/模型选择

      测试集只做模型效果评估(只做评估的手段)

    K折交叉验证(k-fold cross validation)

  7.交叉验证

    交叉验证选取:sklearn.grid_search.GridSearchCV(网格搜索交叉验证,对候选参数组,每个都做一次交叉验证,验证效果好坏,用它在全部的数据上完成一次训练)

  8寻找最佳超参数

二、模型优化

  1.模型状态

    (1)过拟合(overfitting/high variance)

    (2)欠拟合(underfitting/high bias)

    (3)模型效果优化1

      过拟合:

        找更多的数据来学习(最有效的方式,数据才是王道,数据驱动的解决方案)

        增大正则化系数

        特征选择

        差异化模型融合

      欠拟合:

        找更多特征

        减小正则化系数

    

 

  2.权重分析

    模型效果优化2:

      线性模型的权重分析

        线性或者线性kernel的model

        Linear Regression

        Logistic Regression

        Linear SVM

        .........

      对权重绝对值高/低的特征

        做更细化的工作

        特征组合

  3.bad-case分析

     (1)分类问题

 

     (2)回归问题

 

  4.模型融合

    (1)是什么?  把一组独立的学习器组合起来,如果学习器是同质的  

      Ensemble Learning是一组individual learner的组合

      如果individual learner同质,称为base learner

      如果individual learner 异质,那么称之为component learner

    (2)为什么?

    (3)Bagging

      模型很多时候效果不好的原因是什么?过拟合

      如何缓解过拟合?

      用一个算法,不用全部的数据集,每次取出一个子集训练一个模型

      分类:用这些模型的结果做vote

      回归:对这些模型的结果取出平均值

    用不同的算法:这些模型的结果做vote或者求出平均值(voting claafier)

    (4)Stacking:用多种predictor结果作为特征训练

    (5)Adaboost:调整样本权重的模型

    (6)Gradient Boosting Tree:和 Adaboost思路类似,解决回归问题

    

三、案例讲解  

posted @ 2019-02-24 19:13  stone1234567890  阅读(735)  评论(0编辑  收藏  举报