>来源:决赛视频
<https://blog.csdn.net/qq_31813549/article/details/79956009#postsId=4968>【1】
<https://blog.csdn.net/qq_31813549/article/details/79956009#postsId=4968>

>来源:决赛分享【2】 <http://workshop.aiops.org/>

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

一、赛题分析:

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

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

二、特征工程

1. 特征分析

1.1 特征基本信息分析

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

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

1.2 特征重要性分析

* 查资料了解特征的字面重要性
* IV分析(信用卡评分领域),残差分析,单变量入模分析:简单,易理解,但只有一阶重要性信息,相关重要性分析,连续数据进行分箱离散化
* 方差分析,主特征分析PCA:简单,对单个/组合特征理解难度大,不适合小数据/高噪声的数据
* 使用后sklearn库中的RFECV进行特征选择:筛选的指标为AUC,选择使得AUC得分最高的一些特征
* 使用基础算法进行特征重要性选择
* 残差分析:离散值其实就是面积,患病率,相对患病率,相对患病率大(>8%),则表示有作用,就是其取值有很大的变化
* 单变量入模分析:获取特征与label的相关性(spass可以直接获取,也可以通过图表获取)
* 特征种类:连续性特征,离散性特征
* 离散特征:获取每一个取值与label的概率分布,如果所有取值的label概率分布相差不大,则为不重要特征,如果相差很大,则认为重要特征
*
连续特征:获取连续特征的概率分布图(横轴为特征取值,纵轴为某一个label的概率值),获取箱图,根据概率分布曲线图和箱图中上1/4位点,下1/4位点,中位点的差异,获取该特征的重要性 
1.3 相关性分析

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

1.4 单调性分析

* 特征与label的关系,有利于可解释性
1.5 组合变量分析

* 重要变量的+,-,*,/之后,然后通过特征重要性的指标进行筛选。
1.6 回归分析

2. 特征筛选

2.1 缺失值多的特征删除

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

2.2 弱特征删除

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

2.3 缺失值填充

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

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

* 特征归一化或者标准化
* 特征one_hot编码(对于离散特征,可以很好的发现其分位点对label的影响),CV编码
* 正负样本比例。F1最大化的阈值在0.33-0.5,可选择F1值的一半
* 数据划分
* 数据不足:交叉验证,可以选取交叉验证的平均f值作为最后的结果
* 数据充足:随机划分
5. 模型选择

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

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

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

* 手动网格法权重
       
 EnsembleVoteClassifier(clfs=[lgb,xgb,gb,et,ada],voting='soft',weights=[1,1,1,2,2])

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

        

7.2 级联模型

* 三个算法预测概率进行分箱统计,发现:
*
* 所以采用级联模型,将阈值设为0.25
*
7.3 重复单模型(二叉树学习原理)

     ​

7.4 stacking融合:

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

    

8. 模型调参

* 模型参数:
        采用GridSearch CV调参

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

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

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

9. 阈值选择

* F1值的一半最好
10. 特征的重要性(不同模型的特征重要性不同)

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

* 是否过拟合
* 泛化能力
* 重要特征的可解释性
* 时间复杂度
四、优化

* 合适的线下验证,多个测试集,可以极高泛化能力
* catboost可以防止过拟合
* 特征剪枝
五、注

时序特征:

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

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

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

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

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

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

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

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

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

六.更新

特征选择重要时刻关注特征与结果直接的关系(画图),并进行添加特征,前期特征要求多,后期在进行特征选择。

模型角度,在应用比赛中,Adamboost,xgboost, random forest, extreeboost, lightgbm,LR,GBDT
这是常用的算法。模型融合效果要比单模型效果更好,可以使用stacking融合,简单的投票融合,rank排序融合等。融合的特点是:
不同的特征集(划分),不同的数据集(划分),不同的模型,不同的拼接方法或更加有利于分类的结果。

 

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信