# Group 1 專題小組會議記錄 (報告第四順位) # 第一次會議記錄 2021/05/29 19:00 Tue 日期: 2021/05/29 時間:下午 2:30 出席:陳欣惠(紀錄)、曾郁翔、廖容嫻 進行方式:線上 ### 主要討論事項 (1)專題進行的流程 (2)工作分配 (3)負責人完成期限 (1)流程 | (2)包含事項 | (3)負責人 | --------------|:-----:|-----:| 資料前處理 | Outlier, Missing value, Categorical data → One-hot Encoding (dummy), Numerical data normalization, 相關係數分析(兩兩欄位之間比較), Visualization (fraud_id 與欄位 ‘地點、時間段’ 之間的關係)<br> → 程式碼、.csv、圖檔 | 廖容嫻 | 模型訓練 | → 程式碼、圖檔 | 陳欣惠 | 影片製作 | 共2個 : 3min + 15min | 曾郁翔 ~6/15 | 書面報告 |於 Google Docs 共同編輯 | 廖容嫻、陳欣惠 ~6/15 ### 其他討論事項 - 資料集:使用2019玉山公開賽資料,不使用 test(沒有label),只用 train set - 會議記錄 : (public)https://hackmd.io/@fintechntu/ryaDVPJ5O - 根據前期 EDA 討論: - acqic 收單行代碼 0-6884 : 分北、中、南區 by scity assist? - flbmk, flg_3dsmk 欄位有 missing value - 策略: 1. 地區在地與線上,應該在地會受交通時間影響不可能離太遠,e.g. 兩個小時地點從台北到紐約。但線上可能會有跨境購物或 VPN 跳轉,應該可能就比較不會受交通時間影響。但如果是冷門地區可能是盜刷。 2. 三更半夜刷卡在幹嘛? 18 小時 Green Zone 6 小時 RedZone ### 下次會議前完成 1. 資料前處理(離群值、缺失值、數值型normal、類別型dummy)--> 訓練資料(.csv) 2. 新增欄位(參考同一個用戶2筆交易間的時間差) 3. 盜刷發生的比例:(圖示) - 不同時間段(早中晚) - 不同地點(國家/城市) - 國內(102)或 海外 # 第二次會議記錄 2021/06/01 19:00 Tue 日期: 2021/06/01 時間:晚上 7:00 ~ 9:25 出席:曾郁翔(紀錄)、陳欣惠(整理)、廖容嫻 進行方式:線上 ### 會議流程 1. 展示上次會議的交代事項 2. 訓練資料的相關討論 3. GitHub 教學 - Google Colab & Jupyter Notebook 4. 擬訂下一次會議的報告內容 ### 討論事項 1. 繼續 EDA 討論: - 數值型資料只剩 「conam」‘交易金額’ - 「conam」欄位交易金額大,可取對數處理 - (conam=0)--> log(0+1), new column: conam_log - Z-normalization, new column: conam_z - training 時,(conam_log、conam_z)擇一即可 - 「iterm」‘分期期數’歸入類別型 - 考慮「insfg」欄位 ‘分期交易註記:N/Y’ 和 「iterm」欄位 ‘分期期數:0~7’ - Is sum(insfg 'N') == sum(iterm '0') and sum(insfg 'Y') == sum(iterm '1~7') ? - 如果是的話,資料不對等(非分期交易‘N’,但分期期數不為0) - insfg refer iterm ? or delete observation ? - 標記為‘Y/N’的類別型欄位(如:ovrlt)轉換成‘1/0’ - 「locdt」‘授權日期’欄位進行 模(mod)7 取餘數 - 每一天的交易量蠻平均的 - 「loctm」‘授權時間’欄位: - 新增3個欄位「loc_0_7, loc_8_15, loc_16_23」,分別註記 早、中、晚 時間段進行的交易 - loc_0_7:半夜 發生盜刷的比例較白天顯得特別高 - loc_16_23: 晚上 發生盜刷的比例高 - 為什麼早上 10 點的交易量特別高? - 若考慮時區的話,需要參考 消費城市、交易時間,暫時不考慮 - 考慮交易金額為 0 的盜刷情況有 2573 筆,占盜刷比例的 ??? - condition: conam=0 & fraud_ind=1 - 「stocn」消費地國別有 0~xxx 個,是否要統一只分成 國內、海外 2個欄位? - 暫時先不要,考慮到線上消費(地點算消費者ip / 第三方paypal據點) - 相關係數,類別型用 spearmanr - loc_0_7 和 cano 的相關係數極高 0.99 2. (EDA 未完成部分): - 盜刷發生在 國內、海外的比例(圖示) 3. 明天線上跟老師確認一些細節後,就可以產出完成前處理的「訓練資料」。接下來開始進行下一階段:模型訓練。由於 data 的 imbalance,在訓練的時候要多加注意!!! - downsampling fraud_ind=0 的資料 OR - upsampling fraud_ind=1, by duplicate few copies ### 明天(6/2)上課確認 1. 跟老師確認 iterm 跟 insfg 欄位是否相關?寄信問 mentor 2. 跟老師確認: 沒有 label 的 test set 是否可不用?可不用test, validation從train切出日期較靠後的 --> 6/5 老師於ceiba(fb同步)公告已更新資料集 ### 下次會議前完成 - 已完成資料前處理 - 展示模型訓練前期的小成果 # 第三次會議記錄 2021/06/08 19:00 Tue 日期: 2021/06/08 時間:晚上7點 出席:廖容嫻(紀錄)、陳欣惠 缺席:曾郁翔 進行方式:線上 ### 會議流程 1. 展示上次會議的交代事項 2. 訓練模型的相關討論(AuROC 辨識能力) 3. 擬訂下一次會議的報告內容 ### 主要討論事項 1. 因6/5公布新的資料集,因此作了以下更動: - 將新資料集匯入,並重新進行資料整理(by 欣惠) - 之後須重新跑EDA(by 容嫻) 2. 關於資料整理,新增了以下的欄位: - freq_cano:每張卡號被盜刷的次數 - freq_bacno:每個歸戶被盜刷的次數(一個歸戶可有多張卡,因此該變數是計算多張卡的被盜刷的次數的總和) - 以上兩個新變數都是於訓練資料集中進行計算,而由於在測試資料集中無法事先得知Y的真正值,因此測試資料集中的freq_cano與freq_bacno都將使用訓練資料集中的值進行計算;若訓練資料集中無此卡號或歸戶資料,則在測試資料集中該變數的值則設定為0 3. 關於遺失值的處理,有以下兩種方法: (1) 使用套件SMOTE,可自動增加Y=1的比例,使Y=0與Y=1的比例變成1:1,得到新的資料集 (2) 使用Balanced Bagging Classifier,此為一分類器,可以直接處理類別不平衡問題,而不必在訓練前手動進行欠採樣或過採樣 4. 遺失值的處理:目前都已先刪除具有遺失值的觀測值為處理方式 5. 目前使用的分類器有:羅吉斯迴歸(Logistic Regression)、XGboots(XGB)、LGB(LightGBM)以及Balanced Bagging Classifier(BBC),而各類的分類器目前表現為LGB與BBC為佳,其中LGB需要 SMOTE 預處理。而使用XGB訓練時會crash 6. 在處理「不平衡的問題」與「清理資料」後,分類器的表現都有顯著的上升 7. 比較特徵工程的成效:可以選一個速度快的分類器,將有進行特徵工程與沒有進行的資料分別放入該分類器進行訓練與測試,得出來若辨識率或AUC若有提升,則代表特徵工程有效? 8. 容嫻回去將各變數(value 為 Y/N)的比例計算出 9. 書面報告的工作分配: - 「容嫻」負責:EDA與前處理(因為觀察到圖片,所以做了早中晚的直方圖)、outlier做boxplot、missing value做圓餅圖與相關係數的heatmap,以及錯誤案例的分析 - 「欣惠」負責:特徵工程、imbalance與模型訓練(Confusion Matrix, AuROC & Classification Report) ### 6/9需確認 - 影片錄製、投影片製作的工作時程(6/15須完成),最晚何時要給郁翔最後的結果? ### 下次會議前完成 1. 容嫻做:Y/N*5,Y/N+NA*2做盜刷與非盜刷的比例、錯誤案例的分析 2. 欣惠做:確定分類器、產出y_test與y_pred的資料集,供錯誤案例分析使用(SMOTE+LGB,BBC) # 第四次會議記錄 2021/06/09 19:00 Wed 日期: 2021/06/09 時間:晚上7點 出席:曾郁翔(紀錄)、廖容嫻、陳欣惠 進行方式:線上 ### 會議流程 1. 確認模型訓練的最終結果 2. 表達的方式要像是新創公司報告嗎? 3. 擬訂下一次會議的報告內容 ### 主要討論事項 1. 我們的特色是用 SMOTE 把 imbalanced data -> 1:1 2. 我們跟 LR 比就好了 3. 加了這些 Feature, EDA, 模型是有幫助的 4. SMOTE + LGBM vs BBC 5. Missing value 改進方向可以做 6. #TODO Random 降 balance data -> 再去做 XGBoost 看一下跑不跑得起來 # 第五次會議記錄 2021/06/12 13:30 Sat 日期: 2021/06/09 時間:13:30~16:30 出席:廖容嫻(紀錄)、陳欣惠、曾郁翔(紀錄) 進行方式:線上 1. 欣惠 csv -> 容嫻 2. 容嫻 EDA 整理 3. 影片 ### 主要討論事項 1. 欣惠模型訓練結果分享 - BBC 決策樹隨機抽出來 抽出來要決定要不要放回去 - BBC Auto 除了最小類 - SMOTE Python 有融合到 BBC 裡面,但這邊跑 BBC 預設 - 所以採用 BBC 來做最後的結果 - BBC 好幾個弱分類器組起來的 - 對數字型的數值不用取 - test_freq Train_freq - Model.ipynb 2. 決策樹在訓練模型時,不需要先行清理資料,只要使用原始資料即可 3. 不用特徵工程 也可以跑得還不錯 4. BalancedRandomForestClassifier 跑不起來? 5. 時間跑起來兩三分鐘就跑起來了。 6. 37萬筆資料 7. 如果要報告內容有錯,用紅字改寫內容 8. 早中晚盜刷的圖,可以左邊放不盜刷、右邊放盜刷 + 盜刷頻率的圖可以再增加,bacno & cano 9. EDA那邊要繼續做、錯誤案例分析 10. 將LR與LGB結果放入 11. 欣惠交接給郁翔模型訓練的結果,供他錄製影片 12. 容嫻交接給郁翔 EDA 處理的過程,供他錄製影片 13. 推薦模型結果看的指標(AuROC(主要), f1-score) 14. 如果要提訓練快速為特點:前提是該bacno/cano盜刷的頻率已提前算好(也就是訓練時統計好,模型對測試集進行前處理時可直接帶入) 15. 遺失值直接 Drop 掉 ### 影片需要 1. pg1.總共 114~ train set 2. p1 22 個變數,跟一個 y 3. p1 Missing Value 我們處理直接把他 Drop 掉 4. Y 比例 1.3% 5. Drop txkey(書面才要) 6. log 不用講 log transformation 7. 日期分成七天的 weekday 不用說 8. p3 早中晚圖 9. p2 Y/N 變數 看 ecfg 變數 整體的盜刷比例為 1.3%,若刷的金額為 0 了話,盜刷比例為5.5% 10. boxchart 不用講 11. p4 (盜刷頻率的圖可以再增加,未來會加圖,bacno & cano)-> #TODO Andy 等圖 12. p5 imbalance的處理:有兩條路 解釋這兩個方法 - SMOTE+某分類器 - BBC 13. p6 訓練結果(那兩張圖,看AUC & F1): - SMOTE+RFC(LR & LGB影片不用出現,報告中就好) - BBC 14. p7 錯誤案例分析 15. p8 結論: - 優(可以使用少量的特徵即能得到不錯的結果) - 缺(precision不夠高,會打擾到非盜刷的客戶) - 特點(高度的辨識能力) 16. 整體的盜刷比例為 1.3%,若刷的金額為 0 了話,盜刷比例為5.5% # 第六次會議記錄 2021/06/15 19:00 Tue 日期: 2021/06/15 時間:晚上7點 出席:廖容嫻(紀錄)、陳欣惠(紀錄)、曾郁翔(紀錄) 進行方式:線上 ### 會議流程 1. 確認書面報告、影片錄製的進度 2. 明天期末報告的注意事項 3. 填寫表單給助教 ### 主要討論事項 1. 欣惠與容嫻校對書面報告,進行定稿 2. 郁翔進行影片錄製 3. 完成程式碼上傳 Github 4. 明天的報告由我們播放長片 ### 影片需要更改內容如下: 1. #todo ppt 次數 - 頻率1,5,6,9 2. #todo pg3 點改成 - 3. #todo pg6 時間可以請重念 4. #todo pg7 - 在解釋之前,你先描述圖像:左邊藍色的長條圖是分三個時段的正常交易量,右邊是盜刷的交易量 。第一條是白天、第二條是晚上、第三條是凌晨 ... - [逐字念以下,原本的3:50~4:20請刪除]但實際上我們看到,在early morning,也就是凌晨的時段,在右圖中盜刷交易的比例相對於在左圖中正常交易的比例來說提高了許多;晚間時段的盜刷交易與正常交易的比例相當;而在下午的時段,被盜刷的比例相對於正常交易的比例來說明顯下降了。 5. #todo pg8 - [逐字念以下]在進入到細項來看,首先,由於資料集中出現了許多金額為0元的交易,而我們認為其中可能有特別的屬性,因此新增了"交易金額為0"的這個新欄位。而左圖是各變數在不同的值當中,與正常交易相比的盜刷比例。在最左邊的全部資料(Full_data)中的盜刷交易佔全體的1.3%,在交易金額為0的情況下的盜刷交易為5.5%,而在網路交易註記(ecfg)為"是"的盜刷交易佔了4.5%,相比原資料集中的1.3%高出了許多。 6. #todo pg10 - 從左邊的圓餅圖,不難發現盜刷交易為極少例,僅占所有資料的 1.339% 。因此,在訓練模型之前,我們需要處理資料失衡的問題。 - 我們嘗試了以下兩種方法: 7. #todo pg13 粗糙 -> 雖然我們只進行了簡易的特徵處理 8. #todo pg13 的話 -> 的部分 9. #todo pg14 那五個拿掉,要順一下 - 從混淆矩陣的四個PI當中,我們最為在意的是False Negative,也就是實際為盜刷卻沒有被模型偵測出來的交易。左圖為以網路交易註記為例,將整個測試資料集切割為四個部分,分別為TN, TP, FP以及FN,並依序比較此四部份在變數ecfg中的分布為何。其中找到較為特殊的分布,如左圖。從該圖中可發現,當網路交易註記為「是」時,該交易容易被判定為 TP、FP 與 FN;而註記為「否」時,則通常被歸類在TN(左上)。 10. #todo p15 Redo - 優缺特點。。。 - 雖然使用 SMOTE 的成果還不錯,但由於 SMOTE 會將少數類的樣本增加至與多數類的數目相當,大幅增加了樣本數。所以在考慮訓練的時間成本情況下,若直接使用 BBC 則不需再增加樣本數,有效的減少了訓練模型的時間。 因此,在信用卡盜刷偵測的樣本數極多的情況下,直接使用 BBC 進行訓練是最佳的選擇。 11. #todo p16 結論 - 我們推薦的模型precision不高,recall較高,適合用於希望儘可能偵測出越多盜刷交易的使用情境 - 對於缺失值的處理,我們在實驗中選擇刪除該筆交易紀錄。未來可以做的是,嘗試一些補值的方法,看是否能提高模型預測的能力。 ### 檔案連結總整理 1. 技術性長片:https://www.youtube.com/playlist?list=PL1aVa65WLc53OQx-oESc-kI_T2Ch-7GRx 2. 介紹短片:https://www.youtube.com/playlist?list=PL1aVa65WLc531Ozz6A7qU1SBbSTlCifiq 3. 書面報告:https://drive.google.com/file/d/1G9YKNdHGJufS8hZG09pAwQWtL9NXd1uF/view?usp=sharing 4. 書面報告new link: https://drive.google.com/file/d/1mGJcCdhaRBK5njb42ZV7osXODEoQyPyM/view?usp=sharing 5. GitHub原始檔:https://github.com/ntu-r09922158/fintech_109_2 6. 會議記錄:https://hackmd.io/@fintechntu/ryaDVPJ5O 7. 繳交專題表單: https://forms.gle/ZwdAQAjxJmbHNLKx5 8. 專題互評表單: https://forms.gle/x87biL1x2nz48kVT7 ## 影片修改(for 長短片都要) 1. 訓練結果修改:用兩頁來展示,把所有的4個實驗的結果都放進去 2. 訓練結果(第一頁): - 重新從書面報告拿 LR & LGB 的 ROC 圖2張,圖片下的文字說明: - (左圖文字說明)threhold=0.623,f1-score=0.08 - (右圖文字說明)threhold=0.8,f1-score=0.49 - 口頭說明一下 - 左圖是SMOTE+Logistic Regression,取threshold為 0.623,f1-score為0.08;右圖是SMOTE+Light Gradient Boosting Machine,取threshold為0.8,f1-score為0.49 3. 訓練結果(第二頁): - 重新從書面報告拿 RF & BBC 的 ROC 圖2張,圖片下的文字說明: - (左圖文字說明)threhold=0.713,f1-score=0.39 - (右圖文字說明)threhold=0.9,f1-score=0.57 - 先口頭說明一下 - 左圖是SMOTE+Random Forest,取threshold為 0.713,f1-score為 0.39;右圖是BBC,取threshold為0.9,f1-score為0.57 - [逐字念以下]透過調整門檻值,比較門檻值之間的 f1-score,以得出該模型的最佳threshold。就我們進行實驗的這四種模型來看,LR 的預測能力最不樂觀。我們僅進行了簡易的特徵處理,但 RF、LGB 和 BBC 這些基於樹狀結構的模型把超過半數 的盜刷交易都抓出來了(recall > 0.5) 。由於盜刷交易為極少例,很難達到高的 precision,導致盜刷交易 (class ‘1’) 的 f1-score 都不是太高。BBC 是唯一 precision 超過 0.5 的模型。 4. 錯誤案例分析:不用改 5. 模型與特點那一頁:標題拿掉特點,內容部分優缺點保留,(畫面、錄音)都要拿掉特點(音檔播到缺點即可,這一頁缺點後面的可以砍掉) 6. 結論:不用改 7. 章節那頁看你要不要拿掉特點,我不強求