BAT机器学习特征工程工作经验总结(一)如何解决数据不平衡问题(附python代码)

很多人其实非常好奇BAT里机器学习算法工程师平时工作内容是怎样?其实大部分人都是在跑数据,各种map-reduce,hive SQL,数据仓库搬砖,数据清洗、数据清洗、数据清洗,业务分析、分析case、找特征、找特征…而复杂的模型都是极少数的数据科学家在做。例如在阿里,算法工程师要挖掘业务场景,根据业务找出高效的特征,2周内可以完成一次特征迭代,一个月左右可以完成模型的小优化,来提升auc。因此特征很关键,腾讯、阿里他们得模型效果那么好多半归功于特征工程。

特征迭代的意思是把新造的、组合的、修正的特征加入模型中并且优化结果,这就是一次特征迭代。

工作中特征工程的流程一般是以下几点:

1. 数据采集
2. 数据清洗
3. 数据采样
4. 特征处理
5. 特征选择

而这篇总结核心主要在特征处理和特征选择上,特别是特征处理,除了对不同类型特征进行数据处理外,还有如何找到和构建组合特征。


数据采集
数据采集前需要明确采集哪些数据,一般的思路为:哪些数据对最后的结果预测有帮助?数据我们能够采集到吗?线上实时计算的时候获取是否快捷?

比如我要给用户做商品推荐,那我需要采集什么信息呢?
-店家:店铺的评分、店铺类别……
-商品:商品评分、购买人数、颜色、材质、领子形状……
-用户:历史信息(购买商品的最低价最高价)、消费能力、商品停留时间……


数据清洗
数据清洗在工作中也是很重要一步。数据清洗就是要去除脏数据。

那么如何判定脏数据呢?

  1. 简单属性判定:一个人身高3米+的人;一个人一个月买了10w的发卡。
  2. 组合或统计属性判定:号称在米国却ip一直都是大陆的新闻阅读用户?你要判定一个人是否会买篮球鞋,样本中女性用户85%?
  3. 补齐可对应的缺省值:不可信的样本丢掉,缺省值极多的字段考虑不用。

数据采样
采集、清洗过数据以后,正负样本是不均衡的,要进行数据采样。

既然总体中样本比例过低,很自然的思路就是从总体中重新抽样,提高建模样本中正样本的比例。

所谓正样本(positive samples)、负样本(negative samples),对于某一环境下的人脸识别应用来说,比如教室中学生的人脸识别,则教室的墙壁,窗户,身体,衣服等等便属于负样本的范畴。

过采样和欠采样是比较常用的方法,前者是增加正样本的数量,后者是减少负样本的数量。如果总体中正样本的绝对数量过少,可以将所有正样本全部纳入,再抽取部分负样本构建建模样本,这种思路其实就是过采样和欠采样的结合。

如果正样本量都很大,那么可以欠采样,也叫下采样
如果正样本数量不大就用采集更多的方法,比如

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值