給用戶推薦商品

給用戶推薦商品

地址:

描述:

根據用戶15個月商品購買記錄(2015年1月28日到2016年5月用戶購買商品記錄),預測下個月(2016年6月)哪些用戶最可能購買的7個商品。

思路

https://www.kaggle.com/c/santander-product-recommendation/discussion/25579

  1. 融合模型。

    1. 模型融合算法效果不好。商品分佈跟月份相關,只使用2015年6月的測試數據來預測2016年6月份的用戶購買行爲。數據量大大縮小。
    2. 有的用戶2015年6月之後纔有信息記錄,還是用2016年5月預測
    3. 模型融合。
      1. 2015年6月和2016年5月都出現,融合
      2. 2015年6月和2016年5月只出現一次,當作結果
      3. 2015年6月和2016年5月都不出現,預測不購買
  2. 不預測你購買商品,而是假定用戶購買商品,預測用戶會購買哪些商品。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
    }
  3. 每條記錄用戶購買了多個商品,將該記錄拆分多條,每條記錄一個商品

  4. train取出labelY,按asix=0軸拼接train、test集,一起預處理。

  5. seaborn使用scatter圖。

    1. 方差越來越大。log。證明
    2. 幾個偏差特別大的噪聲點。如果在train,直接去除,如果在test,賦值na,後邊會單獨處理na值
  6. seaborn使用heatmap圖,

    1. 查看特徵相關Pearson係數,相關較大的,去除一列,先效果。
    2. 降維效果不好。去除幾列與結果關係不大的列
  7. 非數值類型轉數值類型。

  8. 有的樣本在train全,test有缺失值。

    1. heatmap圖,相關性較大的列的值處理後填充
    2. rf預測
    3. 好多列的數據都缺失,直接刪除該樣本。
  9. 去除缺失值特別多的列。

  10. 特徵組合。比如工資和退休金組合。房屋信息、幾個車庫。

  11. 參數調整。GridSearchCV。

  12. K折交叉驗證。sklearn.cross_validation.KFold

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