Airbnb欺詐預測機器學習模型設計:準確率和召回率的故事

jopen 9年前發布 | 21K 次閱讀 機器學習

 

【編者按】 Airbnb 網站 基于允許 任何人將閑置的房屋進行長期或短期出租構建商業模式 來自房客或房東的欺詐風險是必須解決的問題。 Airbnb 信任和安全小組通過構建機器學習模型進行欺詐預測,本文介紹了其設計思想。假想模型是 預測某些虛擬人物是否為“反面人物”,基本步驟:構建模型預期,構建訓練集和測試集,特征學習,模型性能評估。其中特征轉換傾向于采用條件概率編碼(CP-coding),評估度量是準確率(Precision)和召回率(Recall),通常偏向于高召回率。

以下為全文內容:

在Airbnb網站上,我們專注于創造一個這樣的地方:一個人可以屬于任何地方。部分歸屬感來自于我們用戶之間的信任,同時認識到他們的安全是我們最關心的。

雖然我們絕大多數的社區是由友好和可靠的房東和房客組成,但仍然有一小部分用戶,他們試圖從我們的網站中(非法)獲利。這些都是非常罕見的,盡管如此,信任和安全小組還是因此而產生。

信任和安全小組主要是解決任何可能會發生在我們平臺的欺詐行為。我們最主要目的是試圖保護我們的用戶和公司免于不同類型的風險。例如:退款風險——一個絕 大多數電子商務企業都熟悉的風險問題。為了減少此類欺詐行為,信任和安全小組的數據科學家構建了不同種類的機器學習模型,用來幫助識別不同類型的風險。想 要獲得我們模型背后更多的體系結構信息,請參考以前的文章 機器學習風險系統的設計

在這篇文章中,我對機器學習的模型建立給了一個簡短的思維過程概述。當然,每個模型都有所不同,但希望它能夠給讀者在關于機器學習中我們如何使用 數據來幫助保護我們的用戶以及如何改善模型的不同處理方法上帶來一個全新的認識。在這篇文章中,我們假設想要構建一個這樣的模型:預測某些虛構的角色是否 是反面人物。

試圖預測的是什么?

在模型建立中最基本的問題就是明確你想要用這個模型來預測什么。我知道這個聽起來似乎很愚蠢,但很多時候,通過這個問題可以引發出其它更深層的問題。

即使是一個看似簡單的角色分類模型,隨著我們逐步深入地思考,也可以提出許多更深層的問題。例如,我們想要怎樣來給這個模型評分:僅僅是給當前新 介紹的角色還是給所有角色?如果是前者,我們想要評分的角色和人物介紹中的角色評分相差多遠?如果是后者,我們又該多長時間給這些角色評分呢?

第一個想法可能是根據人物介紹中給每個角色的評分來建立模型。然而,這種模型,我們可能不能隨著時間的推移動態地追蹤人物的評分。此外,我們可能會因為在介紹時的一些“好”的特征而忽略了潛在的反面人物。

相反,我們還可以建立這樣一個模型,只要他/她出現在情節里面就評分一次。這將讓我們在每個時間段都會有人物評分并檢測出任何異常情況。但是,考慮到在每個角色單獨出現的情況下可能沒有任何的角色類別發展,所以這可能也不是最實際的方法。

深思熟慮之后,我們決定把模型設計成介于這兩種想法之間的模型。例如,建立這樣一種模型,在每次有意義的事情發生的時候對角色進行評分,比如結交 新盟友,龍族領地占領等等。在這種方式下,我們仍然可以隨著時間的變化來跟蹤人物的評分,同時,對沒有最新進展的角色也不會多加評分。

Airbnb欺詐預測機器學習模型設計:準確率和召回率的故事

如何模擬得分?

因為我們的目的是分析每個時期的得分,所以我們的訓練集要能反映出某段時間某個角色的類別行為,最后的訓練數據集類似于下圖:

Airbnb欺詐預測機器學習模型設計:準確率和召回率的故事

與每個角色相關的時間不一定是連續的,因為我們關心的是那些有著重要事件發展的時間。

在這個實例當中,Jarden在3個不同的場合有著重要的角色發展并且在一段時間內持續擴充他的軍隊。相比之下,Dineas 在5個不同的場合有著重要的角色發展并且主管著4個龍族中心基地。

采樣

在機器學習模型中,從觀測數據中下采樣是有必要的。采樣過程本身很簡單,一旦有了所需要的訓練數據集,就可以在數據集上做一個基于行的采樣。

然而,由于這里描述的模型是處理每個角色多個時期的樣本,基于行采樣可能會導致這樣一種情況,即在建立模型的數據和用來驗證的數據之間,場景附加的人物角色被分離開。如下表所示:

Airbnb欺詐預測機器學習模型設計:準確率和召回率的故事

顯然這并不是理想的采樣,因為我們沒有得到每個角色的整體描述,并且這些缺失的觀測數據可能對建立一個好的模型至關重要。

出于這個原因,我們需要做 基于角色的采樣 。這樣做能確保在模型數據建立中包含所有場合附加的角色,或者什么都沒有。

Airbnb欺詐預測機器學習模型設計:準確率和召回率的故事

此外,當我們將我們的數據集切分為訓練集和測試集時,通常這樣的邏輯也適用。

特征設計

特征設計是機器學習不可或缺的一部分,通常情況下,在特征種類的選擇上,對數據的充分理解有助于形成一個更好的模型設計思路。特征設計的實例包括特征規范化和分類特征處理。

