互聯(lián)網(wǎng)的海量數(shù)據(jù)不可能靠人工一個個處理,只能依靠計算機批量處理。最初的做法是人為設(shè)定好一些規(guī)則,由機器來執(zhí)行。但特征一多規(guī)則就很難制定,即使定下了規(guī)則也沒法根據(jù)實際情況靈活變化。機器學(xué)習(xí)可以很好的解決以上問題,從一定程度上賦予了計算機以“學(xué)習(xí)”的能力,使得千人千面成為可能。
51CTO首屆中國APP創(chuàng)新評選大賽正在招募>>大數(shù)據(jù)時代里,互聯(lián)網(wǎng)用戶每天都會直接或間接使用到大數(shù)據(jù)技術(shù)的成果,直接面向用戶的比如搜索引擎的排序結(jié)果,間接影響用戶的比如網(wǎng)絡(luò)游戲的流失用戶預(yù)測、支付平臺的欺詐交易監(jiān)測等等。機器學(xué)習(xí)是大數(shù)據(jù)挖掘的一大基礎(chǔ),本文以機器學(xué)習(xí)為切入點,將筆者在 大 數(shù)據(jù) 技術(shù)實踐時的一些經(jīng)驗與大家分享。
互聯(lián)網(wǎng)的海量數(shù)據(jù)不可能靠人工一個個處理,只能依靠計算機批量處理。最初的做法是人為設(shè)定好一些規(guī)則,由機器來執(zhí)行。比如明確指定計算機給男性、 30歲的用戶推送汽車廣告。很明顯如此粗略的規(guī)則不會有好效果,因為對人群的定位不夠精確。要提高精度必須增加對用戶的特征描述。但特征一多規(guī)則就很難制定,即使定下了規(guī)則也沒法根據(jù)實際情況靈活變化。機器學(xué)習(xí)可以很好的解決以上問題,從一定程度上賦予了計算機以“學(xué)習(xí)”的能力,使得千人千面成為可能。
圖 1 面對大量的特征,人工難以確定使用的規(guī)則
有監(jiān)督機器學(xué)習(xí)技術(shù)
機器學(xué)習(xí)以統(tǒng)計學(xué)為理論基礎(chǔ),利用算法讓機器具有類似人類一般的自動“學(xué)習(xí)”能力,即對已知的訓(xùn)練數(shù)據(jù)做統(tǒng)計分析從而獲得規(guī)律,再運用規(guī)律對未知數(shù)據(jù)做預(yù)測分析。機器學(xué)習(xí)主要包含四大類別: 有監(jiān)督學(xué)習(xí),無監(jiān)督學(xué)習(xí),半監(jiān)督學(xué)習(xí)和增強學(xué)習(xí)。
有監(jiān)督學(xué)習(xí),顧名思義,是在“人類監(jiān)督”下學(xué)習(xí),要求訓(xùn)練數(shù)據(jù)既有特征也有目標(biāo),目標(biāo)是人為設(shè)定好的。以文本分類為例,一篇文章的字、詞、句、段是其特征(文本的內(nèi)容是什么),文章的類別(時事、科技、娛樂等等)就是目標(biāo)。訓(xùn)練集文章的類別是人為設(shè)定的,相當(dāng)于明確告訴機器什么樣的內(nèi)容該屬于什么類別,機器在此基礎(chǔ)上總結(jié)規(guī)律。無監(jiān)督學(xué)習(xí)就是數(shù)據(jù)只有特征沒有目標(biāo),最常見的算法是聚類。聚類算法會把相似的樣本聚集成一個子集,優(yōu)點是數(shù)據(jù)無需人工標(biāo)注,但缺點也很明顯——無法給出子集的實際含義。半監(jiān)督學(xué)習(xí)介于有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)之間,其訓(xùn)練集數(shù)據(jù)有一小部分是人工標(biāo)注過的。增強學(xué)習(xí)強調(diào)基于環(huán)境而行動,在探索未知領(lǐng)域和遵從現(xiàn)有只是之間尋求平衡。
有監(jiān)督學(xué)習(xí)的研究起步較早,方法比較成熟。在大多數(shù)應(yīng)用場景中,我們希望機器輸出的結(jié)果具有實際含義,比如文本分類就是讓機器告訴我們一篇文章是時事還是科技類文章。這樣的場景下有監(jiān)督學(xué)習(xí)也更為適用。有監(jiān)督學(xué)習(xí)主要包含回歸分析和統(tǒng)計分類兩大類算法。
回歸分析——預(yù)估點擊率的利器
回歸分析建模的是自變量和因變量之間的相關(guān)關(guān)系(如圖2所示),在機器學(xué)習(xí)領(lǐng)域,自變量是樣本的特征向量,因變量是預(yù)測值。回歸分析最經(jīng)典的應(yīng)用場景是廣告點擊率(CTR)預(yù)估。簡單而言,CTR預(yù)估是根據(jù)用戶數(shù)據(jù)和廣告數(shù)據(jù),估計用戶點擊某個廣告的可能性大小。我們假設(shè)用戶數(shù)據(jù)+廣告數(shù)據(jù)和廣告點擊率之間的關(guān)系符合某個分布,使用回歸分析方法在已有點擊數(shù)據(jù)上擬合出該分布。達觀科技在線上預(yù)測時就把用戶數(shù)據(jù)和廣告數(shù)據(jù)作為輸出傳給擬合出的分布,得到用戶點擊該廣告的概率值。
圖 2 回歸分析示意圖
統(tǒng)計分類——被廣泛應(yīng)用的機器學(xué)習(xí)方法
統(tǒng)計分類要解決的問題是,如何將一個樣本點分到類別集合中的一個或多個類,比如圖3所表示的就是將數(shù)據(jù)分為3個類。
圖 3 統(tǒng)計分類示意圖
現(xiàn)實場景中我們往往需要把數(shù)據(jù)分成不同的類別,以方便我們分析和使用,因而統(tǒng)計分類方法具有廣闊的應(yīng)用范圍。達觀數(shù)據(jù)團隊開發(fā)的用戶建模、內(nèi)容審核系統(tǒng)、反作弊系統(tǒng)等都使用到了統(tǒng)計分類模型。比如反作弊系統(tǒng),目的是區(qū)分用戶行為是否作弊,抽象出來就是個分類問題:輸入是用戶的各種行為數(shù)據(jù)經(jīng)過處理后得到的特征,輸出只有兩個類別——“作弊”和“非作弊”。接下來我就簡單介紹一下最具代表性的分類算法——支持向量機(Support Vector Machine, SVM),一窺機器學(xué)習(xí)的工作原理。SVM絕不是入門級的機器學(xué)習(xí)算法,選擇介紹它是因為,機器學(xué)習(xí)需要解決的數(shù)據(jù)線性不可分、過擬合等問題,SVM都給出了比較可靠的解決方案,借此我們也可以對機器學(xué)習(xí)有個大概的認識。
理想情況下SVM的理論模型
SVM針對分類問題的前提假設(shè)直觀易懂,由此推演出的模型求解過程也是順理成章一氣呵成。我們通常先從最簡單的情況入手,假設(shè)數(shù)據(jù)是線性可分的。 SVM認為此時的最優(yōu)分類面,是使得樣本集到分類面的最小幾何距離最大化的超平面,這個距離成為“間隔(margin)”。如圖4所示,黑色實線就是最優(yōu)分類面,兩邊兩條虛線之間的幾何距離就是此時的最優(yōu)間隔。數(shù)據(jù)點離分類面越遠,分類的置信度也越高。
圖 4 SVM最優(yōu)分類面示意圖
SVM假設(shè)線性分類面的函數(shù)形式為
(1)
鑒于篇幅關(guān)系,我們略去推導(dǎo)過程。在最大化間隔的假設(shè)下,可以得到SVM的原目標(biāo)函數(shù)為:
(2)
其中表示第i個樣本的特征向量,是第i個樣本的類標(biāo)簽,SVM令。由約束條件可知,樣本點必然落在最優(yōu)間隔的邊緣(圖4中虛線)上或外面,通過推導(dǎo)分析最終可以知道,只有落在間隔邊緣上的少量數(shù)據(jù)點決定了分類面,這些樣本被稱為支持向量,而其他的點沒有任何作用。這一特性大大節(jié)省了求解SVM的計算量。
線性不可分情況的處理
按照達觀數(shù)據(jù)的經(jīng)驗,真實環(huán)境的問題往往是線性不可分的,數(shù)據(jù)采集的時候也不可避免的會引入噪聲。應(yīng)對這兩種情況只需對原始SVM模型做有限的一點改進。針對數(shù)據(jù)線性不可分的情況,SVM通過引入核函數(shù)(Kernel Function)將數(shù)據(jù)映射到高維空間來解決,圖5直觀的表示了映射的過程。核函數(shù)實際上是兩個數(shù)據(jù)點在高維空間中的內(nèi)積。它先在原空間進行計算再將結(jié)果映射到高維空間,避免了先把數(shù)據(jù)點映射到高維空間再計算所可能導(dǎo)致的維數(shù)災(zāi)難問題。核函數(shù)可以從容的處理包括無限維在內(nèi)的任何特征空間映射。
圖 5 SVM核函數(shù)的作用原理圖
SVM如何規(guī)避過擬合
過擬合(Overfitting)表現(xiàn)為在訓(xùn)練數(shù)據(jù)上模型的預(yù)測錯誤很低,在未知數(shù)據(jù)上預(yù)測錯誤卻很高。圖6的藍色曲線代表訓(xùn)練錯誤,紅色曲線代表真實錯誤,可以看到隨著模型復(fù)雜度的升高,模型對訓(xùn)練數(shù)據(jù)的擬合程度越好(訓(xùn)練錯誤越低),但到了一定程度之后真實錯誤反而上升,即為過擬合。
圖 6 過擬合
過擬合主要源于我們采集的訓(xùn)練樣本帶有噪聲,有部分樣本嚴重偏離其正常位置,統(tǒng)計學(xué)上稱之為outlier。前面已經(jīng)提到,決定SVM最優(yōu)分類面的只是占少數(shù)的支持向量,如果碰巧這些支持向量中存在outlier,而我們又要求SVM盡可能完美的去擬合這樣的數(shù)據(jù),得到的分類面可能就會有問題。如圖7所示,黑色加粗虛線代表最優(yōu)分類面,帶黑圈的藍色數(shù)據(jù)點代表outlier。可以看到outlier嚴重偏離了正常藍色數(shù)據(jù)點的位置,所在位置又恰巧使其成為了支持向量,導(dǎo)致了最終的分類面(深紅色實線)嚴重偏離最優(yōu)分類面。