线下模型的数据清洗建模

来源:互联网 发布:淘宝阿里旺旺打不开 编辑:程序博客网 时间:2024/04/30 04:59

一、清洗流程:

目的:为离线训练准备标注数据,清洗不合法的数据。

数据源我们采用:曝光、点击、下单

1.序列化

曝光、点击、下单从Hive表中读取,采用schema可以直接根据日志名字来读取字段在家或减少的影响;

曝光日志:存储了用户一次行为的详细信息,包括:包括城市、地理位置、筛选条件及一些行为特征;点击日志主要记录了用户点击的POIID、点击时间;下单日志记录了用户下单的POIID、下单时间和下单的金额。数据清洗模块根据配置文件从数据源中抽取需要的字段,进行序列化(Serialization)之后存储在HDFS上。(相当于 订单宽表)

序列化的过程中,如果日志字段不合法或者单一用户曝光、点击或下单超出设定的阈值,相关日志都会被清洗掉,避免数据对模型训练造成影响。


2.数据标注

数据序列化之后在HDFS上保存三份文本文件,分别是曝光(Impression)、点击(Click)和下单(Order)。

数据标注模块根据globalid(一次搜索的全局唯一标示,类似于sessionid)和相应的团购idkey,将曝光、点击和下单关联起来,最终生成一份标注好是否被点击、下单、支付的标注数据。同时这份标注数据携带了本次展现的详细特征信息。

2.1)标注过程:数据标注通过一次Map/Reduce来完成。

Reduce阶段:Reduce接收的keyglobal id, values为具有相同global id的曝光、点击、下单数据List,遍历该List,如果

日志类型为曝光日志,则标记该globalid对应的曝光日志存在(imp_exist=true)。

日志类型为点击日志,则将曝光日志的clicked字段置为1

日志类型为下单日志,则将曝光日志的ordered字段置为1

日志类型为下单日志,如果pay_account字段>0则将曝光日志的paid字段置为1

遍历List之后,如果imp_exist == true,则将标注好的数据写入HDFS否则丢弃。


二、基础特征按来源可分为三部分:

1Hive表:有一些基础特征存储在Hive标注,如POI的名字、品类、团购数等。

2、离线计算:一些特征需要积累一段时间才能统计,如POI的点击率、销量等,这部分通过积累历史数据,然后经过Map/Reduce处理得到。

3HDFS:特征矩阵可能融合第三方服务的特征,一般第三方服务将产生的特征按照约定的格式存储在HDFS上。

数据源统一格式为: poiid/dealid/bizareaid '\t' name1:value1'\t' name2:value2...

特征合并模块,将所有来源合并为一个大文件,通过feature conf配置的特征和特征顺序,将特征序列化,然后写入Hive表。

特征监控模块每天监控特征的分布等是否异常。特征矩阵的特征每日更新。

添加新的特征来源,只需要按照约定的格式生成数据源,配置路径,可自动添加。

添加新特征,在feature conf文件末尾添加相应的特征名,特征名字和数据源中的特征name保持一致,最后修改相应的特征Hive表结构。


0 0
原创粉丝点击