一 介紹
關(guān)于機(jī)器學(xué)習(xí)算法的研究已經(jīng)獲得了巨大的成功,哈佛商業(yè)評(píng)論甚至將數(shù)據(jù)科學(xué)家稱為二十一世紀(jì)最具誘惑力的工作。
機(jī)器學(xué)習(xí)算法是在沒有人為干涉的情況下,從大量的數(shù)據(jù)和歷史經(jīng)驗(yàn)中學(xué)習(xí)數(shù)據(jù)的結(jié)構(gòu)并提升對(duì)某一目標(biāo)的估計(jì)的算法。學(xué)習(xí)任務(wù)包括:
學(xué)習(xí)從輸入到輸出的函數(shù)
學(xué)習(xí)沒有標(biāo)簽的數(shù)據(jù)的潛在結(jié)構(gòu)
基于實(shí)體的學(xué)習(xí)(‘instance-based learning’),譬如根據(jù)訓(xùn)練數(shù)據(jù),對(duì)新的實(shí)體分類,判斷其的類別。
二 機(jī)器學(xué)習(xí)算法的類型
1 有監(jiān)督學(xué)習(xí)(supervised learning):
有監(jiān)督學(xué)習(xí)通常是利用帶有專家標(biāo)注的標(biāo)簽的訓(xùn)練數(shù)據(jù),學(xué)習(xí)一個(gè)從輸入變量X到輸入變量Y的函數(shù)映射。
Y = f (X)
訓(xùn)練數(shù)據(jù)通常是(n×x,y)的形式,其中n代表訓(xùn)練樣本的大小,x和y分別是變量X和Y的樣本值。
(專家標(biāo)注是指,需要解決問題所需要的領(lǐng)域?qū)<遥瑢?duì)數(shù)據(jù)預(yù)先進(jìn)行人為的分析)
利用有監(jiān)督學(xué)習(xí)解決的問題大致上可以被分為兩類:
分類問題:預(yù)測(cè)某一樣本所屬的類別(離散的)。比如給定一個(gè)人(從數(shù)據(jù)的角度來說,是給出一個(gè)人的數(shù)據(jù)結(jié)構(gòu),包括:身高,年齡,體重等信息),然后判斷是性別,或者是否健康。
回歸問題:預(yù)測(cè)某一樣本的所對(duì)應(yīng)的實(shí)數(shù)輸出(連續(xù)的)。比如預(yù)測(cè)某一地區(qū)人的平均身高。
本文中所介紹的前五個(gè)算法(線性回歸,邏輯回歸,分類回歸樹,樸素貝葉斯,K最近鄰算法)均是有監(jiān)督學(xué)習(xí)的例子。
除此之外,集成學(xué)習(xí)也是一種有監(jiān)督學(xué)習(xí)。它是將多個(gè)不同的相對(duì)較弱的機(jī)器學(xué)習(xí)模型的預(yù)測(cè)組合起來,用來預(yù)測(cè)新的樣本。本文中所介紹的第九個(gè)和第十個(gè)算法(隨機(jī)森林裝袋法,和XGBoost算法)便是集成技術(shù)的例子。
2 無監(jiān)督學(xué)習(xí)(Unsupervised learning):
無監(jiān)督學(xué)習(xí)問題處理的是,只有輸入變量X沒有相應(yīng)輸出變量的訓(xùn)練數(shù)據(jù)。它利用沒有專家標(biāo)注訓(xùn)練數(shù)據(jù),對(duì)數(shù)據(jù)的結(jié)構(gòu)建模。
可以利用無監(jiān)督學(xué)習(xí)解決的問題,大致分為兩類:
關(guān)聯(lián)分析:發(fā)現(xiàn)不同事物之間同時(shí)出現(xiàn)的概率。在購物籃分析中被廣泛地應(yīng)用。如果發(fā)現(xiàn)買面包的客戶有百分之八十的概率買雞蛋,那么商家就會(huì)把雞蛋和面包放在相鄰的貨架上。
聚類問題:將相似的樣本劃分為一個(gè)簇(cluster)。與分類問題不同,聚類問題預(yù)先并不知道類別,自然訓(xùn)練數(shù)據(jù)也沒有類別的標(biāo)簽。
維度約減:顧名思義,維度約減是指減少數(shù)據(jù)的維度同時(shí)保證不丟失有意義的信息。利用特征提取方法和特征選擇方法,可以達(dá)到維度約減的效果。特征選擇是指選擇原始變量的子集。特征提取是將數(shù)據(jù)從高緯度轉(zhuǎn)換到低緯度。廣為熟知的主成分分析算法就是特征提取的方法。
本文介紹的第六-第八(Apriori算法,K-means算法,PCA主成分分析)都屬于無監(jiān)督學(xué)習(xí)。
3 強(qiáng)化學(xué)習(xí)(Reinforcement learning):
通過學(xué)習(xí)可以獲得最大回報(bào)的行為,強(qiáng)化學(xué)習(xí)可以讓agent(個(gè)體)根據(jù)自己當(dāng)前的狀態(tài),來決定下一步采取的動(dòng)作。
強(qiáng)化學(xué)習(xí)算法通過反復(fù)試驗(yàn)來學(xué)習(xí)最優(yōu)的動(dòng)作。這類算法在機(jī)器人學(xué)中被廣泛應(yīng)用。在與障礙物碰撞后,機(jī)器人通過傳感收到負(fù)面的反饋從而學(xué)會(huì)去避免沖突。在視頻游戲中,我們可以通過反復(fù)試驗(yàn)采用一定的動(dòng)作,獲得更高的分?jǐn)?shù)。Agent能利用回報(bào)去理解玩家最優(yōu)的狀態(tài)和當(dāng)前他應(yīng)該采取的動(dòng)作。
三 哪些是最流行的機(jī)器學(xué)習(xí)算法
有很多調(diào)查報(bào)告都對(duì)最流行的十種數(shù)據(jù)挖掘算法進(jìn)行了統(tǒng)計(jì)。然而,這些報(bào)告都帶有非常重的主觀色彩。并且就引用文件而言,參與調(diào)查的人樣本規(guī)模和類型都很窄。大部分都是數(shù)據(jù)挖掘的高級(jí)從業(yè)人員,ACM KDD創(chuàng)新獎(jiǎng)、IEEE ICDM研究貢獻(xiàn)獎(jiǎng)的獲獎(jiǎng)?wù)?,KDD-06,ICDM'06和SDM'06的計(jì)劃委員會(huì)成員;和ICDM'06的145名與會(huì)者。
而本文中top10的算法更適用于初學(xué)者,主要是原文作者在孟買大學(xué)學(xué)習(xí)“數(shù)據(jù)倉庫與挖掘”的課程中學(xué)習(xí)到的。
四 有監(jiān)督學(xué)習(xí)算法
1 線性回歸
在機(jī)器學(xué)習(xí)當(dāng)中,我們有一個(gè)變量X的集合用來決定輸出變量Y。在輸入變量X和輸出變量Y之間存在著某種關(guān)系。機(jī)器學(xué)習(xí)的目的就是去量化這種關(guān)系。
在線性回歸里,輸入變量X和輸出變量Y之間的關(guān)系,用等式Y(jié) = a + bX 來表示。因此,線性回歸的目標(biāo)便是找出系數(shù)a和b的值。在這里,a是截距,b是斜率。
圖1繪制了數(shù)據(jù)中X和Y的值。我們的目標(biāo)是去擬合一條最接近所有點(diǎn)的直線。這意味著,直線上每一個(gè)X對(duì)應(yīng)點(diǎn)的Y值與實(shí)際數(shù)據(jù)中點(diǎn)X對(duì)應(yīng)的Y值,誤差最小。
2 邏輯回歸
使用一個(gè)轉(zhuǎn)換函數(shù)后,線性回歸預(yù)測(cè)的是連續(xù)的值(比如降雨量),而邏輯回歸預(yù)測(cè)的是離散的值(比如一個(gè)學(xué)生是否通過考試,是:0,否:1)。
邏輯回歸最適用于二分類(數(shù)據(jù)只分為兩類,Y = 0或1,一般用1作為默認(rèn)的類。比如:預(yù)測(cè)一個(gè)事件是否發(fā)生,事件發(fā)生分類為1;預(yù)測(cè)一個(gè)人是否生病,生病分類為1)。我們稱呼其為邏輯回歸(logistic regression)是因?yàn)槲覀兊霓D(zhuǎn)換函數(shù)采用了logistic function (h(x)=1/(1+e的-x次方)) 。
在邏輯回歸中,我們首先得到的輸出是連續(xù)的默認(rèn)類的概率p(0小于等于p小于等于1)。轉(zhuǎn)換函數(shù) (h(x)=1/(1+e的-x次方))的值域便是(0,1)。我們對(duì)該函數(shù)設(shè)置一個(gè)域值t。若概率p>t,則預(yù)測(cè)結(jié)果為1。
在圖2中,判斷腫瘤是惡性還是良性。默認(rèn)類y=1(腫瘤是惡性)。當(dāng)變量X是測(cè)量腫瘤的信息,如腫瘤的尺寸。如圖所示,logistic函數(shù)由變量X得到輸出p。域值t在這里設(shè)置為0.5。如果p大于t,那么腫瘤則是惡性。
我們考慮邏輯回歸的一種變形:
3 分類回歸樹(CART)
分類回歸樹是諸多決策樹模型的一種實(shí)現(xiàn),類似還有ID3、C4.5等算法。
非終端節(jié)點(diǎn)有根節(jié)點(diǎn)(Root Node)和內(nèi)部節(jié)點(diǎn)(Internal Node)。終端節(jié)點(diǎn)是葉子節(jié)點(diǎn)(Leaf Node)。每一個(gè)非終端節(jié)點(diǎn)代表一個(gè)輸出變量X和一個(gè)分岔點(diǎn),葉葉子節(jié)點(diǎn)代表輸出變量Y,見圖3。沿著樹的分裂(在分岔點(diǎn)做一次決策)到達(dá)葉子節(jié)點(diǎn),輸出便是當(dāng)前葉子節(jié)點(diǎn)所代表的值。
圖3中的決策樹,根據(jù)一個(gè)人的年齡和婚姻狀況進(jìn)行分類:1.購買跑車;2.購買小型貨車。如果這個(gè)人30歲還沒有結(jié)婚,我們沿著決策樹的過程則是:‘超過30年?--是--已婚?--否,那么我們的輸出便是跑車。
4 樸素貝葉斯
在給定一個(gè)事件發(fā)生的前提下,計(jì)算另外一個(gè)事件發(fā)生的概率——我們將會(huì)使用貝葉斯定理。
設(shè)先驗(yàn)知識(shí)為d,為了計(jì)算我們的假設(shè)h為真的概率,我們將要使用如下貝葉斯定理:
P(h|d)=后驗(yàn)概率。這是在給定數(shù)據(jù)d的前提下,假設(shè)h為真的概率。
P(d|h)=可能性。這是在給定假設(shè)h為真的前提下,數(shù)據(jù)d的概率。
P(h)=類先驗(yàn)概率。這是假設(shè)h為真時(shí)的概率(與數(shù)據(jù)無關(guān))
P(d)=預(yù)測(cè)器先驗(yàn)概率。這是數(shù)據(jù)的概率(與假設(shè)無關(guān))
之所以稱之為樸素是因?yàn)樵撍惴俣ㄋ械淖兞慷际窍嗷オ?dú)立的(在現(xiàn)實(shí)生活大多數(shù)情況下都可以做這樣的假設(shè))。
如圖4,當(dāng)天氣是晴天的時(shí)候(第一列第一行),選手的狀態(tài)是如何的呢?
在給定變量天氣是晴天(sunny)的時(shí)候,為了判斷選手的狀態(tài)是‘yes’還是‘no’,計(jì)算概率,然后選擇概率更高的作為輸出。
5 K最近鄰(KNN)
K最近鄰算法是利用整個(gè)數(shù)據(jù)集作為訓(xùn)練集,而不是將數(shù)據(jù)集分成訓(xùn)練集和測(cè)試集。
當(dāng)要預(yù)測(cè)一個(gè)新的輸入實(shí)體的輸出時(shí),k最近鄰算法尋遍整個(gè)數(shù)據(jù)集去發(fā)現(xiàn)k個(gè)和新的實(shí)體距離最近的實(shí)體,或者說,k個(gè)與新實(shí)體最相似的實(shí)體,然后得到這些輸出的均值(對(duì)于回歸問題)或者最多的類(對(duì)于分類問題)。而k的值一般由用戶決定。
不同實(shí)體之間的相似度,不同的問題有不同的計(jì)算方法,包括但不限于:Euclidean distance 和Hamming distance。
五 無監(jiān)督學(xué)習(xí)算法
6 關(guān)聯(lián)規(guī)則算法
關(guān)聯(lián)規(guī)則算法在數(shù)據(jù)庫的候選項(xiàng)集中用來挖掘出現(xiàn)頻繁項(xiàng)集,并且發(fā)現(xiàn)他們之間的關(guān)聯(lián)規(guī)則。關(guān)聯(lián)規(guī)則算法在購物籃分析中得到了很好的應(yīng)用。所謂的購物籃分析,是指找到數(shù)據(jù)庫中出現(xiàn)頻率最高的事物的組合。通常,如果存在關(guān)聯(lián)規(guī)則:“購買了商品x的人,也會(huì)購買商品y”,我們將其記作:x--y。
比如,如果一個(gè)人購買了牛奶和糖,那么他很有可能會(huì)購買咖啡粉。在充分考慮了支持度(support)和置信度(confidence)后,得到關(guān)聯(lián)規(guī)則。
支持度(support)檢驗(yàn)項(xiàng)目集是否頻繁。支持度的檢驗(yàn)是符合Apriori原理的,即當(dāng)一個(gè)項(xiàng)目集是頻繁的,那么它所有的子集一定也是頻繁的。
我們通過置信度(confidence)的高低,從頻繁項(xiàng)集中找出強(qiáng)關(guān)聯(lián)規(guī)則。
根據(jù)提升度(lift),從強(qiáng)關(guān)聯(lián)規(guī)則中篩選出有效的強(qiáng)關(guān)聯(lián)規(guī)則。
7. K-means算法
k-means算法是一個(gè)迭代算法的聚類算法,它將相似的數(shù)據(jù)化到一個(gè)簇(cluster)中。該算法計(jì)算出k個(gè)簇的中心點(diǎn),并將數(shù)據(jù)點(diǎn)分配給距離中心點(diǎn)最近的簇。
1. k-means初始化:
a) 選擇一個(gè)k值。如圖6,k=3。
b) 隨機(jī)分配每一個(gè)數(shù)據(jù)點(diǎn)到三個(gè)簇中的任意一個(gè)。
c) 計(jì)算每一個(gè)簇的中心點(diǎn)。如圖6,紅色,藍(lán)色,綠色分別代表三個(gè)簇的中心點(diǎn)。
2. 將每一個(gè)觀察結(jié)果與當(dāng)前簇比較:
a) 重新分配每一個(gè)點(diǎn)到距中心點(diǎn)最近的簇中。如圖6,上方5個(gè)點(diǎn)被分配給藍(lán)色中心點(diǎn)的簇。
3. 重新計(jì)算中心點(diǎn):
a) 為新分配好的簇計(jì)算中心點(diǎn)。如圖六,中心點(diǎn)改變。
4. 迭代,不再改變則停止:
a) 重復(fù)步驟2-3,直到所有點(diǎn)所屬簇不再改變。
8. 主成分分析(PCA)
主成分分析是通過減少變量的維度,去除數(shù)據(jù)中冗余的部分或?qū)崿F(xiàn)可視化。基本的思路將數(shù)據(jù)中最大方差的部分反映在一個(gè)新的坐標(biāo)系中,這個(gè)新的坐標(biāo)系則被稱為“主要成分”。其中每一個(gè)成分,都是原來成分的線性組合,并且每一成分之間相互正交。正交性保證了成分之間是相互獨(dú)立的。
第一主成分反映了數(shù)據(jù)最大方差的方向。第二主成分反映了數(shù)據(jù)中剩余的變量的信息,并且這些變量是與第一主成分無關(guān)的。同樣地,其他主成分反映了與之前成分無關(guān)的變量的信息。
六 集成學(xué)習(xí)技術(shù)
集成學(xué)習(xí)是一種將不同學(xué)習(xí)模型(比如分類器)的結(jié)果組合起來,通過投票或平均來進(jìn)一步提高準(zhǔn)確率。一般,對(duì)于分類問題用投票;對(duì)于回歸問題用平均。這樣的做法源于“眾人拾材火焰高”的想法。
集成算法主要有三類:Bagging,Boosting 和Stacking。本文將不談及stacking。
9. 使用隨機(jī)森林的Bagging
隨機(jī)森林算法(多個(gè)模型)是袋裝決策樹(單個(gè)模型)的提升版。
Bagging的第一步是針對(duì)數(shù)據(jù)集,利用自助抽樣法(Bootstrap Sampling method)建造多個(gè)模型。
所謂的自助抽樣,是指得到一個(gè)由原始數(shù)據(jù)集中隨機(jī)的子集組成的新的訓(xùn)練集。每一個(gè)這樣的訓(xùn)練集都和原始訓(xùn)練集的大小相同,但其中有一些重復(fù)的數(shù)據(jù),因此并不等于原始訓(xùn)練集。并且,我們將原始的數(shù)據(jù)集用作測(cè)試集。因此,如果原始數(shù)據(jù)集的大小為N,那么新的訓(xùn)練集的大小也為N(其中不重復(fù)的數(shù)據(jù)數(shù)量為2N/3),測(cè)試集的大小為N。
Bagging的第二步是在抽樣的不同的訓(xùn)練集上,利用相同的算法建造多個(gè)模型。
在這里,我們以隨機(jī)森林為例。決策樹是靠每一個(gè)節(jié)點(diǎn)在最重要的特征處分離來減小誤差的,但與之不同,隨機(jī)森林中,我們選擇了隨機(jī)塞選的特征來構(gòu)造分裂點(diǎn)。這樣可以減小所得預(yù)測(cè)之間的相關(guān)性。
每一個(gè)分裂點(diǎn)搜索的特征的數(shù)量,是隨機(jī)森林算法的參數(shù)。
因此,用隨機(jī)森林算法實(shí)現(xiàn)的Bagging,每一個(gè)樹都是用隨機(jī)樣本構(gòu)造的,每一個(gè)分裂點(diǎn)都是用隨機(jī)的預(yù)測(cè)器構(gòu)造的。
10.用AdaBoost實(shí)現(xiàn)的Boosting
a) 因?yàn)锽agging中的每一個(gè)模型是獨(dú)立構(gòu)造的,我們認(rèn)為它是并行集成的。與之不同,Boosting中的每一個(gè)模型,都是基于對(duì)前一個(gè)模型的過失進(jìn)行修正來構(gòu)造的,因此Boosting是線性的。
b) Bagging中采用的是簡單的投票,每一個(gè)分類器相當(dāng)于一個(gè)投票(節(jié)點(diǎn)分裂,相當(dāng)于進(jìn)行一次投票),最后的輸出是與大多數(shù)的投票有關(guān);而在Boosting中,我們對(duì)每一個(gè)投票賦予權(quán)重,最后的輸出也與大多數(shù)的投票有關(guān)——但是它卻是線性的,因?yàn)橘x予了更大的權(quán)重給被前一個(gè)模型錯(cuò)誤分類的實(shí)體(擁有更大的權(quán)重,則其誤差的影響被放大,有助于我們得到使得更小誤差的模型)。
AdaBoost指的是自適應(yīng)增強(qiáng)(Adaptive Boosting)
在圖8中,第一、二、三步中弱學(xué)習(xí)模型被稱作決策樹樁(一個(gè)一級(jí)的決策樹只依據(jù)一個(gè)輸入特征進(jìn)行預(yù)測(cè);一個(gè)決策樹的根節(jié)點(diǎn)直接連接到它的葉子節(jié)點(diǎn))。構(gòu)造弱學(xué)習(xí)模型的過程持續(xù)到,a)達(dá)到用戶定義的數(shù)量,或者 b)繼續(xù)訓(xùn)練已經(jīng)無法提升。第四步,將三個(gè)決策樹樁組合起來。
第一步:從一個(gè)決策樹樁開始,根據(jù)一個(gè)輸入變量作出決定
從圖中可以看見,其中有兩個(gè)圓圈分類錯(cuò)誤,因此我們可以給他們賦予更大的 權(quán)重,運(yùn)用到下一個(gè)決策樹樁中。
第二步:依據(jù)不同的輸入變量,構(gòu)造下一個(gè)決策樹樁
可以發(fā)現(xiàn)第二個(gè)決策將會(huì)嘗試將更大權(quán)重的數(shù)據(jù)預(yù)測(cè)正確。和如圖的情況中, 我們需要對(duì)另外三個(gè)圓圈賦予更大的權(quán)重。
第三步:依據(jù)不同的輸入變量,訓(xùn)練不同的決策樹樁
之前步驟一樣,只是這次被預(yù)測(cè)錯(cuò)誤的是三角形的數(shù)據(jù),因此我們需要對(duì)其賦 予更大的權(quán)重。
第四步:將決策樹樁組合起來
我們將三個(gè)模型組合起來,顯而易見,集成的模型比單個(gè)模型準(zhǔn)確率更高。
七 結(jié)論
在本文中,我們學(xué)習(xí)到了:
a) 五個(gè)有監(jiān)督學(xué)習(xí)的算法:線性回歸,邏輯回歸,分類回歸樹,樸素貝葉斯,K最近鄰
b) 三個(gè)無監(jiān)督學(xué)習(xí)的算法:關(guān)聯(lián)規(guī)則算法,K-means聚類算法,主成分分析
c) 兩個(gè)集成算法:用隨機(jī)森林實(shí)現(xiàn)的Bagging,用XGBoost實(shí)現(xiàn)的Boosting。
聯(lián)系客服