【A】python数据分析与机器学习实战 机器学习模型特征工程

版权声明:转载请声名出处,谢谢 https://blog.csdn.net/u010591976/article/details/82491170

一、什么是特征工程

  • 本质上来说,呈现给算法的数据应该能拥有基本数据的相关结构或属性。当你做特征工程时,其实是将数据属性转换为数据特征的过程,属性代表了数据的所有维度,在数据建模时,如果对原始数据的所有属性进行学习,并不能很好的找到数据的潜在趋势,而通过特征工程对你的数据进行预处理的话,你的算法模型能够减少受到噪声的干扰,这样能够更好的找出趋势。事实上,好的特征甚至能够帮你实现使用简单的模型达到很好的效果。

  • 但是对于特征工程中引用的新特征,需要验证它确实提高的预测的准确度,而不是加入了一个无用的特征,不然只会增加算法运算的复杂度。
    思考:从数据中提取出来的特征是否是相互独立的?如何提取好的特征?

特征工程的具体过程则由以下四点决定:
1、评估模型优劣的方法、指标是什么?(RMSE还是AUC等)
2、要解决的问题属于分类问题还是回归问题..
3、具体使用的模型是什么?(决策树、svm还是什么)
4、原始数据的形态?是否抽样、是否为结构化数据?是否进行了数据清理等

二 特征工程在实际工作中的作用

工作中可能70%的时间处理数据,30%的时间建模、模型状态评估、ensemble。算法、模型的研究是一些科学家在做,工程师的工作:

 1. 跑数据,各种map-reduce, hive sql,数据库搬砖

 2. 数据清洗,数据清洗,数据清洗...

 3.业务分析,分析case, 找特征,找特征...

 4. 一招LR打天下   (一般机器学习部分都有一个LR作为baseline, 可控; svm在小的数据集上效果很好,但很大的数据,例如电商每天数据很大,不太实用svm)

三 特征工程的重要环节

  1. 数据采集

    考虑哪些数据有用;

    埋点,数据打标签

  2. 数据格式化

    确定存储格式,例如时间格式

    大多数情况下,需要关联非常多的hive表和集群文件

    1. 数据清洗(data cleaning)

    garbage in, garbage out

    算法大多数情况下就是一个加工机器,最后的产品往往取决于原材料的好坏。 所以理解业务更加透彻、数据清洗对结果影响很大

    主要是去除脏数据

    1. 错误数据,例如人身高5m,这样的数据无论是否真实,对模型训练不利

    2. 组合或统计属性判定 例如购买篮球鞋的人应该男生占多数才对

    3. 补齐可对应的缺省值 不可信的样本丢掉,缺省极多的字段考虑不用

    4. 数据采样

      1.很多情况下,正负样本是不均衡的,例如电商的用户点击/买过的商品和没有行为的商品

      2.大多数模型对正负样本比是敏感的 比如LR,如果有99个正样本,1个负样本,那预测时全部预测正,准确率也可以达到99%,这不能反映模型的好坏

      正负样本不平衡的处理方法:

      1. 正负样本量很大,一类样本数量 >> 另一类样本数量, 采用下采样,即对偏多的数据进行采样,使两类样本数量达到一定比例,例如1:1, 3:2等

      2. 正负样本量不大, 一类样本数量>>另一类样本,

        1)采集更多的数据
        
        2)oversampling,即硬生生的增加量少的一方的样本,比如增加几倍的量少的样本(或简单处理量少的数据,例如图像识别中的镜像、旋转),容易过拟合
        
        3)修改loss function,例如增加量大的样本的惩罚权重
        

猜你喜欢

转载自blog.csdn.net/u010591976/article/details/82491170