特征使用方案
- 基于业务理解,尽可能找出对因变量有影响的所有自变量
- 并根据获取难度、覆盖率、准确率对特征进行可用性评估
特征获取
- 如何获取这些特征
- 如何存储
特征清洗
- 清洗异常特征
- 进行采样,如果数据不均衡,可以使用上采样或下采样保证数据均衡
- 将少的数据给予大的权重,以模型能够着重考虑少的数据
- 把多数据分为多类与少数据组成多组数据均衡的数据,分别训练多个弱分类器,然后bagging进行融合,分类的话通过vote投票取准确率高的模型,回归的话通过avg返回平均值
数据预处理工具
- Pandas
- HiveSQL
- SparkSQL
数据预处理
- 处理缺失值 - 中位数 或 0
- 数据变换 - log 或 指数
- 降维 - PCA 或 LDA
特征处理 feture_extraction(特征抽取) preprocessing(预处理)
- 数值型
- 归一化
- 离散化 - 对数据分段 - 对连续值设置阈值进行离散分类
- 类别型
- 独热编码
- 二进制编码
- 哑变量
- 时间类
- 间隔型 - 离某个节日差多久 - 这一周内登陆的次数
- 组合型 -
- 离散型 - 把一天的时间切割两段 饭点和非饭点
- 文本型
- n-gram
- bag of words - 出现了哪些词
- TF-IDF - 出现了哪些词,它的权重多大
- 统计型 - 和业务场景非常接近的
- 组合特征 - 对不同的域做一个组合
特征选择 feture_selection (特征选择)
- Filter - 过滤型
- 思路:这个特征和结果的相关度
- 相关系数
- 卡方检验
- 信息增益 互信息
- Wrapper - 包裹型
- 思路:通过目标函数来决定是否加入一个变量
- RFE 对特征的重要度进行排序 并踢掉不重要的特征
- 迭代:产生特征子集,评价:1.完全搜索2.启发式搜索3.随机搜索(GA,SA)
- Embedded - 嵌入型
- 思路:基于模型做特征选择
- 正则化 - L1(lasso) L2(Ridge)
- 决策树 - 熵 / 信息增益
- 深度学习
模型选择 model_selection
- 交叉验证
模型超参数选择 grid_search
- 多组参数进行选择
- 多种算法进行选择
模型状态评估
- 过拟合
- 欠拟合
- 学习曲线
模型融合
通过好几个不错的模型共同的结果判定最后的结果
- 群众的力量是伟大的,集体智慧是惊人的
- Bagging 最简单最常见的 (内部取样本是有放回的)
- 不用全部的数据集,每次取一个子集 都使用相同算法训练一个模型,最后分类问题用这些模型的结果做vote,回归问题对这些模型的结果取avg
- 不用全部的数据集,每次取一个子集 都使用不同算法训练一个模型,最后分类问题用这些模型的结果做vote,回归问题对这些模型的结果取avg
- Random forest 随机森林
- Bagging 最简单最常见的 (内部取样本是有放回的)
- 站在巨人的肩膀上,能看的更远
- 模型 stacking
- 用多种predictor结果作为特征训练
- 把各个模型输出结果当作输入,构建最后一个分类器产生输出
- 如果最后的分类器为linear线性的,也就等价于把多个结果进行加权平均
- 如果最后的分类器为majority,也就等价于把多个结果进行vote投票选择
- 弱化的stacking - blending
- 模型 stacking
- 一万小时定律 Boosting
- Adaboost
- 重复迭代和训练 - 还不够努力需要多次学习
- 每次给分错的样本分配更高的权重 - 要多做之前做错的题
- 最简单的分类器叠加 - 脚踏实地,通过最简单的知识积累即使不聪明也可以称为专家
- GBT - Gradient Boosting Tree 逐步增强树
- XGboost
- Adaboost