Plaid的API可幫助開發(fā)人員為北美數(shù)以千萬計(jì)的消費(fèi)者提供金融服務(wù)。這些服務(wù)幫助消費(fèi)者管理他們的個(gè)人財(cái)務(wù),讓他們轉(zhuǎn)移資金和付款,并允許他們獲得貸款和抵押貸款。我們的使命是通過提供對(duì)金融系統(tǒng)的訪問來改善人們的生活。
我們不僅通過幫助消費(fèi)者訪問其財(cái)務(wù)數(shù)據(jù),而且通過提高數(shù)據(jù)質(zhì)量來實(shí)現(xiàn)這一使命。通過機(jī)器學(xué)習(xí)豐富數(shù)據(jù)是我們數(shù)據(jù)科學(xué)和基礎(chǔ)設(shè)施團(tuán)隊(duì)的目標(biāo)之一,在這篇文章中,我們還將討論我們團(tuán)隊(duì)建立的ML模型。
交易的待處理和已過賬(pending-posted)的難題
Plaid為傳統(tǒng)銀行的交易數(shù)據(jù)增加價(jià)值的一種方法是確定何時(shí)發(fā)布來自消費(fèi)者賬戶的待處理交易。當(dāng)銀行正在處理消費(fèi)者的交易時(shí),交易正在等待銀行處理狀態(tài)中,在這個(gè)待處理期間,鈔票金額將從帳戶所有者的可用資金中扣除,但不會(huì)從帳戶余額中扣除。等交易結(jié)束后,交易才從“待處理pending”變?yōu)椤耙堰^賬posted”,已過賬posted的交易最終會(huì)完成,并且已從該帳戶余額中扣除。
當(dāng)Plaid拍攝帳戶快照時(shí),我們會(huì)收到一份包含說明、貨幣金額以及交易狀態(tài)是待處理還是已過帳的交易清單。雖然我們知道交易是否處于待處理狀態(tài),但銀行通常不會(huì)告訴我們先前快照中的哪些待處理交易與當(dāng)前快照中的新發(fā)布交易相對(duì)應(yīng)。這種匹配對(duì)客戶至關(guān)重要。如果他們向每個(gè)新交易的消費(fèi)者發(fā)送通知,那么重要的是他們不要接受到重復(fù)復(fù)通知。
不幸的是,通常不清楚銀行的哪些已發(fā)布的交易事務(wù)映射匹配到先前消費(fèi)組在商家的待處理的交易事務(wù)?一個(gè)常見的困難匹配問題是餐館賬單,當(dāng)消費(fèi)者的信用卡在餐館收取賬單時(shí),餐廳會(huì)啟動(dòng)待處理的交易,它不包括服務(wù)費(fèi)和小費(fèi)。一旦餐廳的收據(jù)被批量處理(通常在工作日結(jié)束時(shí)),他們通過在一個(gè)統(tǒng)一事務(wù)中來完成交易,這是事務(wù)交易成為已過賬posted狀態(tài)的時(shí)候。
在其他情況下,相應(yīng)的待處理和已過帳的交易可能看起來不同。酒店通常會(huì)將較高的待處理pending費(fèi)用作為暫緩incidental費(fèi)用的帳戶。一旦交易過帳,即可結(jié)算到實(shí)際的賬單金額。商家,支付處理商和金融機(jī)構(gòu)均可以更改這項(xiàng)交易的描述。
我們針對(duì)此問題的高級(jí)方法是構(gòu)建一個(gè)模型來預(yù)測(cè)這種可能性或匹配分?jǐn)?shù):來自銀行和消費(fèi)組的兩筆的待處理和已過賬的交易是否是同一筆?如果待處理的事務(wù)從一個(gè)帳戶快照到下一個(gè)帳戶快照時(shí)消失,我們會(huì)將其與新快照上顯示的“最有可能”的已發(fā)布交易進(jìn)行匹配。當(dāng)匹配得分高于某個(gè)閾值時(shí),貪婪地繼續(xù)匹配。
問題的關(guān)鍵是選擇一個(gè)模型來確定這個(gè)匹配分?jǐn)?shù)。
決策樹算法
為了解決這個(gè)問題,我們最初考慮的規(guī)則會(huì)告訴我們一個(gè)特定的待處理和已發(fā)布交易的匹配程度。以下是匹配餐館發(fā)起的待處理和已發(fā)布交易的示例規(guī)則的直觀表示:
這種基于規(guī)則的方法稱為決策樹,它對(duì)獨(dú)立變量的空間進(jìn)行分段,如有關(guān)事務(wù)的信息,并嘗試查找可能與匹配事務(wù)相對(duì)應(yīng)的此空間區(qū)域。雖然上述可視化中的決策樹輸出布爾預(yù)測(cè),但決策樹通常用于更強(qiáng)大的機(jī)器學(xué)習(xí),包括在我們的模型中,而是輸出可能性的預(yù)測(cè)。
用于訓(xùn)練決策樹的算法,在實(shí)踐中很少使用獨(dú)立樹。這是因?yàn)樗麄儍A向于學(xué)習(xí)訓(xùn)練數(shù)據(jù)背后的噪聲而不是數(shù)據(jù)中的基礎(chǔ)關(guān)系。決策樹可能錯(cuò)誤地了解了無關(guān)緊要的交易描述,因?yàn)楹芏嘞嗷ゲ黄ヅ涞氖聞?wù)卻具有相似的交易描述。此問題稱為過度擬合。
過度擬合
過多的模型復(fù)雜性導(dǎo)致過度擬合,因?yàn)樗试S模型扭曲到訓(xùn)練數(shù)據(jù)。
過度擬合被稱為“高方差”,因?yàn)檫^度擬合模型強(qiáng)烈依賴于訓(xùn)練數(shù)據(jù),輸入的微小變化將導(dǎo)致預(yù)測(cè)的大的變化。
另一方面,變量不足和模型復(fù)雜性不足導(dǎo)致欠擬合,其中模型太不靈活,無法在訓(xùn)練數(shù)據(jù)中找到有意義的關(guān)系。欠擬合被稱為“高偏差”,因?yàn)榍放浜夏P途哂酗@著的系統(tǒng)預(yù)測(cè)誤差或偏差。
數(shù)據(jù)科學(xué)的一個(gè)基本挑戰(zhàn)是偏差 - 方差權(quán)衡。不小心增加模型復(fù)雜性會(huì)導(dǎo)致更高的方差和更低的偏差。如果我們的模型完全基于偏差測(cè)量(例如訓(xùn)練集的準(zhǔn)確度)進(jìn)行優(yōu)化,那么它們將傾向于過度擬合。
Bagging
為了解決待發(fā)布的匹配問題而不過度擬合,我們的第一個(gè)模型使用bagging裝袋和feature?特征采樣增強(qiáng)了決策樹的概念。讓我們先來討論bagging,這是指bootstrap?aggregating。
“Bootstrapping”是在訓(xùn)練數(shù)據(jù)的隨機(jī)樣本上訓(xùn)練模型的過程。通過限制訓(xùn)練過程中使用的數(shù)據(jù)量,bootstrapping?通過在訓(xùn)練期間提供不同的噪聲分布來對(duì)抗過度擬合。
“Aggregating”是組合許多不同引導(dǎo)模型的過程。對(duì)于bootstrapping?樹,聚合過程通常通過計(jì)算樹預(yù)測(cè)的可能性的平均值來對(duì)樹“投票”。由于訓(xùn)練子集是隨機(jī)采樣的,因此決策樹仍然平均適合數(shù)據(jù)集,但投票給出了更穩(wěn)健的預(yù)測(cè)。
結(jié)合Bootstrapping和Aggregating結(jié)果進(jìn)行bagging裝袋。
如果組件模型不相關(guān),則bagging裝袋模型會(huì)更多地減少差異。然而,僅對(duì)不同的訓(xùn)練數(shù)據(jù)樣本進(jìn)行Bootstrapping通常會(huì)導(dǎo)致樹具有高度相關(guān)的預(yù)測(cè),因?yàn)樽罹咝畔⑿缘姆种б?guī)則在采樣的訓(xùn)練數(shù)據(jù)中通常是相似的。例如,由于交易描述是未處理和已過程交易是否匹配的強(qiáng)有力指標(biāo),因此我們的大多數(shù)樹木將嚴(yán)重依賴此指標(biāo)。在這種情況下,bagging裝袋的能力有限,可以減少整體模型的差異。
這是特征抽樣的來源。
隨機(jī)森林
為了減少樹的相關(guān)性,我們的模型除了隨機(jī)抽樣訓(xùn)練數(shù)據(jù)外,還隨機(jī)抽樣特征,產(chǎn)生隨機(jī)森林。作為數(shù)據(jù)科學(xué)家工具包的主要成分,隨機(jī)森林是具有低過度擬合風(fēng)險(xiǎn),高性能和高易用性的強(qiáng)大預(yù)測(cè)因子。
這是Plaid多年來用于匹配待處理和已發(fā)布交易的模型。隨著時(shí)間的推移,這種方法被證明是有效的,但并不是很好:當(dāng)我們根據(jù)人類標(biāo)記數(shù)據(jù)評(píng)估模型時(shí),我們注意到了高假陰性率。我們需要改進(jìn)模型,以便更可靠地找到匹配項(xiàng)。
當(dāng)隨機(jī)森林失敗時(shí)
隨機(jī)森林和一般的bagging裝袋易受不合適的不平衡數(shù)據(jù)集的影響。我們對(duì)從待處理pending到已過賬posted匹配的隨機(jī)森林模型遇到了這個(gè)問題。由于每個(gè)待處理交易在訓(xùn)練集中最多只有一個(gè)已發(fā)布的事務(wù),因此大多數(shù)待處理和已過賬交易的候選對(duì)都不匹配。這意味著我們的訓(xùn)練集存在不平衡,其中絕大多數(shù)數(shù)據(jù)“不匹配”;?因此,我們的隨機(jī)森林模型錯(cuò)誤地預(yù)測(cè)了較低的匹配概率,從而導(dǎo)致較高的假陰性率。
Boosting
為了解決這個(gè)問題,我們使用了boost。Boosting將決策樹限制為簡(jiǎn)單形式 - 例如,樹不是很深 - 以減少整體模型的偏差。增強(qiáng)算法迭代地探索訓(xùn)練數(shù)據(jù),添加最大限度地改善聚合模型的受限樹。與bagging裝袋一樣,樹的投票決定最終的決定。
從這個(gè)過程我們最終了解到,改善少數(shù)情況下的性能 - 匹配的交易對(duì) - 將最大化模型提升。該算法深入研究了識(shí)別該情況的條件,通過精心調(diào)整的超參數(shù),我們終于看到了我們的假陰性率的重大改進(jìn)。
boosting的另一個(gè)優(yōu)點(diǎn)是能夠在訓(xùn)練期間靈活地定義“模型改進(jìn)”度量。通過對(duì)誤報(bào)和漏報(bào)分配不對(duì)稱懲罰,我們訓(xùn)練了一個(gè)模型,更加符合這些模型錯(cuò)誤如何不對(duì)稱地影響消費(fèi)者。
結(jié)果
與隨機(jī)森林模型相比,我們新的增強(qiáng)模型將假陰性率降低了96%,最終為我們的客戶和消費(fèi)者提供了更高質(zhì)量的交易數(shù)據(jù)。除了內(nèi)部指標(biāo)改進(jìn)之外,我們還看到客戶提交的有關(guān)待處理到期交易票據(jù)顯著減少。
必須了解機(jī)器學(xué)習(xí)模型原型的特征如何導(dǎo)致不同的優(yōu)點(diǎn)和缺點(diǎn)。雖然我們的新模型在我們提供的數(shù)據(jù)質(zhì)量方面取得了重大進(jìn)步,但它還是有自己的權(quán)衡。Boosting對(duì)模型改進(jìn)度量以及限制樹必須簡(jiǎn)單的其他超參數(shù)敏感。在這種情況下,改善的消費(fèi)者體驗(yàn)非常值得仔細(xì)的培訓(xùn)程序和細(xì)致的調(diào)整。
還有更多我們還沒有探索。例如,考慮到我們使用大量的分類變量,哪種提升算法最好?鑒于我們每天有四分之一的美國(guó)人使用銀行賬戶處理交易多次,我們?nèi)绾未_保我們的匹配算法足夠快以便跟上?鑒于難以解釋和解釋其輸出背后的推理,深度神經(jīng)網(wǎng)絡(luò)對(duì)于這個(gè)問題是否值得投資?
評(píng)論