# HSCC 玉山交接 ## 主要目標 預測銀行向客戶發送 EDM 郵件之後的十四天內,客戶是否有購買外匯。 ## 計畫目的 每年有太多的新會議論文,而玉山已經有內部的事情要忙。所以想藉由參與計畫的學生,來試試可以應用的新方法,或想出新方法。所以他們比較不看重表現如何,而是希望能帶給他們新觀點。 ## 計畫內容 ### 與上一屆的銜接  大致上是用深度學習的方式去**預測客戶是否購買外匯**。上方圖片是當時的網路架構,EDM features 後來認為可有可無。這個網路特點是為了接收不一樣種類的資料,所以有不一樣的**頭部**。 > [name=淮蔚彭] 之前玉山那邊是用別種的機器學習方式。 ---  上方圖片為這一次的基準模型,基本是上一屆使用的模型,不過資料種類更多。 ### 此計畫新架構  ### 資料集 & 標籤 * 輸入 * 當月客戶相關資料 * 當日往前三個月客戶的交易紀錄 * 前三個月客戶的帳戶紀錄 * 前三個月客戶的 AUM 紀錄 * 前六個月各個外匯對台幣和美金的匯率 * EDM 編號 > [name=淮蔚彭] EDM 編號後來沒用了 | | Training set | Validation set | | -------- | -------- | -------- | | 時間 | 2017/04-2017/11 | 2017/12 | | 筆數 | 10,452,024 | 1,604,004 | | 購買外匯的比例 | 0.0759 | 0.2341 | * 標籤(共13個) 1. 預測顧客未來14天是否購買外匯 `Binary Classification Task` `主要任務` 2. 預測顧客未來十四天之內花了多少新台幣購買外匯 `Regression Task` 3. 預測顧客下個月帳戶的折合台幣現值 `Regression Task` 4. 預測顧客下個月的 AUM 餘額 `Regression Task` 5. 預測顧客下個月的 AUM 現值 (包含保險、黃金存褶) `Regression Task` 6. 預測顧客外來十四天內購買外匯的通路來源 `Regression Task` 7. 預測多個幣別*未來十四天對新台幣匯率的平均 `Regression Task` 8. 預測多個幣別*未來十四天對美金匯率的平均 `Regression Task` 9. 預測顧客的婚姻狀態代碼 `Classification Task (3)` 10. 預測顧客的年收入 `Regression Task` 11. 預測顧客的職位代號 `Classification Task (3)` 12. 預測顧客的顧客風險屬性代碼 `Classification Task (5)` 13. 預測顧客的理財 CLUB 等級 `Classification Task (12)` ### 為什麼要多任務學習 在多任務學習中,因為使用了多個目標函數,在取完微分、對整體網路的做更新的時候,較不容易對某個目標函數有所偏頗,造成正規化的現象,而此往往可以幫助神經網路避免過度擬合的問題,達到在訓練資料集之外的情況時,有更好的表現。 ### 參考的論文 * Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics https://arxiv.org/abs/1705.07115 * 內容大致是,假設任務中有自己的 uncertainty,應該用這個來決定每個任務損失函數的重要性(scaling or weighting)。而用數學推出來 uncertainty 該放在損失函數的哪裡後,再用反向傳播的方式去求出之。所以 uncertainty 這個可學習參數就更像是模型中的一個參數,但出發點還是調整損失函數的權重。 在定義模型的程式碼裡,除了一般模型的配置,還有設幾個可學習的參數,那個就是這篇論文中說的 uncertainty。有幾個任務,就有幾個 uncertainty。 * AutoSeM: Automatic Task Selection and Mixing in Multi-Task Learning https://arxiv.org/abs/1904.04153 * 這篇論文是在介紹 task selection 跟 training ratio mixing 的新方法。而我們只使用其中前半部。因為這計畫中沒有使用跨資料集的訓練,並且在不跨資料集的情況下,第一篇論文的作用和這篇論文的後半部差不多。 我們實作的部分,跟原本論文的差不多,內容可以直接看論文。但有一些差異; 1. 每次嘗試時,主任務都會一起訓練,輔助任務則是挑其中一樣。原因是因為我們沒有預訓練好的模型,訓練輔助任務的時候對主任務的影響較大。 2. batch size 較大。因為資料數量非常多。 3. decay rate 較小,因為我們的輔助任務較多。 * Many Task Learning with Task Routing https://arxiv.org/abs/1903.12117 * 由於尋找 Multi-task learning 中任務和共享資源的最佳組合會隨著模型深度越複雜變得越難找,因此本篇論文目標是使用 Task routing 來配置共享/特定的神經元,Task routing 是透 0/1 的遮罩來將限制下一層的輸入。每個神經元會分配給可以使用他的任務,也可以視作為每個任務創建專門的子網路。 ### 環境操作 * 如果需要新的 python package,可以直接在終端機安裝,不用聯絡玉山人員。 * DB 的密碼和登入遠端的密碼不同。 ### 困難點 * 資料處理 * 學校通常學不到 pandas,但用 python 處理 mysql 資料,得學一下 pandas。 * 資料量非常大。如果發現整理的有錯,重新整理非常耗時,也要注意程式的複雜度,可能有更快或用較少記憶體的寫法。 * 玉山電腦 * 玉山那邊的電腦應該是每次開機,都會配一個 windows 的電腦,讓你去遠端操控它,然後你再用瀏覽器去(可能)另一個電腦開啟 container 跑那些計畫用的東西。 * 在我們使用時,windows 上面設定,十五分鐘進入螢幕保護程式。但是我們沒有 windows 上面的密碼,所以我們不能修改時間,而且一旦跳出也回不去桌面。因此,在辦公室內等待程式結果的時候,記得偶而動一下滑鼠鍵盤。 * 如果要跑數個小時的程式,可以將它放置並讓螢幕鎖住,跑完之後再去查看。如果在還沒跑完的時候打開,會看不到原本程式的輸出(輸出的是檔案的話沒差),並且 python 的 kernel 會需要重新開啟,記憶體裡的東西會不見。 * 晚上十二點,所有電腦會被關機。 > [name=淮蔚彭] 以上都是經驗推出來的,具體情況不確定。但確定密碼他們不會給我們。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up