from: 七月在線
電商推薦與銷量預測相關案例
一、預測用戶對哪個事件感興趣(感興趣不一定去參加)
用戶歷史參加事件、社交信息、瀏覽信息(app)、要預測的事件
recall:召回率
准確率:
協同過濾不考慮賣/買的東西是什么,只關心歷史數據中哪兩個用戶的興趣度一樣。(1-2)
(2,3 -> 3)(視作分類模型:LR/SVM/GBDT/DNN/RF,除了預測感興趣與不感興趣,還想知道感興趣的程度--概率)svm也會輸出概率,但是用的不多。
二、代碼
1. import pickle (py3)內存不足的時候,可以保持原來的數據結構,Load到本地,是二進制的。Load很快,如果原來是字典,load內存后仍然是字典;如果原來是數組,load內存后仍然是數組。 (py2 import cPickle)
2. 處理關聯數據:只處理有共同行為的關聯信息
1)計算關聯用戶:
歷史信息:計算cosine相似度
注冊時的個人信息:計算cosine相似度
相似度可使用屬性:位置、時區、注冊時間(可能是小伙伴邀請注冊)、國家id、性別等(在數據處理時全部轉換成數值)用戶維度處理信息
2)用戶社交關系挖掘
朋友數量,朋友中每個朋友參加活動的頻次
3)構造event和event相似度數據
4)活躍度/event熱度 數據
處理上述特征的時候,歸一化處理
5)組合上述數據,訓練
mmwrite/mmread 處理時先存到本地,然后訓練時,讀取到內存。可以節省內存
協同過濾:ABCD有相似度,根據BCD的喜歡的東西,對A推薦東西,並給出推薦度。
便利店銷量預測
1. 希望做的事情,提前六周知道未來的銷量。但是每個國家的節日不同,銷量不同。
2. 修改xgboost的loss函數(因為該競賽的loss不是常用的loss,xgboost里沒有該loss)
需要知道loss的一階導數(grad)與二階導數(hess)
2. 除了訓練時修改了xgboost的導數,還要定義對應的loss,在訓練時把loss作為參數傳進去。
3. 與時間有很緊密的聯系:促銷、葯店(流感期)
4. xgboost可以顯示特征重要性
5. lightgbm比xgboost快一些
6. 交叉驗證訓練數據
數據與特征決定上限,模型只是逼近上限
對最終結果,數據與特征更重要一些