--- title: Project20 tags: teach:MF --- # 玉山競賽 賴冠諭、陳廷威、宋忻祖 ![](https://i.imgur.com/jiQSGMQ.png) ![](https://i.imgur.com/RqtTjRF.png) ## 目標:預測出顧客接下來消費金額前三名 ### EDA - **匯入資料** (1) 每個row為客戶於特定月份刷卡資訊。 (2) 共有約2200萬筆 ![](https://i.imgur.com/tIvr2Ej.png) ![](https://i.imgur.com/cLMUHKZ.png) - **Data Description** |colume name |Meaning| Description | |------------|---|-------------| |dt |消費月份|categorical data(1~24)| |chid |顧客編號|- | |shop_tag |消費類別|categorical data(1~48, other)| |txn_cnt |消費次數|int | |txn_amt |消費金額|int | |domestic_offline_cnt|國內線下消費次數|int| |domestic_online_cnt|國內線上消費次數|int| |overseas_offline_cnt|海外線下消費次數|int| |overseas_online_cnt|海外線上消費次數|int| |domestic_offline_amt_pct|國內線下消費金額占比|int| |domestic_online_amt_pct|國內線上消費金額占比|int| |overseas_offline_amt_pct|海外線下消費金額占比|int| |overseas_online_amt_pct|海外線上消費金額占比|int| |card_1_txn_cnt|信用卡1消費次數|int| |card_2_txn_cnt|信用卡2消費次數|int| |card_3_txn_cnt|信用卡3消費次數|int| |card_4_txn_cnt|信用卡4消費次數|int| |card_5_txn_cnt|信用卡5消費次數|int| |card_6_txn_cnt|信用卡6消費次數|int| |card_7_txn_cnt|信用卡7消費次數|int| |card_8_txn_cnt|信用卡8消費次數|int| |card_9_txn_cnt|信用卡9消費次數|int| |card_10_txn_cnt|信用卡10消費次數|int| |card_11_txn_cnt|信用卡11消費次數|int| |card_12_txn_cnt|信用卡12消費次數|int| |card_13_txn_cnt|信用卡13消費次數|int| |card_14_txn_cnt|信用卡14消費次數|int| |card_other_txn_cnt|其他信用卡消費次數|int| |card_1_txn_amt_pct|信用卡1消費金額占比|float| |card_2_txn_amt_pct|信用卡2消費金額占比|float| |card_3_txn_amt_pct|信用卡3消費金額占比|float| |card_4_txn_amt_pct|信用卡4消費金額占比|float| |card_5_txn_amt_pct|信用卡5消費金額占比|float| |card_6_txn_amt_pct|信用卡6消費金額占比|float| |card_7_txn_amt_pct|信用卡7消費金額占比|float| |card_8_txn_amt_pct|信用卡8消費金額占比|float| |card_9_txn_amt_pct|信用卡9消費金額占比|float| |card_10_txn_amt_pct|信用卡10消費金額占比|float| |card_11_txn_amt_pct|信用卡11消費金額占比|float| |card_12_txn_amt_pct|信用卡12消費金額占比|float| |card_13_txn_amt_pct|信用卡13消費金額占比|float| |card_14_txn_amt_pct|信用卡14消費金額占比|float| |card_other_txn_amt_pct|其他信用卡消費金額占比|float| |masts|婚姻狀態|categorical data(1,3)| |educd|教育程度|categorical data(1,6)| |trdtp|行業別|categorical data(1,29)| |naty|國籍別|categorical data(1,2)| |poscd|職位別|categorical data(1,10),99| |cuorg|客戶來源|categorical data(30)| |slam|信用卡額度|float| |gender_code|性別|categorical data(0,1)| |age|年齡層|categorical data(1,9)| |primary_card|主副卡|categorical data(0,1)| - **簡單統計量** (1) 在slam(信用卡額度部分最大值近乎無限) (2) 國內外海外交易皆有負值 (3) 客戶來源cuorg幾乎皆相同(25%~75%皆為category : 3) ![](https://i.imgur.com/D5on0iT.png) - **個變數間相關係數熱力圖** (1) **左上**區塊相關相較明顯 (2) **右下**區塊相關相較不明顯 ![](https://i.imgur.com/0svSqJj.png) - 特定區間(左上) ![](https://i.imgur.com/MFKVXZh.png) (3) 消費類別(shot_tag)與消費屬性(國內、海外、線上、實體)及信用卡類別(card 1~14, other)無明顯相關 (4) 信用卡1&6與消費次數(txn_cnt)有正相關 (5) 信用卡1&6與國內線上消費次數(domestic_online_cnt)有正相關 (6) 信用卡4與國內實體消費次數(domestic_offline_cnt)有正相關 (7) 信用卡13與海外實體消費次數(overseas_offline_cnt)有些微正相關 - 特定區間(右下) ![](https://i.imgur.com/qSrXYzr.png) (8) 個資部分無明顯相關, 僅婚姻(masts)與年齡(age)呈現較明顯負相關 #### 消費類別 v.s. 基本資料 ##### (1)消費類別 v.s.性別 ![](https://i.imgur.com/gTSUCAy.png) ##### (1)消費類別 v.s.年齡 ![](https://i.imgur.com/NEMJphw.png) ##### (1)消費類別 v.s.婚姻 ![](https://i.imgur.com/8HA7dff.png) ##### (1)消費類別 v.s.教育 ![](https://i.imgur.com/LitGvt3.png) ##### (1)消費類別 v.s.職位別 ![](https://i.imgur.com/ZdnJBUw.png) ##### (1)消費類別 v.s.行業別 ![](https://i.imgur.com/kYoD0gJ.png) #### 國內外線上下刷卡次數 - 值為負原因:**刷退** ![](https://i.imgur.com/7bZjqYm.jpg) #### 各個類別中不同信用卡的消費次數加總 - X軸:卡片別(1~14) - Y軸:該類別消費次數加總 - 卡片1,2,4,6在各消費類別消費次數較多 ![](https://i.imgur.com/qZgBugd.png) ![](https://i.imgur.com/ZXH7wmi.png) ![](https://i.imgur.com/j1yKr1t.png) ![](https://i.imgur.com/9CWqX5A.png) #### 消費類別 v.s. 顧客平均信用卡額度 - X軸 :不同的消費類別 - Y軸 : 平均信用卡額度=該消費類別顧客信用卡額度加總/消費次數 資料為刪去極端值後的資料 極端值取為五百萬以上,約佔所有資料的1% 從顧客的平均信用卡額度看不出不同類別間有特別明顯的趨勢。 ![](https://i.imgur.com/srAGTFe.png) #### 消費類別 v.s. 消費金額 - X軸 : 平均消費金額 = 消費金額/消費次數 - Y軸 : 指定類別平均消費金額分佈(bins = 1,000) ##### Processes 1. 取16個指定類別的消費資料做資料分析, 共計22,130,579筆. 2. 出現消費次數(txn_cnt)為0或負值,但消費金額(txn_amt)為正的資料. 將消費次數(txn_cnt)取絕對值為調整後消費次數(adj_txn_cnt). 3. 刪除共計52,041筆調整後刷卡次數(adj_txn_cnt)為0的資料. 4. 計算平均消費金額(Amt_mean) = 消費金額(txn_amt)/調整後消費次數(adj_txn_cnt). 5. 刪除共計514筆平均消費金額(Amt_mean)>100,000的資料. 6. 對消費類別(shop_tag)分群, 繪製histogram. ![](https://i.imgur.com/fBUr8Ds.png) ![](https://i.imgur.com/P3Peatt.png) ![](https://i.imgur.com/01xGl5T.png) ![](https://i.imgur.com/FM9qHHp.png) ##### Features 1. 平均消費金額集中於0~10,000, 大多數資料平均消費金額<20,000. 無觀察出消費類別與消費金額有明顯關係, 僅消費類別26, 39有較高資料比例消費金額>20,000. 2. 消費類別10, 15, 36, 37資料筆數較多, 類別13, 21, 22, 25, 26資料筆數較少. 可能隱含不同產品受客戶歡迎程度之差異. --- ## Benchmark **簡介** : 分別預測(1)消費者於各個消費類別的消費機率,以及(2)各個類別的平均消費金額,再利用兩項預測結果相乘以預測(3)消費者於各個消費類別的消費金額。 **(1)消費者於各個消費類別的消費機率 - Logistic Regression** - 預測類別(shop_tag)$(i)$ : ["2","6","10","12","13","15","18","19","21","22","25","26","36","37","39","48"] - Features$(variables)$ : ['masts', 'educd', 'trdtp', 'naty', 'poscd', 'cuorg', 'gender_code', 'age', 'primary_card'] **PCA** - Drop NA Dropped data whose variables include NaN, around 0.13% data are droped. - Eigenvectors ![](https://i.imgur.com/IU97gxk.png) - Explained ratio => take the first 3 vectors for PCA ![](https://i.imgur.com/f14wAOD.png) - Coefficient of logistic regressions for purchase category prediciton ![](https://i.imgur.com/2M1ZMLl.png) **(2)各類別消費金額($txn\_amt_i$)** - 平均數(mean) : 各類別全期數平均數, $\mu_{shoptag_i}$ - 中位數(med) : 各類別全期數中位數, $med_{shoptag_i}$ **(3)預測結果(NDCG)** - (1)$.*med_{shoptag_i}^T$: 0.2069269064 - (1)$.*mu_{shoptag_i}^T$: 0.3414948109 --- ## 模型改良 ### 如何找到消費金額前三高的消費類別 - (1)用機器學習方法預測出可以這個客戶會購買這個類別的機率p - (2)將16種類別的p除權後表示為這位顧客會購買這個類別的比重 - (3)求出各個顧客16個類別過去的平均消費金額 - (4)將(2)和(3)相乘可以就可以算出消費金額前三高的消費類別 -------- ### 資料處理 - slam:信用卡額度 - 1.先處理極端值的問題,將資料轉換成類別資料(等比由小到大從1~100) - 2.再將缺失值補50(mean) --- ### 如何算出P - 1. 原資料共有54個解釋變數(共3000萬筆) - 2. 將資料依照「類別」分成16個CSV - 3. 每個CSV資料做處裡 - 4. 對各組資料分別配置模型 ![](https://i.imgur.com/UwQDpWZ.jpg) ### 機器學習方法 - (1)Multinomial - (2)ADABoost - (3)Gradient Boost - (4)Random Forest 繳交範例: ![](https://i.imgur.com/4snvwRG.png) 評分標準: ![](https://i.imgur.com/t9y0ZvW.png) |MODEL | NDCG | | -------- | -------- | |Gradient Boost | 0.6765267341| |Multinomial Regrssion | 0.6767605818| |ADABoost | 0.674006017 | |Random Forest Classifier| 0.675137772 | ## 近期改善(Due 1/5) - 1. 資料極端值尚未處理乾淨(消費金額等) - 2. PCA 數量應針對各個類別樣態取數值 - 3. XGBoost,KNN等模型應用