在这篇博客中,我打算整理《阿里云天池大赛赛题解析——机器学习篇》的相关理论,以及书中介绍的数据分析相关的小技巧。这本书涵盖了4道题:工业蒸汽量预测、天猫用户重复购买预测、O2O优惠券预测以及阿里云安全恶意程序检测。接下来我将逐一分析。
1. 工业蒸汽量预测
目标:这道题试图通过锅炉传感器采集的数据来预测产生的蒸汽量。
1.1 数据探索
1.1.1 变量分析
-
单变量分析:
-
双变量分析:
- 连续性与连续性
- 散点图
- 计算相关性:相关性系数
- 类别型与类别型
- 双向表
- 卡方检验
- 类别型与连续型
- 小提琴图:violin plot
- 连续性与连续性
1.1.2 缺失值的处理
- 删除
- 平均值、众数、中值
- 预测模型填充
1.1.3 异常值的处理
- 检测:箱线图、四分位数差(interquartile range, IQR)
- 处理:删除、转换、填充、区别对待
1.1.4 变量转换
- 对数变换:用于向右倾斜的分布,不能用于含零或负数的变量。
- 取平方根或立方根
- 变量分组
- 生成新变量
- 派生变量:从一个变量中的信息生成一个新的变量
- 哑变量:one-hot encoding
1.1.5 可视化数据分布
- 岭回归模型
- 直方图和Q-Q图:数据的分位数和正态分布的分位数对比参照图
- Kernel Density Estimation核密度估计
- 计算各个特征相关性系数->相关性热力图:
sns.heatmap()
- Box-cox变换
1.2 特征工程
1.2.1 特征处理:
- 标准化: \(x'=\frac{x-X.mean()}{S}\)
- 区间缩放法:\(x'=\frac{x-Min}{Max-Min}\)
- 归一化
- 定量特征二值化
- 定性特征哑编码
- 数据转换
- 多项式转换
- 指数转换
- 对数转换
1.2.2 特征降维
- 过滤法:按照散发性或相关性设定阈值选择特征
- 方差选择法:Variance Threshold
- SelectKBest: 相关系数法、卡方检验、最大信息系数法
- 递归消除特征法:RFE
- 包装法:根据目标函数选择若干特征
- 嵌入法:用算法或模型得到特征权值系数
- 基于模型的特征选择法:SelectFromModel
- 基于惩罚项的特征选择法
- 基于树模型的特征选择法
- 基于模型的特征选择法:SelectFromModel
- 线性降维
- 主成分分析法
- 线性判别分析法:Linear Discriminant Analysis, LDA
1.3 模型训练
- 决策树回归模型
- 集成学习回归模型
- 随机森林回归模型
- LightGBM回归模型
- 模型的泛化和正则化(Regularization)
- 泛化:模型在处理训练未遇到样本的表现
- 正则化:L1,L2,Lq 范数
- 岭回归和LASSO回归
- 岭回归:拟合曲线始终是曲线
- LASSO回归:拟合曲线会倾向于直线
- 模型评估
- 平均绝对值误差
- 均方误差
- 均方根误差
- R平方值
- 交差验证
1.4 模型融合
- Bagging方法和随机森林:从训练集中抽样得到每个基模型所需要的子训练集,再对预测结果进行综合。
- Boosting方法
- Adaboost算法
- 提升数
- 梯度提升树
- Voting
- 软投票:给予不同模型不同权重
- Averaging and Ranking
- Blending
- Stacking
回归模型:
- 岭回归
- Lasso回归
- ElasticNet回归
- SVR回归
- K近邻
模型融合Boosting方法:
- GBDT模型
- XGB(eXtreme Gradient Boosting)模型
- 随机森林模型
2. 天猫用户重复购买预测
目标:这道题试图通过用户特征预测复购率。
###2.1 数据探索
2.1.1 不均匀样本
- 随机欠采样
- 随机过采样
-
基于聚类的过采样
- 合成少数类过采样技术(SMOTE, Synthetic Minority Oversampling Technique)
- 基于数据清洗的SMOTE
2.1.2 常见的数据分布
- 伯努利分布
- 二项分布
- 泊松分布
- 正态分布指数分布
2.2 特征工程
2.2.1 文本表示模型
- 词袋模型
- N-gram模型
- 主题模型
- 词嵌入
2.2.2 特征提取
- 利用Countvector和TF-IDF提取特征
- Stacking特征工具包:使用lgb和xgb分类模型构造Stacking特征
2.3 模型训练
- 逻辑回归分类模型
- K近邻分类模型
- 高斯贝叶斯分类模型
- 决策树分类模型
- 集成学习分类模型
- Bagging
- Boosting
- Major Voting
- 随机森林
- LightGBM
- 极端随机树(Extra-Tree)
- 模型验证指标
- 准确度
- 查准率(Precision)和查全率(Recall)
- 对于验钞机来说:
- \[查准率=\frac{存起来的真钞}{存起来的真钞+存起来的假钞}\]
- \[查全率=\frac{存起来的真钞}{存起来的真钞+误拦住的真钞}\]
- 对于验钞机来说:
- F1值:查准律和查全率的加权调和平均
- ROC(Receiver Operating Characteristic)
- AUC曲线(Area Under the Curve)
3. O2O优惠券预测
目标:这道题试图通过2016年1月1号到6月30号的真实线上线下消费行为的数据预测2016年7月领取优惠券后15天内的使用情况。
本书介绍这道题的技术基本与前两题一致,在模型选择中增加XGboost模型。
4. 阿里云安全恶意程序检测
目标:这道题试图通过经过沙箱模拟运行后的API指令序列预测恶意文件类型,包括:感染型病毒、木马程序、挖矿程序、DDoS木马、勒索病毒等。
- pivot特征建构
- 内存优化技巧
- float64->float16
- numpy替换pandas
- 开源工具包
- Dask from Github:多核CPU并行处理
- Numba