線下模型的數據清洗建模

一、清洗流程:

目的:爲離線訓練準備標註數據,清洗不合法的數據。

數據源我們採用:曝光、點擊、下單

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表結構。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章