反欺詐(Fraud Detection)中所用到的機器學習模型有哪些?

範圍並不僅限於信用卡詐騙或者電信詐騙,也可以分享類似模型如異常發現模型(Anomaly Detection),或實用功能像黑名單傳播模型和白名單傳播模型。

在實際應用中,如何可以構建出實用的反欺詐模型?


反欺詐方向的實際應用很多,我有做過保險業反欺詐和零售快消業的欺詐檢測,拋磚引玉的談談反欺詐項目的"道""術"。

該回答的第一部分(1)討論了為什麼欺詐檢測難度很大,第二部分(2-4)討論了a. 數據可視化 b. 一些常用的演算法及模型 c. 欺詐點驗證,第三部分(5)歸納並提出了一個反欺詐模型的通用框架供大家參考。

--------------------------------------------------------------------------------------------------------------------

1. 背景 - 為什麼反欺詐檢測難度很高?

反欺詐項目很多情況下就是客戶根本不知道什麼是欺詐,什麼不是。換句話說,對於什麼是詐騙的定義很模糊。往小了說,反詐騙似乎是一個二分類問題(binary classification),但你仔細想想後會發現其實這是個多分類問題(multi-class classification),如果你把每種不同詐騙當做一種單獨的類型。而單一類型的詐騙幾乎是不存在的,且詐騙的手段日新月新總在變化。即使像銀行還有保險公司這種常年和詐騙打交道的行業,也必須常常更新自己的檢測手段,而不是把賭注壓到同一個模型上。

除此之外,欺詐檢測一般還面臨以下問題:

  • 九成九的情況數據是沒有標籤(label)的,各種成熟的監督學習(supervised learning)沒有用武之地。
  • 區分噪音(noise)和異常點(anomaly)時難度很大,甚至需要發揮一點點想像力和直覺。
  • 緊接著上一點,當多種詐騙數據混合在一起,區分不同的詐騙類型更難。根本原因還是因為我們並不了解每一種詐騙定義。
  • ...

退一步說,即使我們真的有詐騙的歷史數據,即在有標籤的情況下用監督學習,也存在很大的風險。用這樣的歷史數據學出的模型只能檢測曾經出現過與歷史詐騙相似的詐騙,而對於變種的詐騙和從未見過的詐騙,我們的模型將會無能為力因此,在實際情況中,我不建議直接用任何監督學習,至少不能單純依靠一個監督學習模型來奢求檢測到所有的詐騙。

這就陷入了一個雞生蛋蛋生雞的死循環,因為沒有歷史標籤和對詐騙的理解,我們無法做出能對詐騙細分的模型。因此我們一般使用無監督學習(unsupervised learning),且需要領域專家(domain experts)也就是對這個行業非常了解的人來驗證我們的預測,提供反饋,以便於及時的調整模型。

2. 反欺詐項目的操作順序(1) - 可視化

一般在拿到數據以後,我會推薦以下步驟進行分析。當然,一個答案很難包括所有常見的操作,僅僅是分享個人經驗以供思考。

數據可視化 - 相關矩陣(Correlation Matrix) 多維尺度變換(Multidimensional Scaling)

人是視覺動物,可以在第一時間「看到」數據中存在的問題。因此,對於大部分反欺詐問題,我建議至少要做以下兩個可視化嘗試:

2.1.首先對不同的特徵(feature)做一個相關矩陣分析並可視化分析相關矩陣的目的是告訴我們特徵兩兩之間的關係,以便於我們快速發現一些數據裡面可能存在的問題。最重要的是幫助我們檢查數據是否存在問題,有沒有什麼違反常理的情況。

以我最近在寫的文章為例(並不是反欺詐問題),對不同偶像團體是否能夠繼續走紅進行預測。我們希望不同特徵之間的兩兩關係符合嘗試, 我在模型裡面用了6個不同的特徵並計算相關矩陣:

通過上表及下圖,我們發現:

  • 團員的平均的年齡和演唱會次數無關。
  • 出道長度和和演唱會次數為負相關。

舉例,如果我們發現出道年限和專輯數呈負相關,這就違反了常識。按照常識出道時間越長專輯數應該越多,因此需要認真檢查為什麼會有這樣的情況發生,是否是潛在問題。