特征規范化是標準化特征的一種方式,允許更合理的對比。如下表所示:

Airbnb欺詐預測機器學習模型設計:準確率和召回率的故事

從上表可知,每個人物都有10,000個士兵。然而,Serion掌權長達5年,而Dineas僅僅掌權2年。通過這些人物比較絕對的士兵數量可能并不是非常有效的。但是,通過人物掌權的年份來標準化他們可能會提供更好的見解,并且產生更有預測力的特征。

在分類特征的特征設計上值得單獨的寫一篇博客文章,因為有很多方式可以去處理它們。特別是對于缺失值的插補,請看一看以前的博客文章—— 使用隨機森林分類器處理缺失值

轉換分類特征最常見的方法就是矢量化(也稱作one-hot encoding)。然而,在處理有許多不同級別的分類特征時,使用條件概率編碼(CP-coding)則更為實用。

CP-coding的基本思想就是在給定的分類級別上,計算出某個特征值發生的概率。這種方法使得我們能夠將所有級別的分類特征轉化為一個單一的數值型變量。

Airbnb欺詐預測機器學習模型設計:準確率和召回率的故事

然而,這種類型轉換可能會因為沒有充分描述的類別而造成噪音數據。在上面的例子中,我們只有一個來自House 為 “Tallight”的觀測樣本。結果相應的概率就是0或1。 為了避免這種問題的發生并且降低噪聲數據,通常情況下,可以通過考慮加權平均值,全局概率或者引入一個平滑的超系數來調整如何計算概率

那么,哪一種方法最好呢?這取決于分類特征的數量和級別。 CP-coding是個不錯的選擇,因為他降低了特征的維數,但是這樣會犧牲掉特征與特征之間的互信息,這種方法稱之為矢量化保留 。此外,我們可以整合這兩種方法,即組合相似的類別特征,然后使用CP-coding處理整合的特征。

模型性能評估

當談及到評估模型性能的時候,我們需要留意正面角色和反面角色的比例。在我們的例子模型中,數據最后的統計格式為[character*period](下表左)。 然而,模型評估應該以角色類別測量(下表右)。

Airbnb欺詐預測機器學習模型設計:準確率和召回率的故事

結果,在模型的構建數據和模型的評估數據之間的正面人物和反面人物的比例有著明顯的差異。 當評估模型準確率和召回率的時候分配合適的權重值是相當重要的

此外,因為我們可能會使用下采樣以減少觀測樣本的數量,所以我們還需要調整模型占采樣過程的準確率和召回率。

評估準確率和召回率

對于模型評估的兩種主要的評估度量是準確率(Precision)和召回率(Recall)。在我們的例子當中,準確率是預測結果為反面角色中被 正確預測為反面角色的比例。它在給定的閾值下衡量模型的準確度。另外,召回率是模型從原本為反面角色當中能夠正確檢測出為反面角色的比例。它在一個給定的 閾值下以識別反面人物來衡量模型的綜合指標。這兩個變量很容易混淆,所以通過下表會更加的直觀看出兩者的不同。

Airbnb欺詐預測機器學習模型設計:準確率和召回率的故事

通常將最后的數據劃分為四個不同的部分:

  • True Positives(TP):角色是反面人物,模型預測為反面人物; 
  • False Positives(FP):角色是正面人物,模型預測為反面人物; 
  • True Negatives(TN):角色是正面人物,模型預測為正面人物; 
  • False Negatives(FN):角色是反面人物,模型預測為正面人物;

準確率計算:在所有被預測為反面人物中,模型正確預測的比例,即TP /(TP + FP)。

召回率計算:在所有原本就是反面人物中,模型正確預測的比例,即TP / (TP + FN)。

通過觀察可以看出,盡管準確率和召回率的分子是相同的,但分母不同。

通常在選擇高準確率和高召回率之間總有一種權衡。這要取決于構建模型的最終目的,對于某些情況而言,高準確率的選擇可能會優于高召回率。然而, 對于欺詐預測模型,通常要偏向于高召回率,即使會犧牲掉一些準確率

有許多的方式可以用來改善模型的準確度和召回率。其中包括添加更好的特征,優化決策樹剪枝或者建立一個更大的森林等等。不過,鑒于討論廣泛,我打算將其單獨地放在一篇文章當中。

結束語

希望這篇文章能讓讀者了解到什么是構建機器學習模型所需要的。遺憾的是, 沒有放之四海而皆準的解決方案來構建一種好的模型,充分了解數據的上下文是關鍵,因為通過它我們能夠從中提取出更多更好的預測特征,從而建立出更優化的模型

最后,雖然將角色分為正面和反面是主觀的,但 類別標簽的確是機器學習的一個非常重要的部分,而不好的類別標簽通常會導致一個糟糕的模型 。祝建模快樂!

注: 這個模型確保每個角色都是正面角色或者是反面角色,即如果他們生來就是反面角色,那么在他們的整個生命當中都是反面角色。如果我們假設角色可以跨越類別標簽作為中立人物,那么模型的設計將會完全不同。

英文原文: Designing Machine Learning Models: A Tale of Precision and Recall (譯者/劉帝偉 審校/劉翔宇、朱正貴 責編/周建丁)

關于譯者: 劉帝偉,中南大學軟件學院在讀研究生,關注機器學習、數據挖掘及生物信息領域。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!