日萌社
人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度學習實戰(不定時更新)
一 個性化電商廣告推薦系統介紹
1.1 數據集介紹
-
Ali_Display_Ad_Click是阿里巴巴提供的一個淘寶展示廣告點擊率預估數據集
數據集來源:天池競賽
-
原始樣本骨架raw_sample
淘寶網站中隨機抽樣了114萬用戶8天內的廣告展示/點擊日誌(2600萬條記錄),構成原始的樣本骨架。 字段說明如下:
- user_id:脫敏過的用戶ID;
- adgroup_id:脫敏過的廣告單元ID;
- time_stamp:時間戳;
- pid:資源位;
- noclk:爲1代表沒有點擊;爲0代表點擊;
- clk:爲0代表沒有點擊;爲1代表點擊;
用前面7天的做訓練樣本(20170506-20170512),用第8天的做測試樣本(20170513)
-
廣告基本信息表ad_feature
本數據集涵蓋了raw_sample中全部廣告的基本信息(約80萬條目)。字段說明如下:
- adgroup_id:脫敏過的廣告ID;
- cate_id:脫敏過的商品類目ID;
- campaign_id:脫敏過的廣告計劃ID;
- customer_id: 脫敏過的廣告主ID;
- brand_id:脫敏過的品牌ID;
- price: 寶貝的價格
其中一個廣告ID對應一個商品(寶貝),一個寶貝屬於一個類目,一個寶貝屬於一個品牌。
-
用戶基本信息表user_profile
本數據集涵蓋了raw_sample中全部用戶的基本信息(約100多萬用戶)。字段說明如下:
- userid:脫敏過的用戶ID;
- cms_segid:微羣ID;
- cms_group_id:cms_group_id;
- final_gender_code:性別 1:男,2:女;
- age_level:年齡層次; 1234
- pvalue_level:消費檔次,1:低檔,2:中檔,3:高檔;
- shopping_level:購物深度,1:淺層用戶,2:中度用戶,3:深度用戶
- occupation:是否大學生 ,1:是,0:否
- new_user_class_level:城市層級
-
用戶的行爲日誌behavior_log
本數據集涵蓋了raw_sample中全部用戶22天內的購物行爲(共七億條記錄)。字段說明如下:
user:脫敏過的用戶ID; time_stamp:時間戳; btag:行爲類型, 包括以下四種: 類型 | 說明 pv | 瀏覽 cart | 加入購物車 fav | 喜歡 buy | 購買 cate_id:脫敏過的商品類目id; brand_id: 脫敏過的品牌id; 這裏以user + time_stamp爲key,會有很多重複的記錄;這是因爲我們的不同的類型的行爲數據是不同部門記錄的,在打包到一起的時候,實際上會有小的偏差(即兩個一樣的time_stamp實際上是差異比較小的兩個時間)
1.2 項目效果展示
1.3 項目實現分析
-
主要包括
- 一份廣告點擊的樣本數據raw_sample.csv:體現的是用戶對不同位置廣告點擊、沒點擊的情況
- 一份廣告基本信息數據ad_feature.csv:體現的是每個廣告的類目(id)、品牌(id)、價格特徵
- 一份用戶基本信息數據user_profile.csv:體現的是用戶羣組、性別、年齡、消費購物檔次、所在城市級別等特徵
- 一份用戶行爲日誌數據behavior_log.csv:體現用戶對商品類目(id)、品牌(id)的瀏覽、加購物車、收藏、購買等信息
我們是在對非搜索類型的廣告進行點擊率預測和推薦(沒有搜索詞、沒有廣告的內容特徵信息)
- 推薦業務處理主要流程: 召回 ===> 排序 ===> 過濾
- 離線處理業務流
- raw_sample.csv ==> 歷史樣本數據
- ad_feature.csv ==> 廣告特徵數據
- user_profile.csv ==> 用戶特徵數據
- raw_sample.csv + ad_feature.csv + user_profile.csv ==> CTR點擊率預測模型
- behavior_log.csv ==> 評分數據 ==> user-cate/brand評分數據 ==> 協同過濾 ==> top-N cate/brand ==> 關聯廣告
- 協同過濾召回 ==> top-N cate/brand ==> 關聯對應的廣告完成召回
- 在線處理業務流
- 數據處理部分:
- 實時行爲日誌 ==> 實時特徵 ==> 緩存
- 實時行爲日誌 ==> 實時商品類別/品牌 ==> 實時廣告召回集 ==> 緩存
- 推薦任務部分:
- CTR點擊率預測模型 + 廣告/用戶特徵(緩存) + 對應的召回集(緩存) ==> 點擊率排序 ==> top-N 廣告推薦結果
- 數據處理部分:
- 離線處理業務流
- 涉及技術:Flume、Kafka、Spark-streming\HDFS、Spark SQL、Spark ML、Redis
- Flume:日誌數據收集
- Kafka:實時日誌數據處理隊列
- HDFS:存儲數據
- Spark SQL:離線處理
- Spark ML:模型訓練
- Redis:緩存
1.4 點擊率預測(CTR--Click-Through-Rate)概念
-
電商廣告推薦通常使用廣告點擊率(CTR--Click-Through-Rate)預測來實現
點擊率預測 VS 推薦算法
點擊率預測需要給出精準的點擊概率,比如廣告A點擊率0.5%、廣告B的點擊率0.12%等;而推薦算法很多時候只需要得出一個最優的次序A>B>C即可。
點擊率預測使用的算法通常是如邏輯迴歸(Logic Regression)這樣的機器學習算法,而推薦算法則是一些基於協同過濾推薦、基於內容的推薦等思想實現的算法
點擊率 VS 轉化率
點擊率預測是對每次廣告的點擊情況做出預測,可以判定這次爲點擊或不點擊,也可以給出點擊或不點擊的概率
轉化率指的是從狀態A進入到狀態B的概率,電商的轉化率通常是指到達網站後,進而有成交記錄的用戶比率,如用戶成交量/用戶訪問量
搜索和非搜索廣告點擊率預測的區別
搜索中有很強的搜索信號-“查詢詞(Query)”,查詢詞和廣告內容的匹配程度很大程度影響了點擊概率,搜索廣告的點擊率普遍較高
非搜索廣告(例如展示廣告,信息流廣告)的點擊率的計算很多就來源於用戶的興趣和廣告自身的特徵,以及上下文環境。通常好位置能達到百分之幾的點擊率。對於很多底部的廣告,點擊率非常低,常常是千分之幾,甚至更低