一 什么是特征工程
特征是指数据中抽取出来的对结果预测有用的信息
特征工程是使用专业背景和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。
特征工程的意义:1.更好的特征意味着更强的灵活性 2更好的特征意味着只需要简单模型 3更好的特征意味着更好的结果
应用机器学习的主要工作就是特征工程
数据和特征决定了算法能达到的上限,算法和模型的选择只是无限接近这个上限
如何特征十分清晰、易辨别,可能不需要神经网络这样复杂的算法,只需要常见的机器学习算法就能达到很好的结果
二 特征工程在实际工作中的作用
工作中可能70%的时间处理数据,30%的时间建模、模型状态评估、ensemble。
算法、模型的研究是一些算法专家、专业人员在做
大部分人的工作:
1. 跑数据,各种map-reduce, hive sql,数据库搬砖
2. 数据清洗,数据清洗,数据清洗…
3.业务分析,分析case, 找特征,找特征…
4. 一招LR打天下 (一般机器学习部分都有一个LR作为baseline, 可控; svm在小的数据集上效果很好,但很大的数据,例如电商每天数据很大,不太实用svm)
工业界的特征工程有多大作用呢?
例如某搜索引擎,广告部门,2周内可以完成一次特征迭代,有效的情况下AUC提升3-5%; 而一个月左右完成模型的小优化,有效的情况下AUC提升5%
贴近业务场景进行特征分析可能比算法的优化更有效
三 特征工程的重要环节
1. 数据采集
考虑哪些数据有用;
埋点,数据打标签
2 数据格式化
确定存储格式,例如时间格式
大多数情况下,需要关联非常多的hive表和集群文件
3. 数据清洗(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,例如增加量大的样本的惩罚权重
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/9350.html