2.2. 多維尺度變換(MDS)來直接可視化數據分布

我們都知道一般來說欺詐和正常數據應該「長得不一樣」,那是否可以直接把它們畫出來來分析。

然而,數據可視化往往都是二維或者三維的,但現實往往是成百上千維。即使我們把一個特徵作為一個維度,我們最多也只能可視化三個維度。而多維尺度變換(MDS)可以將高維的數據在二維或者三維的框架裡面進行可視化,類似的數據點會更加接近。通過觀察數據點的分布,我們可以直觀的猜測數據是否有規律,是否存在潛在異常點。

以我最近做的一個項目為例,我們用MDS將一個8維的數據在2維上展示出來。我們似乎可以直觀的看到一些近似線性的關係,以及一些看起來「很可疑」的點,我在圖中標註了出來。

這樣做的好處有兩點:

  • 首先我們可以看到數據是否存在特定的特徵,如果所有的點都是隨機散亂分布,那我們的麻煩就大了。
  • 我們似乎可以看到有一些離群的數據點,這些點可能是潛在的「欺詐」,也有可能只是噪音而已。但我們可以向客戶或者老闆展示這個可視圖,向他們證明項目有潛在的價值。

如果在可視化中我們看到了一些規律,這讓有信心繼續往下做,進入建模階段。多加一句,此處和主成分分析(PCA)也有異曲同工之妙。

3. 反欺詐項目的操作順序(2) - 演算法

一般我們對欺詐檢測做兩種假設:

  1. 時序相關(time dependent)。對於時序相關的問題,我們假設欺詐的發生依賴於時間,通過時間序列分析,我們可以發現異常的地方。舉例,假設一個人的信用卡平時1-11月每月消費2000美元,但12月突然消費了5000美元,此時時間就對我們的項目存在意義。
  2. 時序獨立(time independent)。對於時序獨立的問題,我們假設每一個欺詐都是獨立,和時間無關。於是在分析中,我們移除了時間這個特徵,我們不再把時間作為一個分析軸或者影響欺詐發生的特徵。

3.1. 時間序列分析(time series analysis)

時間序列分析展開說是很大的話題,從簡單的觀察一個時間序列是否穩定(stability)到更複雜的看多個特徵如何在時間上互相作用如 vector auto-regression(var)。

一般我們對時間序列重整使其穩定後,會進行一系列分析,最簡單的就是觀察什麼時候出現反常的spike(即突然上升)。

圖片來源(Anomaly Detection – Using Machine Learning to Detect Abnormalities in Time Series Data)

就像上圖所標註出來著一系列點都是潛在的異常點。嚴格意義上說,時間序列分析在金融經濟領域使用的更多,任何交易模型都需要時序分析。

另一種簡單的時序分析就是持續追蹤某個值的變化情況,並在多個數據中進行對比:

上圖是某種產品在不同零售商(不同顏色)的退貨情況,x軸是時間。我們會發現「橙色」的零售商的退貨模式更不穩定(前期有大量持續退貨),而「青色」的零售商退貨非常穩定。因此,"橙色"零售商似乎有些可疑。當然,這只是一種解讀方法,不代表一定有問題。

3.2. 時間獨立下的建模

3.2.1. 無監督學習

如果我們假設時間對於欺詐並沒有影響,那麼我們有很多無監督學習可以用來檢測異常值。

  1. 像某位答主提到的Isolation Forest就是一種非常穩定的演算法,是周志華老師提出的。而且在Sklearn裡面已經得到了實現。基本的原理就是一種集成學習,通過計算每個數據點需要多少次節點拆分(splitting)才能被劃分到獨立的空間。異常點因為和其他正常點離得較遠不大相似,因此更容易用很少的拆分就可以被划到獨立的空間裡面去。
  2. 各種Density Based的聚類方法(CBLOF)。此處需要注意,大家熟知的K-Means為原型的聚類,如K-Modes都不大適合用於異常值檢測,因為其本身很容易受到異常值和噪音的擾動。
  3. 各種以K近鄰(KNN)為原型的檢測方法。從本質上說,和聚類方法是比較類似的。

3.2.2. 統計學密度估計及分布測試

