数据挖掘比赛小结

第一步:识别问题

  • 回归
  • 分类(二分类,多分类,多标签)
  • 排序
  • 混合体(分类+回归)

第二步:探索数据

1.描述性统计

  • shape:查看数据的形状
  • head:查看数据本身
  • info:简单描述,总行数,空值或者数据类型
  • value_counts:分类的时候用得多,查看类别的个数
  • describe:简单的描述性表述,最大值,最小值,平均值等
  • corr(method = 'pearson'):查看列之间的相关性
  • skew:通过分析数据的高斯分布来确认数据的偏离情况

2.可视化

  • 绘制每个属性的直方图,一般横轴表示数据类型,纵轴表示分布情况

3.步骤

①读取并分析数据质量

②探索性分析每个变量

  • 变量是什么类型
  • 变量是否有缺失值
  • 变量是否有异常值
  • 变量是否有重复值
  • 变量是否均匀
  • 变量是否需要转换

③探索性分析变量与target标签的关系

  • 变量与标签是否存在相关性
  • 变量与标签是否存在业务逻辑

④变量与标签是否存在业务逻辑

  • 连续型变量与连续型变量
  • 离散变量与离散变量
  • 检查变量之间的正态性

⑤结论

  • 变量是否需要筛选,替换和清洗
  • 变量是否需要转换
  • 变量之间是否需要交叉
  • 变量是否需要采样

第三步:数据预处理:数据清洗,数据集成,数据规约和数据变换

1.数据清洗

①八大场景

  • 删除多列
  • 更改数据类型
  • 将分类变量转换成数字变量
  • 检查缺失数据(一般为nan)
  • 删除列中的字符串
  • 删除列中的空格
  • 用字符串连接两列(带条件)
  • 转换时间戳(从字符串到日期时间格式)

②缺失值处理

  • 删除变量:缺失率大于80%
  • 定值填充:常用-9999替代
  • 统计量填充:数据符合均匀分布时用均值填补,倾斜分布时用中位数填补
  • 模型填充:随机森林

③异常值处理

  • 根据数量和影响,考虑是否删除
  • log变换
  • 平均值或中位数替代
  • 树模型对异常值鲁棒性较好,不影响模型训练效果

④噪声处理

  • 对数据进行分箱操作,等频或等宽分箱,然后用每个箱的平均数,中位数或者边界值(不同的分布,处理方法不同)代替箱中的所有的数,起到平滑数据的作用
  • 建立该变量和预测变量的回归模型,根据回归系数和预测变量,反解出自变量的近似值

⑤步骤

  • 数据获取:使用read_csv或者read_excel
  • 数据探索:使用shape,describe或者info
  • 行列操作:使用loc或者iloc函数
  • 数据整合:对不同数据源进行整理
  • 数据类型转换:对不同字段数据类型进行转换
  • 分组汇总:对数据进行各个维度的计算
  • 处理重复值,缺失值和异常值以及数据离散化

⑥脏数据问题小结

  • 数据缺失:属性值为空
  • 数据噪声:数据值不合常理
  • 数据不一致:数据前后存在矛盾
  • 数据冗余:数据量或者属性数目超出数据分析需要
  • 离群点/异常值:偏离大部分值的数据
  • 数据重复:在数据集中出现多次的数据
  • 数据矛盾:对客观事实的不同维度的描述存在差异
  • 数据错误:格式错误,范围错误,包含特殊字符,包含ASCII码的数据等其他不可识别的数据

2.数据集成

将多个数据源中的数据结合成,存放在一个一致的数据存储中

3.数据规约

①维度规约

  • 单变量重要性
  • pearson相关系数和卡方检验,分析目标变量和单变量的相关性
  • 回归系数:训练线性回归或逻辑回归,提取每个变量的表决系数,进行重要性排序
  • 树模型的gini指数
  • lasso正则化:训练回归模型时加入L1正则化参数,将特征向量稀疏化

②维度变化

  • PCA
  • SVD

4.数据变换

①规范化处理

  • 最大最小规范化:将数据映射到[0,1]区间
  • z-score标准化:处理后数据均值为0,方差为1
  • log变换:时间序列数据中,数据量级相差较大的变量

②离散化处理

③稀疏化处理

5.数据处理方法

  • 对数变换loglp
  • 标准缩放standardscaler
  • 转换数据类型astype
  • 独立编码onehotencoder或者pd.get_dummies
  • 标签编码labelencoder
  • 修复偏斜特征boxcoxlp

第四步:构造提取特征

1.类别特征:特征值是离散的变量的特征

①1维编码(有1维的内在顺序)

  • e.g 衣服:大,中,小

