人工智能与数据挖掘算法大赛分享

>来源:决赛视频【1】

>来源:决赛分享【2】

人工智能与数据挖掘比赛流程:赛题分析、特征工程、模型选择、模型优化、评估

一、赛题分析:

训练集,测试集,数据总量,X,Y,正负样本比例,评价指标,最终目标,特征缺失率

优势:根据数据量的大小,判定其适合的方法,深度学习,机器学习,判定其主要是提高泛化能力还是精准度

二、特征工程

1. 特征分析

1.1 特征基本信息分析

连续性:数据类型,均值,方差,标准差,分位值,缺失率

离散性:数据类型,频数,占比,缺失率

1.2 特征重要性分析

  1. 查资料了解特征的字面重要性
  2. IV分析(信用卡评分领域),残差分析,单变量入模分析:简单,易理解,但只有一阶重要性信息,相关重要性分析,连续数据进行分箱离散化
  3. 方差分析,主特征分析PCA:简单,对单个/组合特征理解难度大,不适合小数据/高噪声的数据
  4. 使用后sklearn库中的RFECV进行特征选择:筛选的指标为AUC,选择使得AUC得分最高的一些特征
  5. 使用基础算法进行特征重要性选择

    残差分析:离散值其实就是面积,患病率,相对患病率,相对患病率大(>8%),则表示有作用,就是其取值有很大的变化

    单变量入模分析:获取特征与label的相关性(spass可以直接获取,也可以通过图表获取)

    特征种类:连续性特征,离散性特征

    离散特征:获取每一个取值与label的概率分布,如果所有取值的label概率分布相差不大,则为不重要特征,如果相差很大,则认为重要特征

    连续特征:获取连续特征的概率分布图(横轴为特征取值,纵轴为某一个label的概率值),获取箱图,根据概率分布曲线图和箱图中上1/4位点,下1/4位点,中位点的差异,获取该特征的重要性 

1.3 相关性分析

  1. 变量之间的相关性可以通过SPSS计算协方差获得,有利于LR中去除强相关的变量,防止多重贡献性问题。

1.4 单调性分析

  1. 特征与label的关系,有利于可解释性

1.5 组合变量分析

  1. 重要变量的+,-,*,/之后,然后通过特征重要性的指标进行筛选。

1.6 回归分析

2. 特征筛选

2.1 缺失值多的特征删除

根据缺失值的比例删除,通过【标准】进行衡量

2.2 弱特征删除

根据重要性删除,通过【标准】进行衡量

2.3 缺失值填充

  1. 单变量填充法:随机填补法,中位数/中值/均值填补法,回归填补法,不填充(lightgbm自动填充),VAE/GAN生成填补法
  2. 多变量填补法(如果变量之间的相关性很大):MICE方法(每次填充结果不稳定,选取1000次填充取平均值,2011“Mutiple imputation by chined equations”论文),低秩矩阵分解MC方法,softImpute核范数方法,Nuclear核范数方法(效果很好,但不适用于大矩阵)。
  3. 测试:可以随机生成一个数据集,根据MSE(均方误差)进行评价
  4. 标准:指标是F值或者AUC值无变化或提高
  5. 优势:如果不删除缺失比例过高的特征,可能过拟合,并且可以减小计算量

3. 特征构造(贪心算法添加交叉特征)

  1. 建立4list,分别为+,-,*,/,首先将相关性最大的特征加入四个list,然后按相关性依次添加,每添加一组,可以通过【标准】进行衡量。
  2. Group特征,例如:数据标准化之后,a>0.5,b<0.3 =>新的特征c=1
  3. 时序特征,滑窗
  4. 标准:添加后F值或者AUC值无变化或提高
  5. 优势:特征的加减乘除能够更深层次的挖掘出一些潜在的有效特征

4. 特征预处理

  1. 特征归一化或者标准化
  2. 特征one_hot编码(对于离散特征,可以很好的发现其分位点对label的影响),CV编码
  3. 正负样本比例。F1最大化的阈值在0.33-0.5,可选择F1值的一半
  4. 数据划分

  • 数据不足:交叉验证,可以选取交叉验证的平均f值作为最后的结果
  • 数据充足:随机划分

5. 模型选择

  1. 分类:Lightgbm(6*),Xgboost(7),Adaboost(1),GBDT(4*),Decision Tree(1),RF(3),ExtraTree(1*),SVM,LR(3),贝叶斯,catboost(4*)
  2. 工业界应用的:GBDT,SVM,LR,PM(因子分析法)
  3. 原因:可解释性

6. 模型处理

  1. 损失函数修改,例如:放大异常数据的损失函数
  2. 激活函数修改,例如:将预测概率在0.5附近的值强制偏向于0或1(可修改sigmod),例如患病的预测,因为0.5有病或者无病,最好的方式是偏向有病

7. 模型融合

7.1 投票法模型(针对弱分类器,分类器有差异)

  1. 手动网格法权重

         EnsembleVoteClassifier(clfs=[lgb,xgb,gb,et,ada],voting='soft',weights=[1,1,1,2,2])

  1. 自动学习权重

        模型输出作为新模型的输入,结果做交,做反,之后在通过线性回归,构建模型权重

        

7.2 级联模型

  1. 三个算法预测概率进行分箱统计,发现

 

  1. 所以采用级联模型,将阈值设为0.25

 

7.3 重复单模型(二叉树学习原理)

 

7.4 stacking融合

  1. stacking融合(第一层模型输出概率要取对数作为第二层的输入)

 

 

8. 模型调参

  1. 模型参数:

        采用GridSearch CV调参

        采用群体优化中的遗传算法进行调参

    2. 模型间参数(模型权重):可以采用手动调参,回归模型调参

        优势:提高模型预测准确率,提高泛化性,较少过拟合

9. 阈值选择

  1. F1值的一半最好

10. 特征的重要性(不同模型的特征重要性不同)

  1. 通过模型,可以获取特征的重要性,然后对重要的特征可以继续进行特征交叉,对于不重要的特征可以进行特征选择
  2. 计算:可以通过模型直接求得
  3. 描述:可以通过曲线图和箱图进行描述

三、评估

  1. 是否过拟合
  2. 泛化能力
  3. 重要特征的可解释性
  4. 时间复杂度

四、优化

  1. 合适的线下验证,多个测试集,可以极高泛化能力
  2. catboost可以防止过拟合
  3. 特征剪枝

五、注

时序特征:

[1]提取时间特征:天,小时,分钟。

[2]提取关于时间的统计特征:通过不同的id特征来进行分组,针对不同的时间来提取size(),count(),cumcount(),unique()等特征。  

[3]提取关于时间的间隔特征:通过不同的id特征来进行分组,提取上/下次访问/购买时间差。

[4]提取关于时间统计特征的比值特征:在相同的id特征分组得到的统计特征后,在不同时间区域上进行比值。

[5]提取转化率特征(来自于队友)。

[6]提取相似度特征(来自于队友)。

[7]user最后1~2次的行为特征

[8]target特征处理,(均值、方差、标准差等描述性统计特征)

[9]转化率特征的平滑处理

猜你喜欢

转载自blog.csdn.net/qq_31813549/article/details/79956009