比較簡單的做法可以嘗試將數據擬合到假設的混合模型上(finite mixture models),再通過統計學測試檢查異常點、 一般不大推薦直接這麼做,因為需要對於正常數據分布的深刻了解,才能做出對於數據分布的正確推斷。

3.2.3. 監督學習

就像上文提到的,我不太建議直接用監督學習。當然,在特定場合下如果需要使用的話,比較出名的就是MetaCost框架,可以結合各種基礎學習器使用。

3.3. 時間相關及獨立的交叉驗證

其實很多問題不是非此即彼,換句話說,時間獨立和時間獨立可能找到相似的異常點。在項目允許的情況下,我們大可以將兩種時間假設都做一遍,之後求交集。若出現在交集中,我們對於該點是詐騙的信心會進一步上升。

4. 反欺詐項目的操作順序(3) - 如何驗證欺詐點?

假設我們通過上面的無監督學習得到了一些「潛在的欺詐點」,我們可以做一些分析來驗證它們是否真的是欺詐。首先我必須聲明,這種歸納是存在很大偏見的,但很難避免

舉例,我們可以對比異常值數據作為樣本(sample)與總體(population)的各項數據的統計值(如均值方差等),從統計學上證明它們是有顯著差異的。但有顯著差異並不代表他們一定是欺詐,只能說明它們不同。

當我們從統計學上證明其存在顯著差異後,我們就開始想要歸納潛在的欺詐原因。以某供貨商的數據為例,我們發現一個產品的進貨變多、退貨變少,但單位收益卻上升,這是有問題的。

於是我們就可以大膽的推測他的進貨和退貨不是同一種產品,即在退貨時用了比較便宜商品但拿到了更多的退貨錢。

把這個故事講給領域專家以後,他們會支持、質疑、甚至反對這個看法。根據領域專家的反饋,我們可以不斷的調整優化模型,期待發現更多的問題。有的時候,也可以直接叫領域專家來幫忙分析為什麼一些數據可能是欺詐。

5. 總結 - 如何構建可行的欺詐檢測方案?

首先,我們必須先要認清一個殘酷的現實: 單純依靠機器學習模型來檢測欺詐是愚蠢的。至少在現階段我們不能單純依靠純粹的數據模型來做這一點。比較折中且可行的方法是做 混合模型(hybrid model),也就是把人為規則和機器學習模型合二為一,一起來使用

首先我們通過對領域專家的訪談和對歷史數據的分析,可以得到一些非常可靠的評判標準。以保險行業為例,如果一個人剛買短期保險沒兩天就意外身亡,這存在欺詐的風險就很高。這樣的標準或許從機器學習中可以學到,或許學不到。如果有成本更低方法做到更好的效果,不要迷信全自動模型。

總結來說,反欺詐模型難度很高,而且需要和領域專家一起協作才能有最好的結果。機器學習從業者千萬不要閉門造車,試圖自己靠調參就搞個大新聞。

我個人推薦的步驟是:

  1. 對數據進行必要的可視化,如MDS
  2. 同時考慮時間是否是重要因素,如果是那麼進行時序分析
  3. 用無監督學習得到一些可能的異常點,如Isolation Forests
  4. 通過統計學方法分析得到的異常點是否有顯著的不同,有特徵可供我們研究
  5. 歸納特徵並構造一個故事,與領域專家共同驗證故事的可靠性
  6. 重複1-5直到被派到下一個項目上搬磚,爭取找到盡量多有效的欺詐
  7. 構造[規則+機器學習]的混合模型,進一步調參優化模型

鑒於篇幅,很多有趣的做法都沒法詳談,比如時間序列上的聚類和半監督異常檢測,有興趣的朋友可以繼續深入挖掘。

--------------------------------------------------------------------------------------------------------------------

安利一下自己的專欄文章:

1. 帶你了解機器學習(一): 機器學習中的「哲學」

2. 帶你了解機器學習(二): 機器學習中的amp;amp;amp;amp;amp;amp;amp;quot;穩定性amp;amp;amp;amp;amp;amp;amp;quot;

3. 帶你讀機器學習經典(一): An Introduction to Statistical Learning (Chapter 1amp;amp;amp;amp;amp;amp;amp;amp;2)

