zoukankan      html  css  js  c++  java
  • 机器学习中的特征工程 —— 七月在线总结

    (1)特征很关键,百度、阿里他们得模型效果那么好多半归功于特征工程
     
    数据与特征处理
         -数据选择/清洗/采样
         - 数值型/类别型/日期型/文本型特征处理
         - 组合特征处理
     
    特征选择
         - filter
         - wrapper
         - embedded
     

     
    (1)大多数人都在做什么?
         a. 跑数据,各种map-reduce,hive SQL,数据仓库搬砖
         b. 数据清洗、数据清洗、数据清洗
         c. 业务分析、分析case、找特征、找特征...
         d. 一招LR打天下... (有点夸张)
     
    百度:
         2周完成一次特征迭代,在有效的情况下AUC【ROC下面的面积】提升约3-5(千分之)
         1个月左右完成一个模型的小优化,有效情况下提升千分之5,但是比较困难
    阿里:
         挖掘业务场景挖得非常深,贴近业务产出了高效的特征
     
    特征迭代:把新造的、组合的、修正的特征加入,优化,这就是一次特征迭代
    特征工程 - 决定结果的上限
    model算法 - 多大程度的接近上限
    garbage in, garbage out
     
    数据采集

    (1)从业务角度(你要做什么建模)去思考哪些数据有帮助?(运营、策略、产品)—— 这是一个脑暴的过程【不局限于部门内部】
    (2)这些数据能够采集到吗?(产品、技术)
    (3)是否实时快捷,满足需求(技术)
     
    采集到的数据要格式化,确定存储格式,比如日期,以及单个动作记录/一天行为的聚合
     
    数据清洗

    去除脏数据
    数据清洗的思路:
         (1)简单的impossible 不应该有的值,这种是因为错误造成的,比如3米高的人
         (2)组合属性或者统计属性来判断
         (3)缺失过多的字段可以考虑不用
     
    数据采样

    正负样本不均衡,所以要采样 【随机采样、分层抽样】
         如果正>>负,而且量都很大,那么可以欠采样,也叫下采样
         如果正>>负,但是量不大:
              采集更多
              oversampling 过采样,一种方式是直接复制,一种方式是生成新的,smote算法
              修改损失函数,另一种方式就是修改权重
     
    特征处理

    对采集到的原始属性进行进一步的变化
     
    数值型:
         (1)scaling、归一化
         (2)对于一序列数值,可求其统计值,比如平均值,最大值,最小值,方差,标准差
         (3)离散化
                   cut  qcut  一种是值等距,一种是量等距
                   
    类别型:
         (1)独热变换 one-hot encoding  sk learn里有,哑变量 dummy variable  pandas里有
         绿红蓝
         [0, 1, 0]
         [1, 0, 0]
         每种可能由一个独立的变量表示,这样是有好处的,表达能力更强
         这种方法可能会导致数据变得非常稀疏。可以这样理解,对于每一个特征,如果它有m个可能值,那么经过独热编码后,就变成了m个二元特征。并且,这些特征互斥,每次只有一个激活。因此,数据会变成稀疏的。
    - 解决了分类器不好处理属性数据的问题
    - 在一定程度上也起到了扩充特征的作用
         (2)统计每个类别变量下各个target比例
         (3)Hash映射
                   比如性别、爱好,对于性别,可以映射成  [爱好1的比例,爱好2的比例...],实际上是将一个变量变成另一个变量的统计反应,另一个变量有多少可能,那么这个变量就有几维
     
    时间型:
         时间是很重要的属性、既可以看作连续值、又可以看作离散值
         (1)连续值
              持续时间、间隔时间
         (2)离散值
              哪个时间段、星期几、哪个星期、哪个月、等等
     
    统计型:
         (1)加减平均:商品价格高于平均价格多少,用户在某个品类下消费超过平均用户多少,用户连续登陆天数超过平均多少
         (2)分位线:商品属于售出商品价格的多少分位线处
         (3)次序:排位第几
         (4)比例:超过百分之多少
     
    组合特征:
         (1)简单拼接
         (2)用GBDT产生特征组合路径、然后将组合特征喝原始特征一起放进LR进行训练,这个最早facebook使用,后来多家互联网公司也在用
     
    逻辑型:
         (1)=
         (2)in
         (3)...
     
    特征选择

    过滤型:
         评估单个特征和结果之间得相关程度,排序留下topN相关特征
         pearson相关系数、互信息、距离相关度
         缺点,特征间关联作用,可能把有用关联特征误删除掉
     
         对于构建线性模型可以这样,不然这种方式不太好
     
    包裹型:
         特征子集的搜索过程,有多种,递归删除,增加
     
    嵌入型:
         针对模型来分析特征重要性
              用正则化来做特征选择,L1,L2,对于特征维度很大的情况,作L1, 对于特征维度很小的情况,作L2
              决策树、随机森林可以作为特征选择的一种方式
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    Java虚拟机JVM学习05 类加载器的父委托机制
    java 接口
    java 抽象类
    代码块(2)
    获取超额收益的思考
    HttpServer
    交易过程思考
    A股时间窗口
    redash学习记录
    MySQL学习记录
  • 原文地址:https://www.cnblogs.com/43726581Gavin/p/9043995.html
Copyright © 2011-2022 走看看