一、数据分析目的和问题定义
二、数据准备
数据预处理
处理缺失值:忽略;删除;补全(均值插补、同类均值插补、建模预测、高维映射、多重插补、极大似然估计、压缩感知和矩阵补全)
特征编码:适用于离散数据,且离散集合数少。数值化
- 特征数值化:映射成数字,适用于对数字也就是对距离不敏感的,只做逻辑上的分类用。
- one-hot编码:定类问题,本质是拆解维度成几类,所以就限定了被拆开的维度本身不能过多,不然又导致维度爆炸等其他问题。
数据归一化:数据标准化、距离中心化、比例归一化
方法 | 公式 | ||
---|---|---|---|
z-score标准化 | $x_i=\frac{x_i-\overline{X}}{S}$ | 空间正态分布,便于 | |
距离中心化 | $x_i=\frac{x_i-x_{min}}{x_{max}-x_{min}}$ | 同标准化,空间为正数 | |
比例归一化 | $x_i=\frac{x_i}{\sum_{k=1}^nx}$ |
使用的场景:当模型需要算距离或者梯度下降时,例如KNN,svm和聚类,单位对数值造成的影响不可忽略,就要使用归一化,而在树形模型(决策树,随机森林)中则不需要。
目的:消除量纲,便于梯度下降收敛。
特征选择:降维
意义:减轻维数灾难问题;降低学习任务的难度。
方法:PCA,LDA
处理离群点:异常值
- 离群点的定义:需要根据行业内的具体指标细分,例如电商行业的订单价格,如果品类是衣服的话客单价在一百元左右,但是单价从配饰几块钱到奢侈品几万块都有,都是真实有效的数据,所以真实性数据不必要去除,根据实际业务判定。
- 离群点检测方法:
(1)箱盒图:实验研究时经常使用,非常直观的展示出异常数据。
(2)散点图:研究X和Y的关系时,可直观展示查看是否有异常数据。
(3)描述分析:可通过最大最小值等各类指标大致判断数据是否有异常。
(4)缺失数字小于设定标准的数字大于设定标准的数字 大于3个标准差。
指标除了受行业“看不见的手”影响,还有宏观因素影响,比如房价,薪资,应用场景中,离群点通常很难筛选出,而且配判定为离群点的数据本身就包含着数据可能存在的问题,一些时候还可以作为发现问题而寻找的特征数据,所以如何处理离群点还要根据需求和分析目的。
三、模型选择和评估模型
方法
模型验证的方法:简单交叉验证,S折交叉验证,留一交叉验证
参数调优
超参数的选择:网格搜索,随机采样,遗传算法,贝叶斯优化,基于种群的训练
评估函数的选择:分类:Accuracy,Recall,F1,ROC,AUC,回归:MAE,MSE,EVS,$R^2$
评估方法:
交叉验证:可信度
学习曲线:
根据函数曲线分布特征,分析训练集和验证机的准确率,分析拟合度和偏差方差。
抽取特征
文本抽取,词袋模型,TF-IDF模型
preprocess
特征工程:过滤型,包裹型,嵌入型
L1正则
模型融合
from sklearn.ensemble import VotingClassifier # 多数表决
bagging
stacking:用各个分类器的结果去做特征,重新分类
随机森林:多数表决,bagging
adaboost:
GBDT:loss函数一阶可导,多棵树累加,boosting,基尼系数,在残差减小的梯度上建立模型,目的是消除残差。以CART树作为基学习器
最好的gradient boosting库:xgboost:loss函数二阶可导,优化推导公式。CART树,线性分类器
xgboost官网
1:RF与GBDT之间的区别
(1)相同点
都是由多棵树组成
最终的结果都是由多棵树一起决定
(2)不同点
组成随机森林的树可以分类树也可以是回归树,而GBDT只由回归树组成
组成随机森林的树可以并行生成,而GBDT是串行生成
随机森林的结果是多数表决表决的,而GBDT则是多棵树累加之和
随机森林对异常值不敏感,而GBDT对异常值比较敏感
随机森林是通过减少模型的方差来提高性能,而GBDT是减少模型的偏差来提高性能的
随机森林不需要进行数据预处理,即特征归一化。而GBDT则需要进行特征归一化
算法理解
- 对数几率函数 是一种sigmod函数:投射缩小值域,以便可以二分类
- LDA线性判别分析:减小一个维度,同时使类内间距最小化,类间间距最大化
- 决策树:信息熵越小,样本纯度越高;信息增益越大,说明纯度提升越大。
信息增益对属性可选值数成正比,信息增益比对属性可选值成反比
预剪枝:
后剪枝: - 神经网络
- SVM:高斯核,多项式核,线性核,拉普拉斯核,多项式核
核函数:扭曲空间,增加维度和降低纬度,为了找出可分的超平面 - 贝叶斯:极大似然估计
- 集成学习:
bagging:降低方差,并行,分类多数表决,回归取平均
boosting:降低偏差,串行,取平均数或者加权平均
stacking: - 聚类:组间相似度低,组内相似度高。
性能度量:JC指数,FM指数,RI指数,(值越大越好) - XGboost:一阶二阶展开,还支持线性分类,列抽样,支持并行,缩减速率,正则化防止过拟合
过拟合处理方法:
L2正则
交叉验证
Early stopping
Dropout
增加训练数据可以有限的避免过拟合
特征选择,减少特征数或使用较少的特征组合,对于按区间离散化的特征,增大划分的区间
Bagging ,将多个弱学习器Bagging 一下效果会好很多,比如随机森林等
L1和L2的区别
L1=lasso正则,L1可以让一部分特征的系数缩小到0,适用于有关联的情况。
L2=ridge正则,L2让所有特征的系数都缩小,但是不会减为0,它会使优化求解稳定快速,适用于无关联的情况。
Elastic Net弹性网络,总结了L1和L2的特点。
欠拟合处理方法:
增加新特征,可以考虑加入进特征组合、高次特征,来增大假设空间;
尝试非线性模型,比如核SVM 、决策树、DNN等模型;
如果有正则项可以较小正则项参数 $\lambda$;
Boosting ,Boosting 往往会有较小的 Bias,比如 Gradient Boosting 等。