給用戶推薦商品
地址:
- http://blog.csdn.net/qq_34264472/article/details/53808876
- https://www.kaggle.com/c/santander-product-recommendation/data
描述:
根據用戶15個月商品購買記錄(2015年1月28日到2016年5月用戶購買商品記錄),預測下個月(2016年6月)哪些用戶最可能購買的7個商品。
思路
https://www.kaggle.com/c/santander-product-recommendation/discussion/25579
-
融合模型。
- 模型融合算法效果不好。商品分佈跟月份相關,只使用2015年6月的測試數據來預測2016年6月份的用戶購買行爲。數據量大大縮小。
- 有的用戶2015年6月之後纔有信息記錄,還是用2016年5月預測
- 模型融合。
- 2015年6月和2016年5月都出現,融合
- 2015年6月和2016年5月只出現一次,當作結果
- 2015年6月和2016年5月都不出現,預測不購買
-
不預測你購買商品,而是假定用戶購買商品,預測用戶會購買哪些商品。multi:softprob。
xgb_params = { 'seed': 0, 'silent': 1, 'objective': 'multi:softprob', #reg:linear, binary:logistic,multi:softmax,multi:softprob 'eval_metric': 'mlogloss', #rmse, mae,logloss,error,merror,mlogloss,auc 'num_class': 4,# multi:softmax需要此參數 'max_depth': 4, 'min_child_weight': 1, 'subsample': 0.7, 'colsample_bytree': 0.7, 'learning_rate': 0.075, # eta 'gamma': 0.01, 'alpha': 0.01, 'lambda': 0.01, 'nthread': 4, 'nrounds': 500 }
-
每條記錄用戶購買了多個商品,將該記錄拆分多條,每條記錄一個商品
-
train取出labelY,按asix=0軸拼接train、test集,一起預處理。
-
seaborn使用scatter圖。
- 方差越來越大。log。證明
- 幾個偏差特別大的噪聲點。如果在train,直接去除,如果在test,賦值na,後邊會單獨處理na值
-
seaborn使用heatmap圖,
- 查看特徵相關Pearson係數,相關較大的,去除一列,先效果。
- 降維效果不好。去除幾列與結果關係不大的列
-
非數值類型轉數值類型。
-
有的樣本在train全,test有缺失值。
- heatmap圖,相關性較大的列的值處理後填充
- rf預測
- 好多列的數據都缺失,直接刪除該樣本。
-
去除缺失值特別多的列。
-
特徵組合。比如工資和退休金組合。房屋信息、幾個車庫。
-
參數調整。GridSearchCV。
-
K折交叉驗證。sklearn.cross_validation.KFold