人工智能与数据挖掘比赛流程:赛题分析、特征工程、模型选择、模型优化、评估
一、赛题分析:
训练集,测试集,数据总量,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排序融合等。融合的特点是:不同的特征集(划分),不同的数据集(划分),不同的模型,不同的拼接方法或更加有利于分类的结果。