Airbnb如何設計機器學習模型
作為2008年在美國舊金山市成立的公司, Airbnb 主要為廣大用戶提供發布和預訂世界各地獨特房源的網絡平臺。該公司最大的特點在于其新穎的p2p租房模式,允許任何人將閑置的房屋進行長期或短期出租。目前,Airbnb的服務范圍已經擴展到了190國家的34000個城市,客戶數量超過100萬。作為一個網絡平臺的服務商,Airbnb把維護社區的信任和安全當作首要的任務。預訂房源時,房客可以通過支付寶等方式將房款先支付到Airbnb。而房東在房客入住后才可通過Airbnb收到付款。
然而,即使采用了這種交易方式,p2p的運營模式仍然會受到來自房客或房東的欺詐攻擊。其中,最典型的情況就是由于盜卡交易、房源信息有誤或者虛假等引起的拒付( chargeback )。為了維護一個安全、可靠的社區環境,Airbnb公司信任和安全團隊的數據專家建立了各種各樣的機器學習模型來幫助識別交易中的風險。作為公司業務的后盾,該團隊究竟是如何建立機器學習模型的呢?近日,Airbnb公司 公布 了利用相關數據建立和改善機器學習模型的過程。接下來,本文就對該過程進行簡單介紹。
為了便于理解,文章設定機器學習的目標是建立一個模型來預測某些虛構的人物是否為壞人。作為模型建立過程的第一步,決定模型究竟用來預測哪些東西是該過程中最根本的問題。這個看似簡單的問題會影響到其他更深的問題。以對人物的可信度進行評分為例,該問題所牽涉的其他問題就包括:哪些人納入評分范圍,是新加入的人還是所有人?對于前者,需要何種程度的介紹和了解才足夠進行評分?對于后者,多久進行一次分數的更新比較合適?只有深入思考并正確回答了這些問題,模型的建立才能沿著正確的方向前進。
如果只對新加入的人進行評分,那么人物以后的分數發生變化就不好追蹤。而且,初始信息的錯誤會一直影響人物的分數。因此,第一種方案并不合適。另外一方面,系統可以在每次事件發生時對人物的分數進行更新。但是,人物分數可能在單個事件中很少變化。這種做法就容易加大統計的工作量。那么,這種方案也不是最優方案。最優的辦法就是結合兩種方法——只在發生大事件(如新盟友的加入、資產數量的變化等)后再進行每個人物的分數更新。這樣,既能保證分數的動態更新,又避免了大量無意義的細節。
接下來關鍵的問題就是如何使用之前方法構建和統計出的數據集。機器學習中一個重要的步驟就是利用現有數據構建訓練集,指導系統的學習過程。既然系統的目標是分析分數,訓練集就需要反應人物在一段時間內的活動與得分情況。訓練集中的時間不一定連續,但要把大的進展包含進來。然后,針對大規模數據集,系統需要進行采樣。一般而言,基于行的采樣方式可以有效的進行表格數據的處理。然而,對于本例子中表格每行統計不同人物活動與得分的情況,該方法并不適用。基于行的采樣可能面臨只有隸屬于同一個人物的數據用于建模和驗證的情況,導致訓練集不能反應整體數據的特征。因此,本例中最好采用基于人物的采樣。這樣,每一個人物都會有一部分數據被采樣到。
然后,系統就需要進行特征學習( Feature Learning )相關的工作。特征學習作為機器學習的組成部分,主要用于對數據的特征進行理解,從而幫助建立更好的模型。特征學習主要包括了特征規整(Feature Normalization)和類屬特征的處理。特征規整負責把一些特征進行歸一化處理,以方便比較。例如,Dineas和Serion分別在掌權的2年和5年內擁有了10000名士兵。比較士兵的絕對數量就不能反映二者掌權的速度。只有把每年增加的士兵數量作為比較量才能明確反應人物在掌權速度方面的特征。
實現類屬特征轉換最常見的方法是利用獨熱碼(One-Hot Coding)進行向量化。而對于多個層次的類屬特征的情況,條件概率編碼(Conditional-Probability coding,CP-coding)比較適用。其基本想法就是在給定分類層次的情況下計算事件發生的概率。該方法可以把一個類屬特征的各個層次的值映射到一個單獨的數值變量。而且,系統可以利用加權平均、全局概率等方法來消除條件概率編碼的轉換過程中引入的噪音。但是,獨熱碼或條件概率編碼都有各自適用的場景。系統需要根據具體情況來決定建模過程中采用哪種方法。
完成采樣數據集的訓練之后,模型建立過程的最后一個步驟就是評估模型本身的性能。本例中,所要評估的就是系統給出的好人和壞人的預測是否正確。這牽涉到 準確率(precision)和召回率(recall) 的問題。準確率反映的是模型預測的所有壞人中該人物的確為壞人的概率。而召回率則是指所有壞人中被正確預測為壞人的概率。可以看出,二者的計算公式中分子相同,但是分母不同。一般而言,系統都需要根據要求在兩者之間進行權衡,找到合適的取值。此外,系統也可以通過添加更好的特征、優化樹的剪枝等同時提高二者的值,從而完善系統模型。
原文 http://www.infoq.com/cn/news/2015/07/Airbnb-p2p