4. 帶你讀機器學習經典(二): An Introduction to Statistical Learning (Chapter 3.1 線性回歸


欺詐行為相對多變複雜,在實際業務場景中通常會針對不同的欺詐類型和應用場景,選取合適的數據進行建模分析。

常用的數據類型有多維數據,關係網路,文本,序列等。其中,關於多維數據的異常檢測可以找到許多相關資料,因此這裡我們更多介紹一些關係網路、文本、序列相關的反欺詐模型。

一、關係網路

圖模型是在反欺詐領域中廣泛應用的一類模型。通過用戶註冊、激活、登錄、下單等環節收集到的賬戶、設備信息,我們可以構建出用戶間不同的關係網路,從中發現欺詐的跡象和線索。

其中一種使用這些關係網路的方法是,識別網路中異常的網路結構和社群。常用的社群挖掘方法有Walktrap, InfoMap, FastGreedy 等,這類模型通過識別緊密關聯的社群結構找出潛在的欺詐客群,通常在刷單識別和套現識別的場景中有非常高的準確度。

另一種思路是通過好壞用戶的網路關係進行傳播,可以使用標籤傳播演算法(Label Propagation),傳染病學模型(SIR Model), 以及概率圖模型(MRF, CRF等)。感興趣的知友可以參考今年ASONAM上的Graph assisted semi supervised learning for fraudulent detection (下載鏈接),文章詳細介紹了如何使用"用戶-商戶"網路進行準確的欺詐推斷。

二、文本挖掘

文本挖掘在電商場景中較為常用。通過使用主題模型(LSA, LDA,FastText,Word2Vec等),可以準確的識別異常的套現黑中介的收貨地址,或者通過挖掘商品評論識別刷單的訂單。另外基於欺詐訂單文本的特徵,可以單獨設計相關模型,這類定製化的模型通常會比通用模型有更好的效果。

三、序列挖掘

最近一段時間的反欺詐模型也有向序列挖掘發展的趨勢。基於用戶的歷史瀏覽行為、點擊偏好、設備使用偏好等,建立一些淺層神經網路抽取用戶的行為指紋,當用戶賬戶被盜時,通過分析用戶操作行為指紋的改變及時識別賬戶異常。

整體來看,欺詐和反欺詐是一個動態博弈的過程,針對不同的欺詐模式,需要靈活使用不同的數據和模型進行防控。

本文作者:消費者金融部-風險管理部 孫毅衡


本質上還是需要從風險角度考慮這個問題, 也要從services, channels等劃分成細緻的部分處理.
首先需要認識到的是one size fits all是絕對不可能的, 於是多個scenario共同監管是很有必要的.
其次完全的監督和非監督學習都是不靠譜的. 既要有強力的演算法做outlier detection之類的數據挖掘,也要有龐大的人工團隊做label...理由?按照AML一位前同事的說法,就是業務場景的複雜性導致純粹的機器學習和數據挖掘只能看到冰山的一角.沒有risk manager以及人工團隊, 大體上只能自嗨.
至於演算法層面, 除了什麼時序 聚類 分類 異常值檢驗 變點分析 高維數據分析 核估計 生存分析, 結合之上說的, reinforcement model, due diligence, business intelligence, customer behavior也是發展方向.


不同的行業背景對應不同的應用場景,反欺詐的模型設計也很不一樣。

對此,我們可以先將大問題拆解為兩個小問題:

  • 如何將「反欺詐問題」轉化為「用機器學習解決的問題」?
  • 針對轉化後的問題「我們有哪些機器學習模型可以選擇」?

拆解完問題後,下面將搭配實際案例進行解說。

問題(1):如何將「反欺詐問題」轉化為「能用機器學習解決的問題」?

以「小額貸款/信用卡貸款」類金融業務為例

問題:該類業務是金融行業的核心業務,在該場景中,企業關注的關鍵問題其實是「用戶是否會還貸,以及是否逾期還貸」。

數據:對此,我們需要收集各種能從側面暗示用戶是否逾期還貸的信息。如銀行流水、消費記錄(raw features)等作為特徵,是否有逾期記錄作為標籤(label)。

評價指標:一般100個用戶才有1個用戶不還貸,以「準確率」來衡量意義不大。通常,我們經常會採用AUC指標進行衡量(PR-AUC/ROC-AUC)。

結論:該問題最終就轉化為「以AUC為評價指標的機器學習問題」

說明:

  • 商業中反欺詐問題非常複雜,純靠機器學習模型其實遠不夠。
  • 如何選擇評價指標可參考精確率、召回率、F1值、ROC、AUC各自的優缺點是什麼?

問題(2):針對轉化後的機器學習問題「我們有哪些機器學習模型可以選擇」?

還是以小額貸款/信用卡貸款業務為例。因經常需要給客戶不予以貸款的緣由,故對模型的可解釋性要求比較高,通常會選擇邏輯回歸模型、決策樹模型等模型

而在該領域內的數據競賽中,高分選手最常用的模型是:特徵工程+ XGBoost,LightGBM,GBDT+ 集成。大量的實踐比賽已證明這三個模型的效果非常理想,若進步加權集成,效果將更加顯著,遠勝Kmeans、Logistic Regression、DT、SVM等老牌模型。幾乎所有的非圖像、文本的數據競賽領域的獲獎選手都會使用。

當然,實際應用中還需根據具體問題開展具體分析。如若數據是時間序列相關的,可以嘗試時間序列模型等。

了解機器學習模型後,最好能藉助真實業務數據來驗證機器學習模型的效果

作為個人,通常很難獲取得到相關業務數據。科賽網目前聚集了數萬名專業數據科學家通過「問題設計+開放數據集+提供K-Lab在線數據分析協作平台+數據競賽平台支持」模式,持續為互聯網金融、通信等領域內的企業提供數千份數據演算法、數據產品方案(包括平安、聯通、華為、攜程、拍拍貸等)。因此,平台上沉澱了非常多的優質數據集、數據競賽作品。

以平台上發布的「王牌獵手」懸賞令—金融壹賬通前海徵信金融反欺詐創新大賽為例這是國內首個利用「遷移學習」來解決反欺詐問題的數據競賽,思路非常新穎、有趣。期間,所有遷移學習模型的方法都能進行嘗試。有興趣的不妨登錄科賽網查看競賽內容,在線使用數據集,邊學習相關知識,邊建模驗證。也可以欣賞本次參賽選手公開分享的作品,與選手在線交流,加深理解。

查看路徑

登錄「kesci.com」- 點擊「比賽」- 點擊「瀏覽作品」-在搜索框內輸入關鍵詞「前海」即可查看。


反欺詐和風控領域主要存在的幾個問題: 問題定義難、標註成本高、黑樣本少或無,白樣本存在雜訊、異常原因不好查明、並且欺詐者手段在進化。

所以就出現各式各樣的方法,從不同的角度想解決上述問題

個人建議關注點放在業務上而不是具體的模型(No Free Lunch)。難點在於如何挑選合適的方法去解決各環節所遇到的問題。

以下是我們進行欺詐識別的一些經驗

一、確定目標和問題拆解

這一步很關鍵,需要花大量時間去準備,並決定了後續方案選型和最終的效果

比如以識別羊毛黨為例,該問題可以拆解成:

- 具有欺詐性質羊毛黨(即黑產)

- 低質量用戶

- 眾包作弊

二、方案選型

根據問題以及現有建模材料選擇方案

2.1 規則 / 模型 : 評估問題難度,若通過幾個因素就可以較準確的識別,則使用人工規則(例如簡訊轟炸)。若決定的因素較複雜,則使用機器學習(機器學習需要較大的資源)。

2.2 單模型 / 多模型 : 評估上述問題是建立一個大模型,還是針對每一個子問題單獨建模。這取決於各個子問題相似性、輸出目標。

2.3 根據目前建模材料的儲備,確定問題起點:

  1. 有大量標記的訓練數據: 採用有監督學習,例如可解釋性強的LR;黑箱組合模型:Bagging(Random Forest)、Boosting(XGBoost, GBM)、Stacking(實際環境中訓練數據可能存在不少雜訊,Random Forest相比Boosting方法對雜訊具有更強的魯棒性)。
  2. 有大量單類標記的數據,以及少量標記的另一類樣本(若有):半監督學習
    1. 異常檢測:比如通過多數類訓練一個分布,用少數類確定閾值。
    2. PU Learning( Learning from Positive and Unlabeled Examples):例如one class sum 以及其他相關演算法
  3. 有少量標記的訓練數據:基於圖的半監督學習, 例如貝葉斯網路、標籤傳播等。
  4. 沒有訓練樣本:人機共同學習
    1. 利用已有經驗(若有):從經驗中提煉出強規則,通過規則進行識別。
    2. 提升經驗:通過無監督方法(例如GMM、isolationForest)識別異常,人工分析欺詐性質的異常點,從而提升對欺詐的認知和經驗。
    3. 反覆進行1、2,直至「收斂」,再根據訓練樣本情況採用前面幾種方案。

註:無監督結果不可控,缺乏解釋性,一般我們用於可以發現新的異常/模式,而不是直接建模。

三、特徵

特徵和數據決定上限,待更新

四、模型評估
3.1 評價指標:一般使用auc、f1、召回率、準確率

3.2 評價方法:分是否有客觀有標記的測試樣本

  1. 主觀評價: 在沒有標記的樣本下,只能做主觀的評價,即衡量模型學習到人經驗的程度。
  2. 客觀評價:通過客觀的標記樣本,一方面可以較為真實地評價模型的效果,另外也可以幫助模型優化。

五、各模型/方法比較

5.1 無監督聚類、異常檢測:結果不可控,缺乏解釋性,但是可以發現新的異常。比較流行的是:GMM、isolationforest、統計方法等。不過可以設計一個可解釋強的圖模型,使用圖分割演算法會有一定的收穫。

5.2 有監督分類:在訓練樣本充足的情況下,有監督絕對為王。如果模型需要可解釋性,LR是第一選擇,不過需要做較多的特徵工程才能達到一定的效果。黑箱模型的話,XGBoost、GBM、RF是比較流行的,還可以Stacking。

5.3 強規則/策略:可以快速上線,準確率高,但是對問題的召回率取決於規則制定者和問題難度。

5.4半監督:

  1. PU learning:雖然該類方法解決場景很match,但近兩年好像沒有新的研究,測的效果也一般。
  2. 圖論的相關傳播演算法:比如標籤傳播、基於貝葉斯網路等演算法。
  3. 人與機器共同學習:個人比較推崇的一種方法,機器學到的是人的經驗。而人藉助機器可以更有效率地提升對問題的認知,再把新的經驗作用到機器上,如此循環,直至收斂。

IsolationForest。欺詐等是一系列的異常孤立點,而IsolationForest則是檢測這類孤立點的一個有效演算法。
無需樣本標記、線性時間複雜度。一般情況下要比OneClasSVM等表現要好。尤其是對非高斯分布的樣本空間。

[1] Liu, Fei Tony, Kai Ming Ting, and Zhi-Hua Zhou. 「Isolation-Based Anomaly Detection.」 ACM Trans. Knowl. Discov. Data 6, no. 1 (March 2012): 3:1–3:39. doi:10.1145/2133360.2133363.
[2] Outlier detection with several methods.


反欺詐首先要縷清業務邏輯,對欺詐方法進行歸類,所謂知己知彼,你都不知道欺詐的邏輯,又談何反欺詐?另外,在知道欺詐邏輯的前提下進行人工規則的反欺詐,比如同ip帳號註冊這種看似簡單的方法如何處理,在知道了人工處理邏輯的基礎上才能根據具體業務邏輯進行機器學習的反欺詐,比較通用的邏輯回歸,但是有個很大的問題是在用該方法之前要有目標變數,也就是你有確定性的欺詐用戶數據。


舉兩個例子
第一個,黑名單積累足夠,我們綜合複雜網路提取社交特徵,補充到傳統特徵上面,然後上集成學習演算法。

第二個,基於交易行為欺詐樣本很少,我們用聚類加iforest綜合做了一個無監督模型;用有限的bad樣本檢查模型效果,然後調整後用疑似bad樣本再弄了個有監督模型。

總體上金融領域模型直接取代規則不現實,就像ai取代不了專家。靠譜的做法還是二合一,互相協作。


最近剛好在做相關的項目,花時間整理一些自己在這方面積累的經驗,希望能和大家互相交流,更多內容將更新在專欄中Analytics^2。

因為個人角色並不是追求最優化模型的數據科學家,所以在反欺詐建模的過程中感覺實施和選擇機器學習模型是相對不那麼花時間的過程。因為做這個項目的目標是先建立一個可用的模型,而不是嘗試各種方法找到最優化的模型,不過還是想簡單分享一下自己的經驗和想法。

從我的工作角度來看,做這個項目並不是參加數據科學競賽,花費一個星期的時間來調參測試模型來提高1%的模型表現數據意義並不大,至少在這個階段是這樣的情況,反而老闆很可能覺得我在偷懶,所以做任何項目還是要從實際情況出發來確定自己有多少時間精力來找出最優化的模型。

因為更熟悉R,在建模期間是以caret package為基礎的。附上caret
package的官方說明,https://topepo.github.io/caret/index.html 當中有一些很方便的內置函數能夠實現很多流行的機器學習演算法,而只需要改變一些簡單的參數。

在建模的過程當中,我的做法是:

第一步:從一個複雜的機器模型演算法(GBM, Random Forest, Neural Network…)開始,建模,調參,然後用合適的模型評價指標(什麼是合適的模型評價指標我們以後再說)來評價模型表現。

第二步: 用一個更加簡潔的演算法(Logistic
Regression,Decision Tree..)來建模,測試模型表現。

第三步:對比簡單和複雜模型的表現之間有沒有明顯的差異。如果沒有,那麼也許簡單的模型更好(取決於公司人員實際情況),因為你要彙報結果的人會更容易理解一個有公式輸出的模型,而不是機器學習的黑箱輸出。而且在公司準備運用你的模型的時候,一個有具體公式的模型在操作的難度上也更小一些。如果簡單和複雜的模型表現之間有明顯的差異,那也完全可以把簡單的模型當作是短期之內的可行方案,而複雜的模型作為長期待實現的方案,這樣可以給老闆更多選擇和權衡的機會。

而模型建成之後,應該怎麼日常更新呢?對於R來說,有一個RODBC的Package,可以直接連接SQL資料庫,這樣就可以省去讀取外部數據的步驟,更加節省時間。如果能夠把所有的步驟寫成一個整體的script函數,然後只需要更改更新時間來更新模型預測,就能更加自動化,節省更多不必要的時間。當然,如果實際工作需要每日更新模型預測,更明智的做法是把它設置成一個完全自動化的流程,這個可以通過Azure來實現,Azure可以直接連接R文件然後對接資料庫,模型的輸出就可以出現在運營人員的日常數據報告當中了,這就是更加自動化的解決方案。

這篇答案更多的是從我工作的需要出發,有關反欺詐更多的相關文章會更新在專欄Analytics^2,歡迎大家關注。


這東西不能拿出來公開討論,助長魔之力。

以使用機器學習檢測信用卡交易異常為例。用過去多年的交易來創建模型,異常指的是欺詐性交易。然後將此模型部署在一個支付系統中,讓它在檢測到異常時進行標記。這在短期內很有效,但是聰明的罪犯很快會認識到他們的詭計已被檢測到。他們會不斷調整,找到使用被盜信用卡信息的新方法。模型將無法檢測出這些新方法,因為生成該模型的數據中沒有包含這些方法。結果,模型有效性將下降。


基本的模型而言,就是多個attributes之間的關係。最重要的你的learning需要有乾淨的原始數據或者domain expert提供給你一些有效的正確的attributes之間的信息。如果業務邏輯不複雜,一般的PGM都夠用了,或者可以考慮RPM或者Relational Dependency Network。z


金融風險模型是很固定的,基本上就是各種基本統計/邏輯回歸/神經網路。關於數據挖掘的深入程度也就這樣。
困難在於怎麼選擇變數


推薦閱讀:

連續特徵的離散化:在什麼情況下將連續的特徵離散化之後可以獲得更好的效果?
參加kaggle競賽是怎樣一種體驗?
怎麼在 Excel 上做數據地圖?
數據挖掘入門基礎知識疑惑?
AI領域的灌水之風如何破局?

TAG:人工智慧 | 數據挖掘 | 統計學 | 機器學習 | 異常檢測 |