隨著機(jī)器學(xué)習(xí)的進(jìn)一步火熱,越來(lái)越多的算法已經(jīng)可以用在許多任務(wù)的執(zhí)行上,并且表現(xiàn)出色。
但是動(dòng)手之前到底哪個(gè)算法可以解決我們特定的實(shí)際問(wèn)題并且運(yùn)行效果良好,這個(gè)答案很多新手是不知道的。如果你處理問(wèn)題時(shí)間可以很長(zhǎng),你可以逐個(gè)調(diào)研并且嘗試它們,反之則要在最短的時(shí)間內(nèi)解決技術(shù)調(diào)研任務(wù)。
?
Michael Beyeler的一篇文章告訴我們整個(gè)技術(shù)選型過(guò)程,一步接著一步,依靠已知的技術(shù),從模型選擇到超參數(shù)調(diào)整。
在Michael的文章里,他將技術(shù)選型分為6步,從第0步到第5步,事實(shí)上只有5步,第0步屬于技術(shù)選型預(yù)積累步驟。
第0步:了解基本知識(shí)
在我們深入之前,我們要明確我們了解了基礎(chǔ)知識(shí)。具體來(lái)說(shuō),我們應(yīng)該知道有三個(gè)主要的機(jī)器學(xué)習(xí)分類:監(jiān)督學(xué)習(xí)(supervised learning)、無(wú)監(jiān)督學(xué)習(xí)(unsupervised learning),以及強(qiáng)化學(xué)習(xí)(reinforcement learning)。
監(jiān)督學(xué)習(xí):每個(gè)數(shù)據(jù)點(diǎn)被標(biāo)記或者與一個(gè)類別或者感興趣值相關(guān)聯(lián)。分類標(biāo)簽的一個(gè)例子是將圖像指定為“貓”或者“狗”。價(jià)值標(biāo)簽的一個(gè)例子是銷售價(jià)格與二手車相關(guān)聯(lián)。監(jiān)督學(xué)習(xí)的目標(biāo)是研究許多這樣的標(biāo)記示例,進(jìn)而能夠堆未來(lái)的數(shù)據(jù)點(diǎn)進(jìn)行預(yù)測(cè),例如,確定新的照片與正確的動(dòng)物(分類(classification))或者指定其他二手車的準(zhǔn)確銷售價(jià)格(回歸(regression))。
無(wú)監(jiān)督學(xué)習(xí):數(shù)據(jù)點(diǎn)沒(méi)有標(biāo)簽對(duì)應(yīng)。相反,一個(gè)無(wú)監(jiān)督學(xué)習(xí)算法的目標(biāo)是以一些方式組織數(shù)據(jù)或者表述它的結(jié)構(gòu)。這意味著將其分組到集群內(nèi)部,或者尋找不同的方式查看復(fù)雜數(shù)據(jù),使其看起來(lái)更簡(jiǎn)單。
強(qiáng)化學(xué)習(xí):對(duì)應(yīng)于每一個(gè)數(shù)據(jù)點(diǎn),算法需要去選擇一個(gè)動(dòng)作。這是一種常見(jiàn)的機(jī)器人方法,在一個(gè)時(shí)間點(diǎn)的傳感器讀數(shù)集合是一個(gè)數(shù)據(jù)點(diǎn),算法必須選擇機(jī)器人的下一個(gè)動(dòng)作。這也是很普通的物聯(lián)網(wǎng)應(yīng)用模式,學(xué)習(xí)算法接收一個(gè)回報(bào)信號(hào)后不久,反饋這個(gè)決定到底好不好。基于此,算法修改其策略為了達(dá)到更高的回報(bào)。
第1步:對(duì)問(wèn)題進(jìn)行分類
下一步,我們要對(duì)手頭上的問(wèn)題進(jìn)行分類。這是一個(gè)兩步步驟:
通過(guò)輸入分類:如果我們有標(biāo)簽數(shù)據(jù),這是一個(gè)監(jiān)督學(xué)習(xí)問(wèn)題。如果我們有無(wú)標(biāo)簽數(shù)據(jù)并且想要去發(fā)現(xiàn)結(jié)構(gòu),這是一個(gè)無(wú)監(jiān)督學(xué)習(xí)問(wèn)題。如果我們想要通過(guò)與環(huán)境交互優(yōu)化目標(biāo)函數(shù),這是一個(gè)強(qiáng)化學(xué)習(xí)問(wèn)題。
通過(guò)輸出分類:如果一個(gè)模型的輸出是一個(gè)數(shù)字,這是一個(gè)回歸問(wèn)題。如果模型的輸出是一個(gè)類(或者分類),這是一個(gè)分類問(wèn)題。如果模型的輸出是輸入組的集合,這是一個(gè)分類問(wèn)題。
就是那么簡(jiǎn)單。總而言之,我們可以通過(guò)問(wèn)自己算法需要解決什么問(wèn)題,進(jìn)而發(fā)現(xiàn)算法的正確分類。
上面這張圖包含了一些我們還沒(méi)有討論的技術(shù)術(shù)語(yǔ):
分類(Classification):當(dāng)數(shù)據(jù)被用來(lái)預(yù)測(cè)一個(gè)分類,監(jiān)督學(xué)習(xí)也被稱為分類。這是一個(gè)例子當(dāng)指定一張相作為“貓”或“狗”的圖片。當(dāng)只有兩種選擇時(shí),稱為二類(two-class)或二項(xiàng)式分類(binomial
classification)。當(dāng)有更多類別的時(shí)候,當(dāng)我們預(yù)測(cè)下一個(gè)諾貝爾物理學(xué)獎(jiǎng)得住,這個(gè)問(wèn)題被稱為多項(xiàng)式分類(multi-class
classification)。
回歸(Regression):當(dāng)一個(gè)值被預(yù)測(cè)時(shí),與股票價(jià)格一樣,監(jiān)督學(xué)習(xí)也被稱為回歸。
聚類(Clustering):非監(jiān)督學(xué)習(xí)最常用的方法是聚類分析或者聚類。聚類是一組對(duì)象組的任務(wù),在這樣的一種方式下,在同一組中的對(duì)象(稱為集群)是更加相似的(在某一種意義上),相比其他組(集群)里的對(duì)象。
異常檢測(cè)(Anomaly
detection):需要在目標(biāo)里找到不尋常的數(shù)據(jù)點(diǎn)。在欺詐檢測(cè)里,例如,任何非常不尋常的信用卡消費(fèi)模式都是可以的??赡艿淖兓芏?,而訓(xùn)練示例很少,這看起來(lái)不是一種可行方式了解欺詐活動(dòng)。異常檢測(cè)需要的方法是簡(jiǎn)單地了解什么是正常的活動(dòng)(使用非欺詐交易歷史記錄),并且確定明顯不同的內(nèi)容。
第2步:找到可用的算法
現(xiàn)在我們有分類問(wèn)題,我們可以使用工具去調(diào)研和驗(yàn)證算法是可行的和可實(shí)踐的。
Microsoft Azure已經(jīng)創(chuàng)建了一個(gè)方便的算法表格,這個(gè)表格顯示算法可以被用于哪些問(wèn)題分類。雖然這個(gè)表格是針對(duì)Azure軟件,它一般適用于:
一些值得關(guān)注的算法是:
分類(Classification):
支持向量機(jī)(SVM):通過(guò)盡可能寬的邊緣方式發(fā)現(xiàn)分離類的邊界。當(dāng)二分式不能清晰的切分時(shí),算法找到最好的邊界。這個(gè)算法真正的亮點(diǎn)是強(qiáng)烈的數(shù)據(jù)特征,好像文本或者染色體組(>100特性)。在這些情況下,SVMs比其許多其他算法更快遞切分二項(xiàng),也更少地過(guò)度擬合,除了需要少量的內(nèi)存。
人工神經(jīng)網(wǎng)絡(luò)(Artificial neural networks):是大腦啟發(fā)學(xué)習(xí)算法,覆蓋多項(xiàng)式分類、二項(xiàng)式分類,以及回歸問(wèn)題。它們帶來(lái)了無(wú)限的多樣性,包括感知和深度學(xué)習(xí)。它們花費(fèi)很長(zhǎng)時(shí)間進(jìn)行訓(xùn)練,但是帶來(lái)各種應(yīng)用領(lǐng)域的先進(jìn)性能。
邏輯回歸(Logistic regression):雖然包含‘回歸’這個(gè)詞看上去有點(diǎn)令人費(fèi)解,邏輯回歸事實(shí)上是一個(gè)對(duì)于二項(xiàng)式和多項(xiàng)式分類來(lái)說(shuō)強(qiáng)大的功能。它很快和簡(jiǎn)單。事實(shí)是它使用了‘S’形曲線代替直線讓它對(duì)于切分?jǐn)?shù)據(jù)進(jìn)入組變得很自然。邏輯回歸給出線性分類邊界(linear class boundaries),所以當(dāng)你使用它來(lái)確保一個(gè)線性近似的時(shí)候,類似于你生活中可以使用的一些東西。
決策樹(shù)和隨機(jī)樹(shù)(Decision trees、random forests):決策森林(回歸、二項(xiàng)式,以及多項(xiàng)式),決策叢林(二項(xiàng)式、多項(xiàng)式),以及提高決策樹(shù)(回歸和二項(xiàng)式)所有被稱為決策樹(shù),一種機(jī)器學(xué)習(xí)的基本概念。決策樹(shù)的變種有很多,但是它們都做了相同的事情,使用相同的標(biāo)簽細(xì)分特征空間到各個(gè)區(qū)域。這些可以是一致類別或者恒定值的區(qū)域,依賴于是否你正在做分類或者回歸。
回歸(Regression):
線性回歸(Linear
regression):線性回歸擬合直接(或者平臺(tái),或者超平面)數(shù)據(jù)集。這是一個(gè)工具,簡(jiǎn)單而快速,但是對(duì)于一些問(wèn)題可能過(guò)于簡(jiǎn)單。
貝葉斯線性回歸(Bayesian linear
regression):它有非??扇〉钠焚|(zhì),避免了過(guò)度擬合。貝葉斯方式實(shí)現(xiàn)它通過(guò)對(duì)可能分布的答案作出一些假設(shè)。這種方式的其他副產(chǎn)品是它們有很少的參數(shù)。
提高決策樹(shù)回歸:如上所述,提高決策樹(shù)(回歸或二項(xiàng)式)是基于決策樹(shù)的,并通過(guò)細(xì)分大多數(shù)相同標(biāo)簽的特征空間到區(qū)域完成。提高決策樹(shù)通過(guò)限制它們可以細(xì)分的次數(shù)和每一個(gè)區(qū)域的最小數(shù)據(jù)點(diǎn)數(shù)量避免過(guò)度擬合。算法構(gòu)造一顆序列樹(shù),每一顆樹(shù)學(xué)習(xí)補(bǔ)償樹(shù)前留下的錯(cuò)誤。結(jié)果是非常準(zhǔn)確的學(xué)習(xí)者,該算法傾向于使用大量?jī)?nèi)存。
聚合(Clustering):
層次聚類(Hierarchical
clustering):層次聚類的試圖簡(jiǎn)歷一個(gè)層次結(jié)構(gòu)的聚類,它有兩種格式。聚集聚類(Agglomerative
clustering)是一個(gè)“自下而上”的過(guò)程,其中每個(gè)觀察從自己的聚類開(kāi)始,隨著其在層次中向上移動(dòng),成對(duì)的聚類會(huì)進(jìn)行融合。分裂聚類(Divisive
clustering)則是一種“自頂向下”的方式,所有的觀察開(kāi)始于一個(gè)聚類,并且會(huì)隨著向下的層次移動(dòng)而遞歸式地分裂。整體而言,這里進(jìn)行的融合和分裂是以一種激進(jìn)的方式確定。層次聚類的結(jié)果通常表示成樹(shù)狀圖(dendrogram)形式。
k-均值聚類(k-means
clustering)的目標(biāo)是將n組觀測(cè)值分為k個(gè)聚類,其中每個(gè)觀測(cè)值都屬于其接近的那個(gè)均值的聚類,這些均值被用作這些聚類的原型。這會(huì)將數(shù)據(jù)空間分割成Voronoidan單元。
異常檢測(cè)(Anomaly detection):
K最近鄰(k-nearest
neighbors/k-NN)是用于分類和回歸的非參數(shù)方法。在這兩種情況下,輸入都是由特征空間中與k最接近的訓(xùn)練樣本組成的。在k-NN分類中,輸出是一個(gè)類成員。對(duì)象通過(guò)其k最近鄰的多數(shù)投票來(lái)分類,其中對(duì)象被分配給k最近鄰并且最常見(jiàn)的類(k是一個(gè)正整數(shù),通常較小)。在k-NN回歸中,輸出為對(duì)象的屬性值。該值為其k最近鄰值的平均值。
單類支持向量機(jī)(One-class
SVM):使用了非線性支持向量機(jī)的一個(gè)巧妙的擴(kuò)展,單類支持向量機(jī)可以描繪一個(gè)嚴(yán)格概述整個(gè)數(shù)據(jù)集的邊界。遠(yuǎn)在邊界之外的任何新數(shù)據(jù)點(diǎn)都是足夠非正常的,也是值得特別關(guān)注的。
第3步:實(shí)現(xiàn)所有適用的算法
對(duì)于給定的問(wèn)題,通常會(huì)有一些候選算法可以適用。所以我們?nèi)绾沃滥囊粋€(gè)可以挑選?通常,這個(gè)問(wèn)題的答案不是那么直截了當(dāng)?shù)?,所以我們必須反?fù)試驗(yàn)。
原型開(kāi)發(fā)最好分兩步完成。第一步,我們希望通過(guò)最小化特征工程快速而簡(jiǎn)單地完成幾種算法的實(shí)現(xiàn)。在這個(gè)階段,我們主要興趣在粗略來(lái)看那個(gè)算法表現(xiàn)更好。這個(gè)步驟有點(diǎn)類似招聘:我們會(huì)盡可能地尋找可以縮短我們候選算法列表的理由。
一旦我們將列表縮減為幾個(gè)候選算法,真正的原型開(kāi)發(fā)開(kāi)始了。理想地,我們想建立一個(gè)機(jī)器學(xué)習(xí)流程,使用一組經(jīng)過(guò)精心挑選的評(píng)估標(biāo)準(zhǔn)比較每個(gè)算法在數(shù)據(jù)集上的表現(xiàn)。在這個(gè)階段,我們只處理一小部分的算法,所以我們可以把注意力轉(zhuǎn)到真正神奇的地方:特征工程。
第4步:特征工程
或許比選擇算法更重要的是正確選擇表示數(shù)據(jù)的特征。從上面的列表中選擇合適的算法是相對(duì)簡(jiǎn)單直接的,然而特征工程卻更像是一門藝術(shù)。
主要問(wèn)題在于我們?cè)噲D分類的數(shù)據(jù)在特征空間的描述極少。利如,用像素的灰度值來(lái)預(yù)測(cè)圖片通常是不佳的選擇;相反,我們需要找到能提高信噪比的數(shù)據(jù)變換。如果沒(méi)有這些數(shù)據(jù)轉(zhuǎn)換,我們的任務(wù)可能無(wú)法解決。利如,在方向梯度直方圖(HOG)出現(xiàn)之前,復(fù)雜的視覺(jué)任務(wù)(像行人檢測(cè)或面部檢測(cè))都是很難做到的。
雖然大多數(shù)特征的有效性需要靠實(shí)驗(yàn)來(lái)評(píng)估,但是了解常見(jiàn)的選取數(shù)據(jù)特征的方法是很有幫助的。這里有幾個(gè)較好的方法:
主成分分析(Principal component
analysis,PCA):一種線性降維方法,可以找出包含信息量較高的特征主成分,可以解釋數(shù)據(jù)中的大多數(shù)方差。
尺度不變特征變換(Scale-invariant feature
transform,SIFT):計(jì)算機(jī)視覺(jué)領(lǐng)域中的算法,用以檢測(cè)和描述圖片的局部特征。它有一個(gè)開(kāi)源的替代方法
ORB(Oriented FAST and rotated BRIEF)。
加速穩(wěn)健特征(Speeded up robust features,SURF):SIFT 的更穩(wěn)健版本。
方向梯度直方圖(Histogram of oriented
gradients,HOG):一種特征描述方法,在計(jì)算機(jī)視覺(jué)中用于計(jì)數(shù)一張圖像中局部部分的梯度方向的發(fā)生。
當(dāng)然,你也可以想出你自己的特征描述方法。如果你有幾個(gè)候選方法,你可以使用封裝好的方法進(jìn)行智能的特征選擇。
前向搜索:
最開(kāi)始不選取任何特征。
然后選擇最相關(guān)的特征,將這個(gè)特征加入到已有特征;計(jì)算模型的交叉驗(yàn)證誤差,重復(fù)選取其它所有候選特征;最后,選取能使你交叉驗(yàn)證誤差最小特征,并放入已選擇的特征之中。
重復(fù),直到達(dá)到期望數(shù)量的特征為止!
反向搜索:
從所有特征開(kāi)始。
先移除最不相關(guān)的特征,然后計(jì)算模型的交叉驗(yàn)證誤差;對(duì)其它所有候選特征,重復(fù)這一過(guò)程;最后,移除使交叉驗(yàn)證誤差最大的候選特征。
重復(fù),直到達(dá)到期望數(shù)量的特征為止!
使用交叉驗(yàn)證的準(zhǔn)則來(lái)移除和增加特征!
第5步:超參數(shù)優(yōu)化(可選)
最后,你可能想優(yōu)化算法的超參數(shù)。例如,主成分分析中的主成分個(gè)數(shù),k 近鄰算法的參數(shù) k,或者是神經(jīng)網(wǎng)絡(luò)中的層數(shù)和學(xué)習(xí)速率。最好的方法是使用交叉驗(yàn)證來(lái)選擇。
一旦你運(yùn)用了上述所有方法,你將有很好的機(jī)會(huì)創(chuàng)造出強(qiáng)大的機(jī)器學(xué)習(xí)系統(tǒng)。但是,你可能也猜到了,成敗在于細(xì)節(jié),你可能不得不反復(fù)實(shí)驗(yàn),最后才能走向成功。
相關(guān)知識(shí)
二項(xiàng)式分類(binomial classification):
適用環(huán)境:
各觀察單位只能具有相互對(duì)立的一種結(jié)果,如陽(yáng)性或陰性,生存或死亡等,屬于兩分類資料。
已知發(fā)生某一結(jié)果(陽(yáng)性)的概率為p,其對(duì)立結(jié)果的概率為1?p,實(shí)際工作中要求p是從大量觀察中獲得比較穩(wěn)定的數(shù)值。
n次試驗(yàn)在相同條件下進(jìn)行,且各個(gè)觀察單位的觀察結(jié)果相互獨(dú)立,即每個(gè)觀察單位的觀察結(jié)果不會(huì)影響到其他觀察單位的結(jié)果。如要求疾病無(wú)傳染性、無(wú)家族性等。
符號(hào):b(x,n,p)
概率函數(shù)*:Cxnpxqn?x,其中x=0,1,?,n為正整數(shù)即發(fā)生的次數(shù),Cxn=n!x!(n?x)!
例題:
擲硬幣試驗(yàn)。有10個(gè)硬幣擲一次,或1個(gè)硬幣擲十次。問(wèn)五次正面向上的概率是多少?
解:根據(jù)題意n=10,p=q=12,x=5
b(5,l0,12)=C510p5q10=10!(5!(10?5)!)×(12)5×(12)5=252×(132)×(132)=0.2469
所以五次正面向上的概率為0.24609
Support vector machines
是一種監(jiān)督式學(xué)習(xí)的方法,可廣泛地應(yīng)用于統(tǒng)計(jì)分類以及回歸分析。支持向量機(jī)屬于一般化線性分類器,也可以被認(rèn)為是提克洛夫規(guī)范化(Tikhonov Regularization)方法的一個(gè)特例。這族分類器的特點(diǎn)是他們能夠同時(shí)最小化經(jīng)驗(yàn)誤差與最大化幾何邊緣區(qū),因此支持向量機(jī)也被稱為最大邊緣區(qū)分類器。
全文總結(jié)
所有的技術(shù)選型原理都是類似的,首先需要你的自身知識(shí)積累,然后是明確需要解決的問(wèn)題,即明確需求。接下來(lái)確定一個(gè)較大的調(diào)研范圍,進(jìn)而進(jìn)一步調(diào)研后縮小范圍,最后通過(guò)實(shí)際應(yīng)用場(chǎng)景的測(cè)試挑選出合適的技術(shù)方案或者方法。機(jī)器學(xué)習(xí)算法選擇,也不例外。
評(píng)論