機器學習 | 5種基於機器學習的客戶價值預測分析方法

項目目的:預測客戶的交易價值

數據來源:https://www.kaggle.com/c/santander-value-prediction-challenge

數據內容:4459條已知客戶的交易價值和客戶的屬性具體內容不知道,有可能是性別年齡收入交稅等等每一個用戶有4993條屬性1.png步驟:

  • 數據分析
  • 特徵值選取
  • 模型建立
  • 調試

 

首先進行數據分析

有4459行,4993列,其實中1845列爲float類型,3147列爲int類型,有1列爲object應該爲用戶id

 

觀察發現特徵值數量較大

初步處理去掉常數列去掉重複列

數據由4993變爲4732

由於特徵值太多,難以作圖分析

直接使用所有特徵值

對需要預測值分析,觀察數據分佈下圖左,大部分數據集中在左側,做log處理使數據更符合高斯分佈下圖右。通常高斯分佈的數據預測更準確原因不是很清楚,個人理解是如果有較大值出現,預測偏差一點,loss改變很大,對擬合不利

 

方法1

可能存在問題,樣本太少,有可能過擬合。先看下效果在說吧。

首先建立了一個4層的dnn網絡詳見test_dnn.py

預測結果分析

對測試集進行測試

衡量標準爲爲均方根

計算方法:sqrt((預測值-原始值)**2/樣本數)

Rms=1.84

下圖爲預測誤差分佈圖

結果分析:效果不理想,預測值與真實值差距較大,有一個值偏離非常大

原因分析:

  1. 模型結構不夠理想
  2. 超參數的設置
  3. 樣本太少,有200w的參數但是樣本只有4000+,過擬合問題嚴重在20次迭代後,就發生過擬合了

7b947ee9d124afadbeb171d3a315f61e.png

 

方法2

使用lightgbm

直接使用lightgbm庫能用,但是對調參還需要學習

詳見test_lightgbm.py

預測結果分析

對測試集進行測試

衡量標準爲均方根

Rms=1.35

6b6f1a5d06a9608f3fdd3498379dacad.png

結果分析:效果依舊不理想,但是比dnn較好,而且沒有偏移非常大的值

原因分析:

  1. 依舊存在過擬合
  2. 模型參數設置

9.png

 

方法3

使用xgboost

方法同上

預測結果

Rms=1.38

10.png

結果分析:效果依舊不理想

原因分析:

  1. 2000次迭代次數不夠,模型還未收斂
  2. 模型參數設置

 

方法4

使用catboost

方法同上

預測結果

Rms=1.47

結果分析:效果依舊不理想

 

方法5

使用集成學習的思想,將上面的方法混合使用

將3個學習器的結果根據權重求和,得到最後結果

Rms=1.36

12.png

結果分析:

使用4種方法對預測目標進行建模,其中dnn由於數據太少,很早就發生了過擬合

Xgboost,lightgbm,catboost效果比dnn要好很多,但是對價值預測依然存在偏差。但是結合kaggle的論壇帖子,由於數據特點在不使用leak的情況下 這已經是不錯的預測。由於調參修改的時間需求較大就不進行了,這裏只是一個驗證,驗證結果爲Xgboost,lightgbm,catboost在數據量較少的場景,效果是非常好的。


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