初學者可以參考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資料的介紹了。