天天看點

《實用機器學習》——1.3 實際應用

本節書摘來異步社群《實用機器學習》一書中的第1章,第1.3節,作者:孫亮,黃倩,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

在本節中,我們将會介紹一些可用機器學習解決的實際問題,包括病人住院時間預測、信用分數估計、netflix上的影片推薦和酒店推薦。每個例子都對應一類不同的機器學習問題。通過這些不同類型的機器學習問題,讀者對機器學習可以有更多直覺的感受。

機器學習在醫療行業有着廣泛的應用。我們以heritage health prize②競賽作為例子以說明如何使用機器學習來預測病人未來的住院時間。

在美國每年都有超過7000萬人次住院。根據相關統計,2006年在護理病人住院上所花的無關費用就已經超過了300億美元。如果我們能夠根據病人的病曆提前預測病人将來的住院時間,那麼就可以根據病人的具體情況提前做好相關準備進而減少那些無謂的開銷。同時,醫院可以提前向病人發出預警,這樣就能在降低醫療成本的同時提高服務品質。在從2011年開始的heritage health prize競賽(hhp)中,競争者成功地使用機器學習的方法,由病人的曆史記錄預測了病人在未來一年的住院時間。圖1-1顯示了競賽中使用的病曆資料的一部分樣本。

《實用機器學習》——1.3 實際應用

在現實生活中,向銀行申請貸款是比較常見的,如房屋貸款、汽車貸款等。銀行在辦理個人貸款業務時,會根據申請人的經濟情況來估計申請人的還款能力,并根據不同還款能力确定安全的借款金額和相應的條款(如不同的利率)。在美國,每個成年人都有相應的信用分數(credit score),用來衡量和評估借款者的還款能力和風險。

在估計申請者的還款能力時,需要搜集使用者的多個方面的資訊,包括:

收入情況;

年齡、性别;

職業;

家庭情況,如子女數量等;

還款曆史,包括未按時還款的記錄、還款金額等;

現有的各種貸款和欠款情況等。

如何将這些因素綜合考慮進而決定借貸者的信用分數呢?直覺地講,可以使用一些簡單的規則來确定信用分數。例如,某申請者的目前借款金額很高但收入一定,則進一步借款的風險很高,信用分數将會較低;又如,某申請者的某張信用卡在過去經常沒有按時還款,則其信用分數也會較低。雖然使用簡單的規則能夠大緻解決信用分數估計的問題,但是這個辦法最大的問題是不能自适應地處理大量資料。随着時間的變化,申請者不還款的風險模型可能會發生變化,是以,相應的規則也需要修改。

銀行通常可以得到海量的申請者資料和對應的曆史資料。利用機器學習的方法,我們希望可以從這些申請者過去的還款記錄中自适應地學習出相應的模型,進而能夠“智能”地計算申請者的信用分數以了解貸款的風險。具體地講,在機器學習模型中,将申請者的資訊作為輸入,我們可以計算申請者在未來能夠按時還款的機率。作為一個典型的例子,fico分數③就是美國fico公司利用機器學習模型開發出來的一個信用分數模型。

netflix是美國的一家網絡視訊點播公司,成立于1997年,到2015年該公司已經有了近7000萬的訂閱者,并且在世界上超過40個國家或地區提供服務。netflix上的一項很重要的功能是根據使用者的曆史觀看資訊和喜好推薦相應的影片,如圖1-2所示。2006年10月至2009年9月,netflix公司舉辦了netflix prize④比賽,要求參賽者根據使用者對于一些電影的評價(1星~5星),推測使用者對另外一些沒有看過電影的評價。如果能夠準确地預測使用者對于那些沒有看過的電影的評價,就可以相應地向這些使用者推薦他們感興趣的電影,進而顯著提高推薦系統的性能和netflix公司的盈利水準。

《實用機器學習》——1.3 實際應用

在netflix prize比賽中,獲勝的标準是将netflix現有推薦系統的性能提高10%。在2009年,bellkor's pragmatic chaos隊赢得了比賽。其主要方法是基于矩陣分解的推薦算法,并使用內建學習的方法綜合了多種模型。netflix prize比賽顯著地推動了推薦算法的研究,特别是基于矩陣分解的推薦算法的研究。在本書中,我們也将詳細介紹這些推薦算法。

