线下模型的数据清洗建模
来源:互联网 发布:淘宝阿里旺旺打不开 编辑:程序博客网 时间:2024/04/30 04:59
一、清洗流程:
目的:为离线训练准备标注数据,清洗不合法的数据。
数据源我们采用:曝光、点击、下单
1.序列化
曝光、点击、下单从Hive表中读取,采用schema可以直接根据日志名字来读取字段在家或减少的影响;
曝光日志:存储了用户一次行为的详细信息,包括:包括城市、地理位置、筛选条件及一些行为特征;点击日志主要记录了用户点击的POIID、点击时间;下单日志记录了用户下单的POIID、下单时间和下单的金额。数据清洗模块根据配置文件从数据源中抽取需要的字段,进行序列化(Serialization)之后存储在HDFS上。(相当于 订单宽表)
序列化的过程中,如果日志字段不合法或者单一用户曝光、点击或下单超出设定的阈值,相关日志都会被清洗掉,避免数据对模型训练造成影响。
2.数据标注
数据序列化之后在HDFS上保存三份文本文件,分别是曝光(Impression)、点击(Click)和下单(Order)。
数据标注模块根据globalid(一次搜索的全局唯一标示,类似于sessionid)和相应的团购id为key,将曝光、点击和下单关联起来,最终生成一份标注好是否被点击、下单、支付的标注数据。同时这份标注数据携带了本次展现的详细特征信息。
2.1)标注过程:数据标注通过一次Map/Reduce来完成。
Reduce阶段:Reduce接收的key为global id, values为具有相同global id的曝光、点击、下单数据List,遍历该List,如果
日志类型为曝光日志,则标记该globalid对应的曝光日志存在(imp_exist=true)。
日志类型为点击日志,则将曝光日志的clicked字段置为1。
日志类型为下单日志,则将曝光日志的ordered字段置为1。
日志类型为下单日志,如果pay_account字段>0,则将曝光日志的paid字段置为1。
遍历List之后,如果imp_exist == true,则将标注好的数据写入HDFS,否则丢弃。
二、基础特征按来源可分为三部分:
1、Hive表:有一些基础特征存储在Hive标注,如POI的名字、品类、团购数等。
2、离线计算:一些特征需要积累一段时间才能统计,如POI的点击率、销量等,这部分通过积累历史数据,然后经过Map/Reduce处理得到。
3、HDFS:特征矩阵可能融合第三方服务的特征,一般第三方服务将产生的特征按照约定的格式存储在HDFS上。
数据源统一格式为: poiid/dealid/bizareaid '\t' name1:value1'\t' name2:value2...
特征合并模块,将所有来源合并为一个大文件,通过feature conf配置的特征和特征顺序,将特征序列化,然后写入Hive表。
特征监控模块每天监控特征的分布等是否异常。特征矩阵的特征每日更新。
添加新的特征来源,只需要按照约定的格式生成数据源,配置路径,可自动添加。
添加新特征,在feature conf文件末尾添加相应的特征名,特征名字和数据源中的特征name保持一致,最后修改相应的特征Hive表结构。
- 线下模型的数据清洗建模
- 数据清洗的要素
- R的数据清洗
- 数据清洗的一些梳理
- 数据清洗的一些梳理
- pandas做数据的清洗
- 关于数据清洗的梳理
- 申请评分卡模型的构建(一)——数据清洗
- 数据建模,ODS模型分析
- 数据清洗
- 数据清洗
- 数据清洗
- 数据清洗
- 数据清洗
- 数据清洗
- 数据清洗
- 数据清洗
- R语言数据清洗与规整-回归模型为例
- [Android] Button 文字被截断解决方案
- JavaScript对数组的操作
- 【BZOJ1188】分裂游戏,博弈
- Spring IOC使用(3) 基于注解管理bean
- 字符串循环左移
- 线下模型的数据清洗建模
- Selenium学习11--精确比较网页截图图片
- ubuntu下解决sublime支持中文输入
- 为任意可滑动的View添加快速滑动,是的,任意。
- android屏幕适配理解及常见单位
- 进程间通信笔记(7)—SystemV信号量
- web.xml 常用标签
- 【NOIP提高组】Map
- php下载(文档,压缩包)