【待继续研究】如何运用机器学习技术构建可行的反欺诈检测方案?
反欺詐方向的實(shí)際應(yīng)用很多,我有做過保險(xiǎn)業(yè)反欺詐和零售快消業(yè)的欺詐檢測(cè),拋磚引玉的談?wù)劮雌墼p項(xiàng)目的"道"和"術(shù)"。
1.背景 - 為什么反欺詐檢測(cè)難度很高?
反欺詐項(xiàng)目很多情況下就是客戶根本不知道什么是欺詐,什么不是。換句話說,對(duì)于什么是詐騙的定義很模糊。往小了說,反詐騙似乎是一個(gè)二分類問題(binary classification),但你仔細(xì)想想后會(huì)發(fā)現(xiàn)其實(shí)這是個(gè)多分類問題(multi-class classification),如果你把每種不同詐騙當(dāng)做一種單獨(dú)的類型。而單一類型的詐騙幾乎是不存在的,且詐騙的手段日新月新總在變化。即使像銀行還有保險(xiǎn)公司這種常年和詐騙打交道的行業(yè),也必須常常更新自己的檢測(cè)手段,而不是把賭注壓到同一個(gè)模型上。
除此之外,欺詐檢測(cè)一般還面臨以下問題:
九成九的情況數(shù)據(jù)是沒有標(biāo)簽(label)的,各種成熟的監(jiān)督學(xué)習(xí)(supervised learning)沒有用武之地。
區(qū)分噪音(noise)和異常點(diǎn)(anomaly)時(shí)難度很大,甚至需要發(fā)揮一點(diǎn)點(diǎn)想象力和直覺。
緊接著上一點(diǎn),當(dāng)多種詐騙數(shù)據(jù)混合在一起,區(qū)分不同的詐騙類型更難。根本原因還是因?yàn)槲覀儾⒉涣私饷恳环N詐騙定義。
退一步說,即使我們真的有詐騙的歷史數(shù)據(jù),即在有標(biāo)簽的情況下用監(jiān)督學(xué)習(xí),也存在很大的風(fēng)險(xiǎn)。用這樣的歷史數(shù)據(jù)學(xué)出的模型只能檢測(cè)曾經(jīng)出現(xiàn)過與歷史詐騙相似的詐騙,而對(duì)于變種的詐騙和從未見過的詐騙,我們的模型將會(huì)無能為力。因此,在實(shí)際情況中,我不建議直接用任何監(jiān)督學(xué)習(xí),至少不能單純依靠一個(gè)監(jiān)督學(xué)習(xí)模型來奢求檢測(cè)到所有的詐騙。
這就陷入了一個(gè)雞生蛋蛋生雞的死循環(huán),因?yàn)闆]有歷史標(biāo)簽和對(duì)詐騙的理解,我們無法做出能對(duì)詐騙細(xì)分的模型。因此我們一般使用無監(jiān)督學(xué)習(xí)(unsupervised learning),且需要領(lǐng)域?qū)<?domain experts)也就是對(duì)這個(gè)行業(yè)非常了解的人來驗(yàn)證我們的預(yù)測(cè),提供反饋,以便于及時(shí)的調(diào)整模型。
2. 反欺詐項(xiàng)目的操作順序(1) - 可視化
一般在拿到數(shù)據(jù)以后,我會(huì)推薦以下步驟進(jìn)行分析。當(dāng)然,一個(gè)答案很難包括所有常見的操作,僅僅是分享個(gè)人經(jīng)驗(yàn)以供思考。
數(shù)據(jù)可視化 - 相關(guān)矩陣(Correlation Matrix) & 多維尺度變換(Multidimensional Scaling)
人是視覺動(dòng)物,可以在第一時(shí)間“看到”數(shù)據(jù)中存在的問題。因此,對(duì)于大部分反欺詐問題,我建議至少要做以下兩個(gè)可視化嘗試:
2.1.首先對(duì)不同的特征(feature)做一個(gè)相關(guān)矩陣分析并可視化,分析相關(guān)矩陣的目的是告訴我們特征兩兩之間的關(guān)系,以便于我們快速發(fā)現(xiàn)一些數(shù)據(jù)里面可能存在的問題。最重要的是幫助我們檢查數(shù)據(jù)是否存在問題,有沒有什么違反常理的情況。
以我最近在寫的文章為例(并不是反欺詐問題),對(duì)不同偶像團(tuán)體是否能夠繼續(xù)走紅進(jìn)行預(yù)測(cè)。我們希望不同特征之間的兩兩關(guān)系符合嘗試, 我在模型里面用了6個(gè)不同的特征并計(jì)算相關(guān)矩陣:
通過上表及下圖,我們發(fā)現(xiàn):
團(tuán)員的平均的年齡和演唱會(huì)次數(shù)無關(guān)。
出道長(zhǎng)度和和演唱會(huì)次數(shù)為負(fù)相關(guān)。
舉例,如果我們發(fā)現(xiàn)出道年限和專輯數(shù)呈負(fù)相關(guān),這就違反了常識(shí)。按照常識(shí)出道時(shí)間越長(zhǎng)專輯數(shù)應(yīng)該越多,因此需要認(rèn)真檢查為什么會(huì)有這樣的情況發(fā)生,是否是潛在問題。
2.2. 多維尺度變換(MDS)來直接可視化數(shù)據(jù)分布
我們都知道一般來說欺詐和正常數(shù)據(jù)應(yīng)該“長(zhǎng)得不一樣”,那是否可以直接把它們畫出來來分析。
然而,數(shù)據(jù)可視化往往都是二維或者三維的,但現(xiàn)實(shí)往往是成百上千維。即使我們把一個(gè)特征作為一個(gè)維度,我們最多也只能可視化三個(gè)維度。而多維尺度變換(MDS)可以將高維的數(shù)據(jù)在二維或者三維的框架里面進(jìn)行可視化,類似的數(shù)據(jù)點(diǎn)會(huì)更加接近。通過觀察數(shù)據(jù)點(diǎn)的分布,我們可以直觀的猜測(cè)數(shù)據(jù)是否有規(guī)律,是否存在潛在異常點(diǎn)。
以我最近做的一個(gè)項(xiàng)目為例,我們用MDS將一個(gè)8維的數(shù)據(jù)在2維上展示出來。我們似乎可以直觀的看到一些近似線性的關(guān)系,以及一些看起來“很可疑”的點(diǎn),我在圖中標(biāo)注了出來。
這樣做的好處有兩點(diǎn):
首先我們可以看到數(shù)據(jù)是否存在特定的特征,如果所有的點(diǎn)都是隨機(jī)散亂分布,那我們的麻煩就大了。
我們似乎可以看到有一些離群的數(shù)據(jù)點(diǎn),這些點(diǎn)可能是潛在的“欺詐”,也有可能只是噪音而已。但我們可以向客戶或者老板展示這個(gè)可視圖,向他們證明項(xiàng)目有潛在的價(jià)值。
如果在可視化中我們看到了一些規(guī)律,這讓有信心繼續(xù)往下做,進(jìn)入建模階段。多加一句,此處和主成分分析(PCA)也有異曲同工之妙。
3. 反欺詐項(xiàng)目的操作順序(2) - 算法
一般我們對(duì)欺詐檢測(cè)做兩種假設(shè):
1.時(shí)序相關(guān)(time dependent)。對(duì)于時(shí)序相關(guān)的問題,我們假設(shè)欺詐的發(fā)生依賴于時(shí)間,通過時(shí)間序列分析,我們可以發(fā)現(xiàn)異常的地方。舉例,假設(shè)一個(gè)人的信用卡平時(shí)1-11月每月消費(fèi)2000美元,但12月突然消費(fèi)了5000美元,此時(shí)時(shí)間就對(duì)我們的項(xiàng)目存在意義。
2.時(shí)序獨(dú)立(time independent)。對(duì)于時(shí)序獨(dú)立的問題,我們假設(shè)每一個(gè)欺詐都是獨(dú)立,和時(shí)間無關(guān)。于是在分析中,我們移除了時(shí)間這個(gè)特征,我們不再把時(shí)間作為一個(gè)分析軸或者影響欺詐發(fā)生的特征。
3.1. 時(shí)間序列分析(time series analysis)
時(shí)間序列分析展開說是很大的話題,從簡(jiǎn)單的觀察一個(gè)時(shí)間序列是否穩(wěn)定(stability)到更復(fù)雜的看多個(gè)特征如何在時(shí)間上互相作用如( vector auto-regression(var)。
圖片來源(Anomaly Detection-Using Machine Learning to Detect Abnormalities in Time Series Data)
就像上圖所標(biāo)注出來著一系列點(diǎn)都是潛在的異常點(diǎn)。嚴(yán)格意義上說,時(shí)間序列分析在金融經(jīng)濟(jì)領(lǐng)域使用的更多,任何交易模型都需要時(shí)序分析。
另一種簡(jiǎn)單的時(shí)序分析就是持續(xù)追蹤某個(gè)值的變化情況,并在多個(gè)數(shù)據(jù)中進(jìn)行對(duì)比:
上圖是某種產(chǎn)品在不同零售商(不同顏色)的退貨情況,x軸是時(shí)間。我們會(huì)發(fā)現(xiàn)“橙色”的零售商的退貨模式更不穩(wěn)定(前期有大量持續(xù)退貨),而“青色”的零售商退貨非常穩(wěn)定。因此,"橙色"零售商似乎有些可疑。當(dāng)然,這只是一種解讀方法,不代表一定有問題。
3.2. 時(shí)間獨(dú)立下的建模
3.2.1. 無監(jiān)督學(xué)習(xí)
如果我們假設(shè)時(shí)間對(duì)于欺詐并沒有影響,那么我們有很多無監(jiān)督學(xué)習(xí)可以用來檢測(cè)異常值。
1.像Isolation Forest就是一種非常穩(wěn)定的算法,是周志華老師提出的。而且在Sklearn里面已經(jīng)得到了實(shí)現(xiàn)。基本的原理就是一種集成學(xué)習(xí),通過計(jì)算每個(gè)數(shù)據(jù)點(diǎn)需要多少次節(jié)點(diǎn)拆分(splitting)才能被劃分到獨(dú)立的空間。異常點(diǎn)因?yàn)楹推渌|c(diǎn)離得較遠(yuǎn)不大相似,因此更容易用很少的拆分就可以被劃到獨(dú)立的空間里面去。
2.各種Density Based的聚類方法(CBLOF)。此處需要注意,大家熟知的K-Means為原型的聚類,如K-Modes都不大適合用于異常值檢測(cè),因?yàn)槠浔旧砗苋菀资艿疆惓V岛驮胍舻臄_動(dòng)。
3.各種以K近鄰(KNN)為原型的檢測(cè)方法。從本質(zhì)上說,和聚類方法是比較類似的。
3.2.2. 統(tǒng)計(jì)學(xué)密度估計(jì)及分布測(cè)試
比較簡(jiǎn)單的做法可以嘗試將數(shù)據(jù)擬合到假設(shè)的混合模型上(finite mixture models),一般不大推薦直接這么做,因?yàn)樾枰獙?duì)于正常數(shù)據(jù)分布的深刻了解,才能做出對(duì)于數(shù)據(jù)分布的正確推斷。
3.2.3. 監(jiān)督學(xué)習(xí)
就像上文提到的,我不太建議直接用監(jiān)督學(xué)習(xí)。當(dāng)然,在特定場(chǎng)合下如果需要使用的話,比較出名的就是MetaCost框架,可以結(jié)合各種基礎(chǔ)學(xué)習(xí)器使用。
3.3. 時(shí)間相關(guān)及獨(dú)立的交叉驗(yàn)證
其實(shí)很多問題不是非此即彼,換句話說,時(shí)間獨(dú)立和時(shí)間獨(dú)立可能找到相似的異常點(diǎn)。在項(xiàng)目允許的情況下,我們大可以將兩種時(shí)間假設(shè)都做一遍,之后求交集。若出現(xiàn)在交集中,我們對(duì)于該點(diǎn)是詐騙的信心會(huì)進(jìn)一步上升。
4. 反欺詐項(xiàng)目的操作順序(3) - 如何驗(yàn)證欺詐點(diǎn)?
假設(shè)我們通過上面的無監(jiān)督學(xué)習(xí)得到了一些“潛在的欺詐點(diǎn)”,我們可以做一些分析來驗(yàn)證它們是否真的是欺詐。首先我必須聲明,這種歸納是存在很大偏見的,但很難避免。
舉例,我們可以對(duì)比異常值數(shù)據(jù)作為樣本(sample)與總體(population)的各項(xiàng)數(shù)據(jù)的統(tǒng)計(jì)值(如均值方差等),從統(tǒng)計(jì)學(xué)上證明它們是有顯著差異的。但有顯著差異并不代表他們一定是欺詐,只能說明它們不同。
當(dāng)我們從統(tǒng)計(jì)學(xué)上證明其存在顯著差異后,我們就開始想要?dú)w納潛在的欺詐原因。以某供貨商的數(shù)據(jù)為例,我們發(fā)現(xiàn)一個(gè)產(chǎn)品的進(jìn)貨變多、退貨變少,但單位收益卻上升,這是有問題的。
于是我們就可以大膽的推測(cè)他的進(jìn)貨和退貨不是同一種產(chǎn)品,即在退貨時(shí)用了比較便宜商品但拿到了更多的退貨錢。
把這個(gè)故事講給領(lǐng)域?qū)<乙院?#xff0c;他們會(huì)支持、質(zhì)疑、甚至反對(duì)這個(gè)看法。根據(jù)領(lǐng)域?qū)<业姆答?#xff0c;我們可以不斷的調(diào)整優(yōu)化模型,期待發(fā)現(xiàn)更多的問題。有的時(shí)候,也可以直接叫領(lǐng)域?qū)<襾韼兔Ψ治鰹槭裁匆恍?shù)據(jù)可能是欺詐。
5. 總結(jié) - 如何構(gòu)建可行的欺詐檢測(cè)方案?
首先,我們必須先要認(rèn)清一個(gè)殘酷的現(xiàn)實(shí):?單純依靠機(jī)器學(xué)習(xí)模型來檢測(cè)欺詐是愚蠢的。至少在現(xiàn)階段我們不能單純依靠純粹的數(shù)據(jù)模型來做這一點(diǎn)。比較折中且可行的方法是做 混合模型(hybrid model),也就是把人為規(guī)則和機(jī)器學(xué)習(xí)模型合二為一,一起來使用。
首先我們通過對(duì)領(lǐng)域?qū)<业脑L談和對(duì)歷史數(shù)據(jù)的分析,可以得到一些非常可靠的評(píng)判標(biāo)準(zhǔn)。以保險(xiǎn)行業(yè)為例,如果一個(gè)人剛買短期保險(xiǎn)沒兩天就意外身亡,這存在欺詐的風(fēng)險(xiǎn)就很高。這樣的標(biāo)準(zhǔn)或許從機(jī)器學(xué)習(xí)中可以學(xué)到,或許學(xué)不到。如果有成本更低方法做到更好的效果,不要迷信全自動(dòng)模型。
總結(jié)來說,反欺詐模型難度很高,而且需要和領(lǐng)域?qū)<乙黄饏f(xié)作才能有最好的結(jié)果。機(jī)器學(xué)習(xí)從業(yè)者千萬不要閉門造車,試圖自己靠調(diào)參就搞個(gè)大新聞。
我個(gè)人推薦的步驟是:
1.對(duì)數(shù)據(jù)進(jìn)行必要的可視化,如MDS
2.同時(shí)考慮時(shí)間是否是重要因素,如果是那么進(jìn)行時(shí)序分析
3.用無監(jiān)督學(xué)習(xí)得到一些可能的異常點(diǎn),如Isolation Forests
4.通過統(tǒng)計(jì)學(xué)方法分析得到的異常點(diǎn)是否有顯著的不同,有特征可供我們研究
5.歸納特征并構(gòu)造一個(gè)故事,與領(lǐng)域?qū)<夜餐?yàn)證故事的可靠性
6.重復(fù)1-5直到被派到下一個(gè)項(xiàng)目上搬磚,爭(zhēng)取找到盡量多有效的欺詐
7.構(gòu)造[規(guī)則+機(jī)器學(xué)習(xí)]的混合模型,進(jìn)一步調(diào)參優(yōu)化模型
鑒于篇幅,很多有趣的做法都沒法詳談,比如時(shí)間序列上的聚類和半監(jiān)督異常檢測(cè),有興趣的朋友可以繼續(xù)深入挖掘。
總結(jié)
以上是生活随笔為你收集整理的【待继续研究】如何运用机器学习技术构建可行的反欺诈检测方案?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 反欺诈之地址的处理和使用
- 下一篇: 【不采用】人工智能如何帮助银行反欺诈