expedia是目前世界上最大的線上旅行代理(online travel agency,ota)之一。它的一項很重要的業務是向使用者提供酒店預訂,作為使用者和大量酒店之間的橋梁。對于使用者的每個查詢,expedia需要根據使用者的喜好,提供最優的排序結果,這樣使用者能夠友善地從中選出最合适的酒店。

expedia于2013年年底與國際資料挖掘大會(international conference on data mining,icdm)聯合舉辦了酒店推薦比賽。在該項比賽中,expedia提供了實際資料,包括使用者的查詢以及其對所推薦結果點選或者購買的記錄。在進行酒店推薦時,expedia考慮了如下因素:

使用者的位置和酒店的位置;

酒店的特征,如酒店的價格、星級、位置吸引程度等;

使用者過去預訂酒店的曆史,包括價格、酒店類型、酒店星級;

其他競争對手的資訊。

根據使用者的查詢及使用者的背景資訊,expedia傳回推薦的酒店序列。在expedia.com上,典型的酒店搜尋界面如圖1-3所示。根據傳回的推薦結果,使用者有3種選擇:(1)付款預定推薦的酒店;(2)點選推薦的酒店但沒有預訂;(3)既沒有點選也沒有預訂。顯然,根據使用者的反應,我們希望在理想的酒店推薦結果中,對應于第一種選擇的酒店能夠排在最前面,并且對應于第二種選擇的酒店排在對應于第三種選擇的酒店前面。

《實用機器學習》——1.3 實際應用

上文中的4個例子分别對應于機器學習中的4類典型問題:

回歸(regression);

分類(classification);

推薦(recommendation);

排序(ranking)。

在第一類問題中,首先需要為每個病人建構一個特征向量x,然後建構一個函數f,使得可以用f(x)來預測病人的住院時間y。注意,這裡要預測的量(病人的住院時間y)的範圍是0~365(或者366),我們可以将其轉化為回歸問題。在回歸問題中,目标變量是一個連續值。

在第二類問題中,需要為每個申請者建構一個特征向量x,而輸出y是0或者1,代表準許貸款或者不準許貸款。事實上,輸出y也可以是準許的機率。這是機器學習中典型的分類問題。在分類問題中,目标變量y是一個離散變量。與回歸問題類似,我們的目标是建構一個函數f,使得f(x)可以預測真實的y。在典型的兩類分類(binary classification)問題中,目标變量的取值為0或者1(有時是−1或者1)。在多類分類(multi-class classification)問題中,我們有多個類,而目标變量的取值是其中之一。

在第三類問題中,需要根據使用者過去的曆史為每個使用者推薦相應的商品,這是一個典型的推薦問題。與回歸和分類問題相比,我們需要為每個使用者傳回一個感興趣的商品序列。

在第四類問題中,需要根據使用者的輸入(在上文的例子中是使用者對于酒店的查詢),從一系列對象(在這個例子中是酒店)中根據使用者的需要傳回一個對象的序列,使得該序列最前面的對象是使用者最想要的。這類問題稱為排序(ranking)問題。同前面的回歸問題和分類問題相比,排序問題需要考慮整個傳回序列。與前面的影片推薦例子相比,在排序問題中我們需要明确的使用者輸入,而在影片推薦中我們隻是根據使用者過去的曆史資訊來進行推薦,使用者沒有進行明确的輸入。

在實際應用中,機器學習的應用遠遠超出上面的幾個例子。例如,近期非常熱門的alphago,谷歌公司在其中使用了深度學習(deep learning)來學習圍棋對弈;德國的蒂森克虜伯(thyssenkrupp)集團作為電梯的主要制造商之一,應用機器學習來預測電梯發生故障的時間進而提前維修,降低電梯的綜合營運成本;美國的很多大型零售商在開設新店時,都要搜集各個地區的各種資訊和曆史銷售資料,通過建立機器學習模型的形式選擇最優的店址。

繼續閱讀