②高维编码(有高维的内在顺序)

  • e.g 国家首都:CH,US
  • 可以通过算法向量化,也可以通过人工向量化

③one-hot编码(无内在顺序,且类别数较少)

④count编码(统计类别出现频率)

  • ps:未引入标签信息

⑤target编码

  • ps:引入了标签信息,本质上stacking的弱化版本,需要引入交叉验证防止data leak

⑥stacking编码

  • ps:引入了标签信息,通过模型算法进行编码,需要引入交叉验证防止data leak

2.数值特征

  • 统计特征:均值,最值,中位数,方差,偏度,峰度
  • 交叉特征:数值与数值,组合成新的数值特征

3.连续特征

①分箱

  • ps:连续特征离散化,起到防止过拟合的引入非线性作用

②归一化和标准化

  • ps:深度学习需要,树模型不需要

4.时间序列

  • 一般范式:主体+窗口+函数
  • 函数一般是一些统计相关的函数,如min,max,mean,medium,std,peak数量,指数平均,lag,加权平均,增长/下降率,时序L2范数

5.多值特征

  • 一个特征对应多个值
  • e.g 汽车的温度指标,统计,10 ~ 20度出现次数,20 ~ 30度出现次数
  • 多值特征 → 直方图特征
  • 直方图特征 → 分布差距特征
  • 分布差距 → 各种散度特征

6.时间特征

  • 周几,月份
  • 季节
  • 一年的第几天
  • 一年的第几周
  • 时间差
  • 月末

7.特征组合

  • 低阶特征组合:特征+特征
  • 高阶特征组合:主要适合CTR预估类的比赛

第五步:特征选择

1.filter

  • 方差选择法:计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征
  • 相关系数法:计算各个特征对目标值的相关系数以及相关系数的P值
  • 卡方检验:检验定性自变量对定性因变量的相关性
  • 互信息法

2.wrapper

  • 递归特征消除法:使用一个基模型来进行多轮训练,每轮训练后,消除若干权值系数的特征,再基于新的特征集进行下一轮训练

3.embedded

  • 基于惩罚项的特征选择法:除了筛选出特征外,同时进行了降维
  • 基于树模型的特征选择法

第六步:构建模型

scikit-learn建模三部曲

  1. 实例化,建立评估模型对象
  2. 通过模型接口训练模型
  3. 通过模型接口提取需要的信息

第七步:模型训练

1.数据集按照使用用途可以划分为:

  • 训练集:进行模型训练与参数更新
  • 验证集:进行模型验证与参数选择
  • 测试集:进行验证模型精度

2.模型根据训练阶段分为过拟合和欠拟合

  • 过拟合无法避免,只能缓解

缓解过拟合的方法:

  • 增加数据量(数据扩增)
  • 做正则化(L1或L2)
  • 做交叉验证(early stopping)
  • 增加随机性(dropout,样本采样)

3.数据划分(模型评估)方法

  • 留出法(Hold-out)
  • K折交叉验证(K-fold CV)
  • 自助采样(Bootstrap)

第八步:模型融合

1.bagging:随机森林

bagging就是采用有放回的方式进行抽样,用抽样的样本建立子模型,对子模型进行训练,这个过程重复多次,最后进行融合。

大概分为两步:

①重复K次

  • 有放回地重复抽样建模
  • 训练子模型

②模型融合

  • 分类问题:voting
  • 回归问题:average

2.boosting:adaboost,gbdt,xgboost,lightgbm,catboost

  • boosting的思想是一种迭代的方法,每一次训练的时候都更加关心分类错误的样例,给这些分类错误的样例增加更大的权重,下一次迭代的目标就是能够更容易辨别出上一轮分类错误的样例,最终将这些弱分类器进行加权相加

3.stacking

  • stacking背后的思想是使用大量基分类器,然后使用另一重分类器来融合它们的预测结果,旨在降低泛化误差
  • stacking算法分为2层,第一层是用不同的算法形成n个基础分类器,同时产生一个与原数据集大小相同的新数据集,利用这个新数据集和一个新算法构成第二层的分类器。在训练第二层分类器时采用各基础分类器的输出作为输入,第二层分类器的作用就是对基础分类器的输出进行集成
  • 由于stacking模型复杂度过高,比较容易造成过拟合

4.blending

  • blending主要是用不相交的数据训练不同的基础模型,将它们的输出取(加权)平均
  • blending分为uniform blending和linear blending,前者在分类时使用一人一票的投票方式,回归时采用多个模型的平均值,后者是二次学习,使用线性模型将第一步中学习到的学习器的输出结果组合起来,相当于简化版的stacking

第九步:模型评估

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值