作者 | Meagvo
譯者 | 馬可薇
策劃 | 劉燕
二元分類中有一類情況,原始數(shù)據(jù)集中的兩個(gè)類出于問(wèn)題性質(zhì)的原因,導(dǎo)致其中數(shù)據(jù)點(diǎn)分布不平衡。舉例來(lái)說(shuō),在處理用戶流失(指用戶在一段時(shí)間之后不再繼續(xù)使用公司產(chǎn)品的情況)這類市場(chǎng)問(wèn)題預(yù)測(cè)時(shí),流失用戶所占的百分比一般都會(huì)遠(yuǎn)低于留存用戶的。如果說(shuō)這個(gè)例子里分類是八比二的話,那么只會(huì)有 20% 的用戶終止了與公司繼續(xù)接觸,剩下 80% 的用戶則會(huì)繼續(xù)使用公司產(chǎn)品。
但問(wèn)題是,這 20% 的用戶流失可能對(duì)公司非常的重要。
舉一個(gè)更形象的例子,一家禮品公司有 100,000 名顧客,每位顧客平均創(chuàng)造 50 美元的價(jià)值,那么這些顧客全部加起來(lái)就是 5,000,000 美元。如果說(shuō)其中有 20% 的用戶放棄繼續(xù)購(gòu)買產(chǎn)品,那么公司將損失 1,000,000 美元!日積月累這些金額甚至可以讓最大的電子商務(wù)公司或?qū)嶓w店汗顏。因此,公司營(yíng)銷部門的一個(gè)主要任務(wù)就是預(yù)測(cè)客戶的流失,并提前做出干預(yù)措施以防止其發(fā)生。
用于預(yù)測(cè)客戶流失的機(jī)器學(xué)習(xí)
如果你所在公司有優(yōu)秀的數(shù)據(jù)科學(xué)或數(shù)據(jù)分析團(tuán)隊(duì),那么恭喜你,一個(gè)優(yōu)秀的客戶流失預(yù)測(cè)模型可以讓你搶先一步預(yù)測(cè)用戶的忠誠(chéng)度,在他們放棄公司產(chǎn)品之前采取措施,甚至還可能為公司保住客戶資源。
但在處理這類二元分類模型時(shí),樣本數(shù)量不平衡的兩個(gè)類別通常會(huì)讓事情變得棘手,而大多數(shù)的數(shù)據(jù)分析師所依賴的精度指標(biāo)也并不是萬(wàn)能的。為此,本文將回顧 Koo Ping Shuang 發(fā)在 Towards Data Science 上 另一篇文章【另一篇文章】中所提到的各類機(jī)器學(xué)習(xí)性能評(píng)估中可用的各類指標(biāo),并從中選擇合適不平衡二元分類問(wèn)題的指標(biāo)進(jìn)行分析。
什么是精度?
精度= 所有正確預(yù)測(cè) / 全部預(yù)測(cè)
精度計(jì)算了所有預(yù)測(cè)中正確所占的比例,直覺告訴我們這么算確實(shí)沒問(wèn)題,可是到了不平衡數(shù)據(jù)集上,情況就變得復(fù)雜了……
舉例來(lái)說(shuō),你從市場(chǎng)部那邊拿到了過(guò)去一年的客戶流失情況數(shù)據(jù)。去年總共有十萬(wàn)的客戶,其中有兩萬(wàn)的客戶流失了?,F(xiàn)在,如果說(shuō)我們預(yù)測(cè)全部的十萬(wàn)客戶都留存到了年底,這就意味著你的精度是 80,000/100,000,足足有 80%!但實(shí)際上你一個(gè)客戶流失都沒有預(yù)測(cè)到。假如分類再極端一點(diǎn),90 比 10 的客戶留存,我們還是預(yù)測(cè)沒有任何客戶流失,那么我們將擁有一個(gè) 90% 精度的模型,但卻一個(gè)流失案例都沒有預(yù)測(cè)到。
最終,我們拿著 90% 的模型卻只能“四顧心茫然”。
那么,要怎么解決這個(gè)問(wèn)題呢?
除了精度之外,我們還有其他用于衡量模型性能的指標(biāo),本文中我們將重點(diǎn)關(guān)注以下三種:
精準(zhǔn)度
召回率
F 值
精準(zhǔn)度
精準(zhǔn)度 = 真正 / (真正 + 假正)
精準(zhǔn)度(Precision)的算法相比精度來(lái)看并不是很清晰,精準(zhǔn)度可以告訴我們的模型與預(yù)期目標(biāo)間的距離有多遠(yuǎn)。成功的預(yù)測(cè)將為模型加分,而失敗的預(yù)測(cè)也會(huì)有一定的扣分。因此,如果我們成功預(yù)測(cè)到了所有的二萬(wàn)用戶流失,也就是兩萬(wàn)的真正,但同時(shí)也有兩萬(wàn)并沒有流失的客戶被模型混淆在了其中,那么這一點(diǎn)在精準(zhǔn)度里也會(huì)有所體現(xiàn):
沒有假正:20,000/(20,000+0)= 100%
有假正:20,000/(20,000+20,000)= 50%
假正在統(tǒng)計(jì)學(xué)中經(jīng)常被稱作是第一類錯(cuò)誤,是指被預(yù)測(cè)為正確的錯(cuò)誤樣本。如果你需要處理不平衡的數(shù)據(jù)集,并防止假正的出現(xiàn),那么精準(zhǔn)度將幫上大忙。舉例來(lái)說(shuō),我們要為確診癌癥的患者實(shí)施風(fēng)險(xiǎn)治療,但我們必須要確保接受治療的人是真正患病的,因?yàn)槿绻麑?duì)正常人實(shí)施這種治療手段的話,那么我們將背負(fù)惡名。這種情況下,我們會(huì)希望能將假正的樣本數(shù)目將到最小,提升模型精準(zhǔn)度。
召回率
召回率 = 真正 /(真正 + 假負(fù))
如果說(shuō)提高精準(zhǔn)度是為防止假正樣本,那么提升召回率(recall)則是為了降低假負(fù)的數(shù)量。在統(tǒng)計(jì)學(xué)中,假負(fù)被稱為第二類錯(cuò)誤,是指預(yù)測(cè)為陰性,實(shí)際為陽(yáng)性的案例。還是用之前的例子,如果我們成功預(yù)測(cè)出所有的流失客戶,沒有錯(cuò)過(guò)任何一個(gè),那么我們將擁有:
沒有假負(fù):20,000/(20,000+0)= 100%
如果我們錯(cuò)估了五千的客戶,那么召回率將下降,但計(jì)算式的分母不變,如下:
有假負(fù):15,000/(15,000+5,000)= 75%
如果你需要處理的數(shù)據(jù)集分類不平衡,且對(duì)找回所有問(wèn)題案例的需求迫切,那么召回率將會(huì)是個(gè)很好的評(píng)估標(biāo)準(zhǔn)。在我們的客戶流失預(yù)測(cè)例子中,我們就可以借此找出客戶中最有可能放棄購(gòu)買的客戶,并提前給他們發(fā)出郵件或消息通知。
這種情況中的假正可能也就是多發(fā)幾封郵件,你大概率也不會(huì)在意有五百個(gè)對(duì)產(chǎn)品非常忠誠(chéng)的客戶會(huì)受到多余郵件而造成的浪費(fèi),我們希望的是能通過(guò)消息提醒,保留住那些潛在的客戶流失。
F1 值
雖說(shuō)我們可能不會(huì)直觀地看出 F1 指標(biāo)的含義,但它應(yīng)該是最適合你的那個(gè)。
F1= 2 X (精準(zhǔn)度 * 召回率) / (精準(zhǔn)度 + 召回率)
可以說(shuō),F(xiàn)1 是精確度是召回率的組合,它可以幫你確定模型性能,并對(duì)假正和假負(fù)進(jìn)行賦權(quán)。如果你想了解更多,可參考 維基百科中的算法分解。
如果說(shuō)我們?cè)?2 萬(wàn)個(gè)目標(biāo)樣本中成功識(shí)別了 1.5 萬(wàn),但其中有五千是錯(cuò)判為正的負(fù),并且漏掉了五千個(gè)正樣本,那么你的 F1 應(yīng)該如下:
F1: 15,000 / (15,000+.5 (5,000+5,000) ) =75%
F1 算法最妙的點(diǎn)在于它可以在精確度和召回率找到巧妙的平衡點(diǎn)。
下一步
現(xiàn)在,通過(guò)一個(gè)不平衡數(shù)據(jù)集的例子分析,我們可以清楚發(fā)現(xiàn),準(zhǔn)確率并不一定是最好的評(píng)判標(biāo)準(zhǔn)。極端例子就是那個(gè) 90% 準(zhǔn)確率的模型,但卻在召回率或精確度上得分為零。以 Python 的邏輯回歸算法為例,以下幾種選項(xiàng)或許值得一看:
SMOTE。該軟件包允許用戶過(guò)量或過(guò)少取樣,以平衡分類間數(shù)量差異。
賦權(quán)邏輯回歸。通過(guò)選擇每個(gè)類別的權(quán)重,或直接根據(jù)類別分布平衡權(quán)重,我們可以設(shè)置真正、假正及假負(fù)的重要程度,從而對(duì)結(jié)果有更多的掌控。
總 結(jié)
即使是用 R 或 Python 進(jìn)行機(jī)器學(xué)習(xí)算法訓(xùn)練,在面對(duì)不平衡分類問(wèn)題時(shí)也難免會(huì)感到棘手。希望本文能夠幫助各位意識(shí)到數(shù)據(jù)分析中潛在的漏洞,以防出現(xiàn)邏輯上的謬誤。文章中主要的觀點(diǎn)有三:
精度并不是萬(wàn)能的
確定你的業(yè)務(wù)目標(biāo)
找平衡數(shù)據(jù)軟件包
https://towardsdatascience.com/why-my-model-with-90-accuracy-doesnt-work-685817a2b0e
關(guān)鍵詞: 為什么我的模型準(zhǔn)確率都 卻不起作用? 機(jī)器學(xué)習(xí)