隨著計算機(jī)和互聯(lián)網(wǎng)越來越深入到生活中的方方面面,人們搜集到的數(shù)據(jù)也呈指數(shù)級的增長。在這種情況下,大數(shù)據(jù)( big data )應(yīng)運(yùn)而生。大數(shù)據(jù)通常體量特別大,而且數(shù)據(jù)比較復(fù)雜,使得無法直接使用傳統(tǒng)的數(shù)據(jù)庫工具對其進(jìn)行存儲和管理。大數(shù)據(jù)帶來了很多挑戰(zhàn),如數(shù)據(jù)的搜集、整理、存儲、共享、分析和可視化等。廣義的大數(shù)據(jù)處理涵蓋了上述所有領(lǐng)域;狹義的大數(shù)據(jù)更多是指如何使用機(jī)器學(xué)習(xí)來分析大數(shù)據(jù),從海量的數(shù)據(jù)中分析出有用的信息。
大數(shù)據(jù)分析的核心是機(jī)器學(xué)習(xí)算法。很多時候,我們有足夠的數(shù)據(jù),但是對如何利用這些數(shù)據(jù)缺乏理解。同時,實際問題往往比較復(fù)雜,并不能直接套用機(jī)器學(xué)習(xí)算法,我們需要對實際問題進(jìn)行一些轉(zhuǎn)化,使得機(jī)器學(xué)習(xí)算法可以應(yīng)用。雖然實際問題表現(xiàn)形式各異,但是在將它們轉(zhuǎn)化為機(jī)器學(xué)習(xí)能夠處理的問題時一般轉(zhuǎn)化為如下4類問題: (1)回歸問題; (2)分類問題; (3)推薦問題; (4)排序問題。這4類問題是實際應(yīng)用中最主要的類型,覆蓋了大部分實際問題。在1.3節(jié),我們將詳細(xì)介紹每類問題的具體例子。
1.1什么是機(jī)器學(xué)習(xí)
機(jī)器學(xué)習(xí)( machine learning )是計算機(jī)科學(xué)的一個分支,也可以認(rèn)為是模式識別( pattern
recognition )、人工智能( artificial intelligence )、統(tǒng)計學(xué)( statistics )、數(shù)據(jù)挖掘( data mining )等多個學(xué)科的交叉學(xué)科。機(jī)器學(xué)習(xí)與數(shù)值優(yōu)化( numerical optimization )也有很高的重合度。
機(jī)器學(xué)習(xí)研究如何從數(shù)據(jù)中學(xué)習(xí)出有效的模型,進(jìn)而能對未來作出預(yù)測。例如,如果商店能夠預(yù)測某件商品在未來一段時間的銷售量,就可以提前預(yù)訂相應(yīng)數(shù)量的商品,這樣既可以避免缺貨,又可以避免進(jìn)太多貨而造成積壓。與傳統(tǒng)的決策算法不同的是,機(jī)器學(xué)習(xí)算法依賴于數(shù)據(jù)。在前面的例子中,我們要從歷史數(shù)據(jù)中學(xué)習(xí)出相應(yīng)的模型以對未來進(jìn)行預(yù)測。這樣做有兩個好處:第一,由于算法依賴于數(shù)據(jù),可以使用新的數(shù)據(jù)來不停地更新模型,使得模型能夠自適應(yīng)地處理新的數(shù)據(jù);第二,對人的介入要求少。在使用機(jī)器學(xué)習(xí)的過程中,雖然也會盡量利用人的經(jīng)驗,但更多地強(qiáng)調(diào)如何利用人的經(jīng)驗知識從數(shù)據(jù)中訓(xùn)練得到更好的模型。
目前,機(jī)器學(xué)習(xí)已成為研究和應(yīng)用的熱點(diǎn)之一。一些能夠使用機(jī)器學(xué)習(xí)解決的實際問題包括:
根據(jù)信用卡交易的歷史數(shù)據(jù),判定哪些交易是欺詐交易;
從字母、數(shù)字或者漢字圖像中有效地識別出相應(yīng)的字符;
根據(jù)用戶以往的購物歷史來給用戶推薦新的商品;
根據(jù)用戶當(dāng)前的查詢和以往的消費(fèi)歷史向其推薦適合的網(wǎng)頁、商品等根據(jù)汽車的發(fā)動機(jī)排量、年份、類型、重量等信息估計汽車的耗油星。
雖然這些問題的具體形式不同,但是均可轉(zhuǎn)化成機(jī)器學(xué)習(xí)可以解答的問題形式。
從概念上講,在機(jī)器學(xué)習(xí)中,我們的目標(biāo)是從給定的數(shù)據(jù)集中學(xué)習(xí)出一個模型,使得它能夠有效地從輸數(shù)據(jù)中預(yù)測我們感興趣的量。根據(jù)問題的不同,我們感興趣的量(或者叫目標(biāo)值)可以有不同的形式。例如,在分類問題中,目標(biāo)值就是若干類別之一;在排序問題中,目標(biāo)值就是關(guān)于文檔的一個序列。
在機(jī)器學(xué)習(xí)中,通常我們解決問題的流程如下:
(1)搜集足夠多的數(shù)據(jù);
(2)通過分析問題本身或者分析數(shù)據(jù),我們認(rèn)為模型堤可以從數(shù)據(jù)中學(xué)習(xí)出來的;
(3)選擇合適的模型和算法,從數(shù)據(jù)中學(xué)習(xí)出模型f;
(4)評價模型f,并將其利用在實際中處理新的數(shù)據(jù)。
在實際中,還需要根據(jù)應(yīng)用的實際情況及時更新模型例如,若數(shù)據(jù)發(fā)生了顯著變化,則需要更新模型t。因此,在實際部署機(jī)器學(xué)習(xí)模型時,上面的第3步和第4步是一個循環(huán)反復(fù)的過程。
一個經(jīng)常與機(jī)器學(xué)習(xí)同時提起的相關(guān)領(lǐng)域是數(shù)據(jù)挖掘( data mining )。數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)在很多時候都被(不嚴(yán)格地)混用,因為這兩者有很多重疊的地方。傳統(tǒng)意義上,機(jī)器學(xué)習(xí)更加注重于算法和理論方面,而數(shù)據(jù)挖掘更加注重實踐方面。數(shù)據(jù)挖掘中的很多算法都來自于機(jī)器學(xué)習(xí)或者相關(guān)領(lǐng)域,少數(shù)來自于數(shù)據(jù)挖掘領(lǐng)域,如關(guān)聯(lián)規(guī)則( association rule )。
另一個與機(jī)器學(xué)習(xí)關(guān)聯(lián)很深的領(lǐng)域是統(tǒng)計學(xué)。在統(tǒng)計學(xué)中,我們學(xué)習(xí)了很多傳統(tǒng)的處理數(shù)據(jù)的方法,包括數(shù)據(jù)統(tǒng)計量的計算、模型的參數(shù)估計、假設(shè)檢驗等。但在實際問題中,很多情況下我們并不能直接使用統(tǒng)計學(xué)中的方法來解決問題。一方面,隨著數(shù)據(jù)規(guī)模的擴(kuò)大,統(tǒng)計學(xué)中很多傳統(tǒng)的數(shù)據(jù)分析方法需要通過大量的計算才能得到結(jié)果,時效性不高;另一方面,傳統(tǒng)的統(tǒng)計學(xué)方法更多地考慮了算法在數(shù)學(xué)上的性質(zhì),而忽略了如何在實際中更好地應(yīng)用這些算法。
1.2實際應(yīng)用
在本節(jié)中,我們將會介紹一些可用機(jī)器學(xué)習(xí)解決的實際問題,包括病人住院時間預(yù)測、信用分?jǐn)?shù)估計、Nettix上的影片推薦和酒店推薦。每個例子都對應(yīng)一類不同的機(jī)器學(xué)習(xí)問題。通過這些不同類型的機(jī)器學(xué)習(xí)問題,讀者對機(jī)器學(xué)習(xí)可以有更多直觀的感受。
1.2.1 病人住院時間預(yù)測
機(jī)器學(xué)習(xí)在醫(yī)療行業(yè)有著廣泛的應(yīng)用。我們以Heritage Health Prize競賽作為例子以說明如何使用機(jī)器學(xué)習(xí)來預(yù)測病人未來的住院時間。
在美國每年都有超過7000萬人次住院。根據(jù)相關(guān)統(tǒng)計, 2006年在護(hù)理病人住院上所花的無關(guān)費(fèi)用就已經(jīng)超過了300億美元。如果我們能夠根據(jù)病人的病歷提前預(yù)測病人將來的住院時間,那么就可以根據(jù)病人的具體情況提前做好相關(guān)準(zhǔn)備從而減少那些無謂的開銷。同時,醫(yī)院可以提前向病人發(fā)出預(yù)警,這樣就能在降低醫(yī)療成本的同時提高服務(wù)質(zhì)量。在從2011年開始的Heritage Health Prize競賽( HHP )中,競爭者成功地使用機(jī)器學(xué)習(xí)的方法,由病人的歷史記錄預(yù)測了病人在未來一年的住院時間。圖1-1顯示了競賽中使用的病歷數(shù)據(jù)的一部分樣本。
圖1-1 病歷數(shù)據(jù)示例
1.2.2信用分?jǐn)?shù)估計
在現(xiàn)實生活中,向銀行申請貸款是比較常見的,如房屋貸款、汽車貸款等。銀行在辦理個人貸款業(yè)務(wù)時,會根據(jù)申請人的經(jīng)濟(jì)情況來估計申請人的還款能力,并根據(jù)不同還款能力確定安全的借款金額和相應(yīng)的條款(如不同的利率)。在美國,每個成年人都有相應(yīng)的信用分?jǐn)?shù)( credit score ) ,用來衡量和評估借款者的還款能力和風(fēng)險。
在估計申請者的還款能力時,需要搜集用戶的多個方面的信息,包括:
收入情況;
年齡、性別;
職業(yè);
家庭情況,如子女?dāng)?shù)量等;還款歷史,包括未按時還款的記錄、還款金額等;現(xiàn)有的各種貸款和欠款情況等。
如何將這些因素綜合考慮從而決定借貸者的信用分?jǐn)?shù)呢?直觀地講,可以使用一些簡單的規(guī)則來確定信用分?jǐn)?shù)。例如,某申請者的當(dāng)前借款金額很高但收入一定,則進(jìn)一步借款的風(fēng)險很高,信用分?jǐn)?shù)將會較低;又如,某申請者的某張信用卡在過去經(jīng)常沒有按時還款,則其信用分?jǐn)?shù)也會較低。雖然使用簡單的規(guī)則能夠大致解決信用分?jǐn)?shù)估計的問題,但是這個辦法最大的問題是不能自適應(yīng)地處理大量數(shù)據(jù)。隨著時間的變化,申請者不還款的風(fēng)險模型可能會發(fā)生變化,因此,相應(yīng)的規(guī)則也需要修改。
銀行通常可以得到海量的申請者數(shù)據(jù)和對應(yīng)的歷史數(shù)據(jù)。利用機(jī)器學(xué)習(xí)的方法,我們希望可以從這些申請者過去的還款記錄中自適應(yīng)地學(xué)習(xí)出相應(yīng)的模型,從而能夠“智能”地計算申請者的信用分?jǐn)?shù)以了解貸款的風(fēng)險。具體地講,在機(jī)器學(xué)習(xí)模型中,將申請者的信息作為輸入,我們可以計算申請者在未來能夠按時還款的概率。作為一個典型的例子, FICO分?jǐn)?shù)就是美國FICO公司利用機(jī)器學(xué)習(xí)模型開發(fā)出來的一個信用分?jǐn)?shù)模型。
1.2.3 Nettix上的影片推薦
Netflix是美國的一家網(wǎng)絡(luò)視頻點(diǎn)播公司,成立于1997年,到2015年該公司已經(jīng)有了近7000萬的訂閱者并且在世界上超過40個國家或地區(qū)提供服務(wù)。Netflix上的一項很重要的功能是根據(jù)用戶的歷史觀看信息和喜好推薦相應(yīng)的影片,如圖1-2所示。2006年10月至2009年9月, Netflix公司舉辦了Netflix Prize比賽,要求參賽者根據(jù)用戶對于一些電影評價(1星~5星) ,推測用戶對另外一些沒有看過電影的評價。如果能夠準(zhǔn)確地預(yù)測用戶對于那些沒有看過的電影的評價,就可以相應(yīng)地向這些用戶推薦他們感興趣的電影,從而顯著提高推薦系統(tǒng)的性能和Netflix公司的盈利水平。
圖1-2 Netflix上的電影推薦
在Netflix Prize賽中,獲勝的標(biāo)準(zhǔn)是將Netflix現(xiàn)有推薦系統(tǒng)的性能提高10%。在2009年, Bellkor's Pragmatic Chaos隊贏得了比賽。其主要方法是基于矩陣分解的推薦算法,并使用集成學(xué)習(xí)的方法綜合了多種模型。Netflix Prize比賽顯著地推動了推薦算法的研究,特別是基于矩陣分解的推薦算法的研究。在本書中,我們也將詳細(xì)介紹這些推薦算法。
1.2.4 酒店推薦
Expedia是目前世界上最大的在線旅行代理( online travel agency , OTA )之一。它的一項很重要的業(yè)務(wù)是向用戶提供酒店預(yù)訂,作為用戶和大量酒店之間的橋梁。對于用戶的每個查詢, Expedia需要根據(jù)用戶的喜好,提供最優(yōu)的排序結(jié)果,這樣用戶能夠方便地從中選出最合適的酒店。
Expedia于2013年年底與國際數(shù)據(jù)挖掘大會( International Conference on Data Mining , ICDM )聯(lián)合舉辦了酒店推薦比賽。在該項比賽中, Expedia提供了實際數(shù)據(jù),包括用戶的查詢以及其對所推薦結(jié)果點(diǎn)擊或者購買的記錄。在進(jìn)行酒店推薦時, Expedia考慮了如下因素:
用戶的位置和酒店的位置;
酒店的特征,如酒店的價格、星級、位置吸引程度等;
用戶過去預(yù)訂酒店的歷史,包括價格、酒店類型、酒店星級;·其他競爭對手的信息。
根據(jù)用戶的查詢及用戶的背景信息, Expedia返回推薦的酒店序列。在Expedia.com上,典型的酒店搜索界面如圖1-3所示。根據(jù)返回的推薦結(jié)果,用戶有3種選擇: (1)付款預(yù)定推薦的酒店; (2)點(diǎn)擊推薦的酒店但沒有預(yù)訂; (3)既沒有點(diǎn)擊也沒有預(yù)訂。顯然,根據(jù)用戶的反應(yīng),我們希望在理想的酒店推薦結(jié)果中,對應(yīng)于第一種選擇的酒店能夠排在最前面,并且對應(yīng)于第二種選擇的酒店排在對應(yīng)于第三種選擇的酒店前面。
圖1-3 在Expedia.com上搜索酒店
1.2.5討論
上文中的4個例子分別對應(yīng)于機(jī)器學(xué)習(xí)中的4類典型問題:
回歸( regression ) ;
分類(classification ) ;
推薦(recommendation ) ;
排序(ranking)。
在第一類問題中,首先需要為每個病人構(gòu)建一個特征向量x,然后構(gòu)建一個函數(shù),使得可以用(x)來預(yù)測病人的住院時間y。注意,這里要預(yù)測的星(病人的住院時間y)的范圍是0-365 (或者366) ,我們可以將其轉(zhuǎn)化為回歸問題。在回歸問題中,目標(biāo)變量是一個連續(xù)值。
在第二類問題中,需要為每個申請者構(gòu)建一個特征向量x,而輸出y是0或者1,代表批準(zhǔn)貸款或者不批準(zhǔn)貸款。事實上,輸出y也可以是批準(zhǔn)的概率。這是機(jī)器學(xué)習(xí)中典型的分類問題。在分類問題中,目標(biāo)變量y是一個離散變量。與回歸問題類似,我們的目標(biāo)是構(gòu)建一個函數(shù)f,使得fx)可以預(yù)測真實的v。在典型的兩類分類( binary classification )問題中,目標(biāo)變量的取值為0或者1 (有時是-1或者1 )。在多類分類( multi-classclassification )問題中,我們有多個類,而目標(biāo)變量的取值是其中之一。
在第三類問題中,需要根據(jù)用戶過去的歷史為每個用戶推薦相應(yīng)的商品,這是一個典型的推薦問題。與回歸和分類問題相比,我們需要為每個用戶返回一個感興趣的商品序列。
在第四類問題中,需要根據(jù)用戶的輸入(在上文的例子中是用戶對于酒店的查詢) ,從一系列對象(在這個例子中是酒店)中根據(jù)用戶的需要返回一個對象的序列,使得該序列最前面的對象是用戶最想要的。這類問題稱為排序(ranking )問題。同前面的回歸問題和分類問題相比,排序問題需要考慮整個返回序列。與前面的影片推薦例子相比,在排序問題中我們需要明確的用戶輸入,而在影片推薦中我們只是根據(jù)用戶過去的歷史信息來進(jìn)行推薦,用戶沒有進(jìn)行明確的輸入。
在實際應(yīng)用中,機(jī)器學(xué)習(xí)的應(yīng)用遠(yuǎn)遠(yuǎn)超出上面的幾個例子。例如,近期非常熱門的AlphaGo ,谷歌公司在其中使用了深度學(xué)習(xí)( deep learning )來學(xué)習(xí)圍棋對弈;德國的蒂森克虜伯(ThyssenKrupp )集團(tuán)作為電梯的主要制造商之一,應(yīng)用機(jī)器學(xué)習(xí)來預(yù)測電梯發(fā)生故障的時間從而提前維修,降低電梯的綜合運(yùn)營成本;美國的很多大型零售商在開設(shè)新店時,都要搜集各個地區(qū)的各種信息和歷史銷售數(shù)據(jù),通過建立機(jī)器學(xué)習(xí)模型的形式選擇最優(yōu)的店址。
本文節(jié)選自《實用機(jī)器學(xué)習(xí)》
本書圍繞實際數(shù)據(jù)分析的流程展開,著重介紹數(shù)據(jù)探索、數(shù)據(jù)預(yù)處理和常用的機(jī)器學(xué)習(xí)算法模型。本書從解決實際問題的角度出發(fā),介紹回歸算法、分類算法、推薦算法、排序算法和集成學(xué)習(xí)算法。本書的最大特色就是貼近工程實踐。首先,本書僅側(cè)重介紹當(dāng)前工業(yè)界最常用的機(jī)器學(xué)習(xí)算法,而不追求知識本身的覆蓋面;其次,本書在介紹每類機(jī)器學(xué)習(xí)算法時,力求通俗易懂地闡述算法思想,而不追求理論的深度,讓讀者借助代碼獲得直觀的體驗。