京東算法大賽-高潛用戶購買意向預測(一) 資料整理

    初學者可以參考daoliker提供的資料:https://github.com/daoliker/JData,這是一位熱心的參賽者提供的一份入門程序,涵蓋了數據清洗、數據(統計)分析、特徵抽取、搭建模型、模型評估,這些機器學習通用的完整流程,對於初學者來說可以作爲參考。

    上面的連接中有相關的說明,如:

data_cleaning.ipynb       數據清洗
data_analysis.ipynb         數據分析
exlpore_potential_user.ipynb 探索高潛用戶行爲

其他都是.py的python文件,無需額外說明,上面這幾個.ipynb是可導入jupyter notebook的文件,如果沒有安裝的話需要先安裝jupyter notebook,然後upload上面幾個文件即可。


一 基礎數據介紹:

官網上其實已經有了描述,這裏爲了方便查看,再次列出:

1. 用戶數據 - JData_User.csv
 user_id 用戶ID 脫敏
 age 年齡段 -1表示未知
 sex 性別 0表示男,1表示女,2表示保密
 user_lv_cd 用戶等級有順序的級別枚舉,越高級別數字越大
 user_reg_tm 用戶註冊日期粒度到天

 2. 商品數據 - JData_Product.csv
 sku_id 商品編號 脫敏
 a1 屬性1 枚舉,-1表示未知
 a2 屬性2 枚舉,-1表示未知
 a3 屬性3 枚舉,-1表示未知
 cate 品類ID 脫敏
 brand 品牌ID 脫敏

3. 評價數據 - JData_Comment.csv
 dt 截止到時間 粒度到天
 sku_id 商品編號 脫敏
 comment_num 累計評論數分段0表示無評論,1表示有1條評論,
 2表示有2-10條評論,
 3表示有11-50條評論,
 4表示大於50條評論
 has_bad_comment 是否有差評0表示無,1表示有
 bad_comment_rate 差評率差評數佔總評論數的比重

4. 行爲數據 - JData_Action_201602.csv,JData_Action_201604.csv,JData_Action_201603.csv
 user_id 用戶編號 脫敏
 sku_id 商品編號 脫敏
 time 行爲時間  
 model_id 點擊模塊編號,如果是點擊脫敏
 type 1.瀏覽(指瀏覽商品詳情頁); 2.加入購物車;3.購物車刪除;4.下單;5.關注;6.點擊
 
 cate 品類ID 脫敏
 brand 品牌ID 脫敏


二 任務描述:
參賽者需要使用京東多個品類下商品的歷史銷售數據,構建算法模型,預測用戶在未來5天內,對某個目標品類下商品的購買意向。對於訓練集中出現的每一個用戶,參賽者的模型需要預測該用戶在未來5天內是否購買目標品類下的商品以及所購買商品的SKU_ID。評測算法將針對參賽者提交的預測結果,計算加權得分。

三 https://github.com/daoliker/JData程序詳解

這裏對這位作者的程序進行一下簡單解析,可供初學者參考,因爲是自己的理解,可能有不當之處,歡迎大家批評指出。

3.1 數據清洗 data_cleaning.ipynb

數據與程序在相同目錄,/data文件夾下,如下圖,比大賽提供的數據多了JData_Action_201603_extra.csv【作者在git中已經說明,這個是前面一版的數據,從代碼中刪除這個文件相關的代碼即可】,JData_User_New.csv,user_table.csv,item_table.csv四個文件,這是其他程序生成的。其中,item_table.csv由create_item_table.py生成,user_table.csv由create_user_table.py生成;JData_User_New.csv由explore_data.py生成。

文件執行順序:

1、 生成缺失的三個文件,這一步的目的,是把文件中的數據按照商品和用戶兩個維度進行聚合

執行順序:

python create_item_table.py

python explore_data.py 

python create_user_table.py

執行時間較長,但完成後,可以在data/目錄下看到新生成的三個文件,注意檢驗數據條數是否一致


2、缺失文件生成完成後,就可以進行數據清洗和分析了

(2-1)數據分析

進入到我們下載上面程序的目錄,在這個目錄下啓動jupyter notebook:

直接點擊data_analysis.ipynb查看即可,這裏是在notebook中通過pandas,numpy和matplotlib查看數據的統計特徵,進行初步分析


(2-2)數據清洗

查看data_cleaning.ipynb,這裏面有原作者的詳細描述,介紹了一種數據清洗方法,大家可以在這裏改爲自己的清洗策略


3、高潛用戶行爲分析,查看explore_potential_user.ipynb即可,這裏是原作者對高潛用戶的一些定義,大家可以根據自己的理解修改或調整閾值


4、挖掘過程和結果:

python potential_user.py


簡要說明:

find_buy_user函數,查找2,3,4月有購買行爲的用戶記錄(type=4,已去重),保留"user_id", "sku_id"字段,含義分別爲用戶id,商品id,結果數據存儲到了buy_user_list.csv

find_potential_user,查找潛在用戶,使用策略爲:先讀取buy_user_list.csv,取出有購買行爲的用戶;然後通過ui_record_in_batch_data方法,拿到用戶的行爲序列(不只是購買行爲);more_than_a_day方法:最後購買日期:行爲序列中,購買類型行爲的最後日期(last_buy_day);最早行爲日期(earliest_behave_day):對某商品有瀏覽等行爲的最早日期,這裏對用戶的意向打了一個標籤,當last_buy_day>earliest_behave_day時,則標記potential_flag 爲1;否則標記爲0

意義:這裏標籤的定義方式爲,如果用戶對某個商品,有從瀏覽,到最終購買的行爲鏈條,則可以說明用戶對該商品有購買意向;否則說明沒有。

當然,上述標籤只是原作者的一種定義方式,可能並不符合我們的設想,我們可以針對這裏進行改進。例如,多次瀏覽同一商品,有關注,或加入購物車行爲都可以認爲是有意向,只是強弱不同,這樣,可以構造特徵集合,並使用邏輯迴歸進行分類。

具體的策略,暫時不進行描述。以上就是對daoliker資料的介紹了。



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