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