Business Domain表示:你是看不起我嗎?
當談到數據科學、人工智能流行語,幾乎每個人都會眼前一亮,相信數據分析師和數據科學家選擇入行的原因之一都是因為他們沉醉在於最先進的預測、語言和圖像模型,而這些模型讓他們成為預言家去推測未來趨勢或事件。但當中尤其是初學者會誤以為一直追求強大而複雜的演算法或統計模型,便可以解決一切的問題,於是投入全副精力在模型開發和優化。然而,在實際的工作環境中,數據科學家不應只一味盲目追求複雜的演算法,完美的模型,無可否認這是值得讚賞的,但是請不要忽略了業務操作和流程的重要性。為了證明其重要性,我將提出一個案例研究,在本文中作進一步解釋和討論。
在美國的一個線上平台LendingClub (LC)幫助連接貸款人與借款人,進行Peer-to-peer貸款,它還從貸款人和借款人的貸款記錄中收集數據。假設現在,我們想推行一個新的Data Science Project,就是開發一個Auto-engine來預測客戶是否會違約,並自動拒絕那些高風險的貸款。正好,Kaggle 的Dataset也記錄了LendingClub (LC)的完整貸款記錄。而數據字典可供我們瞭解每個欄位的定義和描述,而這些數據被提取並保存在一個csv 檔。
在美國的一個線上平台LendingClub (LC)幫助連接貸款人與借款人,進行Peer-to-peer貸款,它還從貸款人和借款人的貸款記錄中收集數據。假設現在,我們想推行一個新的Data Science Project,就是開發一個Auto-engine來預測客戶是否會違約,並自動拒絕那些高風險的貸款。正好,Kaggle 的Dataset也記錄了LendingClub (LC)的完整貸款記錄。而數據字典可供我們瞭解每個欄位的定義和描述,而這些數據被提取並保存在一個csv 檔。
No.
|
資料欄位
|
簡要說明
|
1
|
id
|
客戶的唯一識別碼
|
2
|
credit_policy
|
1 或 0 取決於借款人是否符合某信貸標準
|
3
|
loan_amount
|
借款人申請的貸款清單金額
|
4
|
term
|
貸款付款期數
|
5
|
instalment
|
借款人每月所欠的付款
|
6
|
grade
|
貸款等級
|
7
|
emp_length
|
以年計僱傭時間
|
8
|
home_ownership
|
借款人在登記期間提供的房屋擁有權狀況或從信用報告中獲得的房屋擁有權狀況
|
9
|
annual_income
|
借款人提供的自報年收入
|
10
|
verification_status
|
指示收入是否已驗證
|
11
|
target_loan_status
|
貸款的目前狀態
|
12
|
purpose
|
借款人為貸款的目的
|
13
|
dti
|
借款人每月債務總額與借款人自報月收入之比
|
14
|
decline_2yrs
|
過去2年借款人信用檔案中逾期拖欠的30天以上
|
15
|
inq_last6_mths
|
過去 6 個月查詢的數量
|
16
|
openacc
|
借款人信用檔案中開立的信用額度數
|
17
|
revolbal
|
信貸循環餘額總額
|
18
|
totalacc
|
借款人信用檔案中當前信用額度總數
|
19
|
int_rate
|
貸款利率
|
20
|
revol_util
|
借款人使用相對於所有可用循環信貸的信貸金額
|
那麼第一步該如何了?由於我們有表格式的Data,只需做一些資料轉換或Feature Engineering。我的天啊!這是多麼的簡單!然後,使用可靠的預測模型對其進行訓練,並用k-fold cross-validation對Hyperparameters作調整,再測量準確度,收工完事!如果有更多的時間可用的話,我們可以嘗試更複雜的模型,做些花哨的事情!
很可惜,世事那有這麼簡單,如果只實現剛才所說的步驟,在某程度上這已偏離了當初做這個Data Science應用的目的。筆者猜測不是所有觀眾都認同這點,所以筆者會先visualize業務流程,描述買家和賣家之間的互動,再寫下對應的Data Column出現在不同的階段和狀態,還有Auto-engine會在那一階段中實現,再探討一下哪裡出了問題。
其實只要細心注意到每個Column的定義,便會發現其中一些Data Field在貸款人做出最終決定之前是不可用作建立模型的。參考上圖,我們要等到申請在Decision決策階段中,才能知道家庭收入的核實情況(verification status)和貸款(grade)的等級。請注意:我們的Auto-engine是設計是在決策之前,需要判斷違約的機會,並以減少日後違約的風險。因此,這幾個Data Field不應該放在我們的模型的Input中。
此外,如果您熟悉貸款業務或現金流分析,便會知道在量化分析有一個十分基本的公式,是與付款期限、貸款金額、利率和分期付款相連的。
貸款金額,L = 總還款的現值
為了驗證每項貸款記錄是否合乎上述的公式,我們先假設loans_amount是未知的,並通過輸入相應的利率、分期付款和付款期限來計算它。如果發現計算出來的貸款金額結果跟loans_amount的值不一致,則意味著由於某種原因,貸款金額的價值在審查階段中被調整了。由於缺乏這些資訊,所以把這些不一致的記錄消除掉。由此可見,
如果盲目地將所有Data
Fields作為模型的輸入,而不考慮業務性質和流程,那麼造出來的Auto-engine將會是英雄無用武之地。
此外,擁有業務領域知識有時可以幫助你不懂任何統計計算的情況下,確定某些因素之間的關係。像是貸款實際利率是多少,是根據貸款的評級作指標。對於那些更差的等級,其利率應該需要更高,以補償違約風險。此外,分期付款應與貸款數額也有密切相關,相信這也是很直觀的。在這種情況下,如果有需要降低維度,只要選擇最有代表性的變數來建立Model就好了。
作為一名專業而優秀的數據科學家,瞭解和熟悉業務流程和數據都是必要的,作為技術與業務或其他部門的橋樑。事實上,我們很少看到一些成功的數據科學家無需從業務角度考慮和管理持分者的期望和要求,便能夠設計和推行一個成功可行的數據科學解決方案。更重要的是,在
CRISP-DM 流程中、業務和數據理解始終是第一步。儘管模型具是多麼的完美和精準,一旦無法在業務環境中實現出來,解決業務上的難題,它最終只會被視為一個完美的失敗作。
Comments
Post a Comment