大數(shù)據(jù)文摘出品 來(lái)源:towardsml 編譯:劉佳瑋、王緣緣、Walker 機(jī)器學(xué)習(xí)算法被認(rèn)為能夠通過(guò)學(xué)習(xí)數(shù)據(jù)來(lái)弄清楚如何執(zhí)行重要任務(wù)。 這意味著數(shù)據(jù)量越大,這些算法就可以解決更加復(fù)雜的問(wèn)題。然而,開發(fā)成功的機(jī)器學(xué)習(xí)應(yīng)用程序需要一定的“民間技巧”,這在教科書或機(jī)器學(xué)習(xí)入門課程中很難找到。 Pedro Domingos教授的一篇很好的研究論文,該論文匯集了機(jī)器學(xué)習(xí)研究人員和從業(yè)者的經(jīng)驗(yàn)教訓(xùn)。 https://homes.cs./~pedrod/ 要避免的陷阱,要關(guān)注的重要問(wèn)題以及一些常見問(wèn)題的答案。準(zhǔn)備好去了解了嗎? 1.學(xué)習(xí)=表示+評(píng)估+優(yōu)化 你有一個(gè)應(yīng)用程序,你認(rèn)為機(jī)器學(xué)習(xí)可能是一個(gè)很好的選擇?,F(xiàn)在,在機(jī)器學(xué)習(xí)領(lǐng)域,每年都會(huì)有大量的機(jī)器學(xué)習(xí)算法可供選擇,有數(shù)百種機(jī)器學(xué)習(xí)算法問(wèn)世。應(yīng)該使用哪一個(gè)? 在這個(gè)巨大的空間中不迷失的關(guān)鍵是要明白所有機(jī)器學(xué)習(xí)算法的都由三個(gè)核心要素組成: 表示:輸入數(shù)據(jù),即要使用的特征,學(xué)習(xí)器和分類器必須以計(jì)算機(jī)可以理解的語(yǔ)言表示。學(xué)習(xí)器可以學(xué)習(xí)的分類器集稱為學(xué)習(xí)器的假設(shè)空間。如果分類器不在假設(shè)空間中,則無(wú)法進(jìn)行學(xué)習(xí)。 澄清說(shuō)明:分類器與學(xué)習(xí)器的含義是什么?假設(shè)你有訓(xùn)練數(shù)據(jù),并使用你構(gòu)建另一個(gè)程序(模型)的程序處理這些數(shù)據(jù),例如決策樹。學(xué)習(xí)器是從輸入數(shù)據(jù)構(gòu)建決策樹模型的程序,而決策樹模型是分類器(能夠?yàn)槊總€(gè)輸入數(shù)據(jù)實(shí)例提供預(yù)測(cè)輸出的東西)。 評(píng)估:需要評(píng)估函數(shù)來(lái)區(qū)分好的分類和壞的分類。算法內(nèi)部使用的評(píng)估函數(shù)可能與我們希望分類器優(yōu)化的外部評(píng)估度量不同(為了便于優(yōu)化,并且與后面討論的問(wèn)題有關(guān)) 優(yōu)化:最后,我們需要一種方法來(lái)在分類器中進(jìn)行搜索,以便我們可以選擇最佳的分類器。學(xué)習(xí)器效率的關(guān)鍵是選擇優(yōu)化技術(shù)。通常從使用現(xiàn)成的優(yōu)化器開始。如果需要,以后你可以用自己的設(shè)計(jì)替換它們。 下表顯示了這三個(gè)組件中每個(gè)組件的一些常見示例。 實(shí)例:K近鄰、支持向量機(jī) 超平面:樸素貝葉斯、Logistic回歸 決策樹 規(guī)則集:命題規(guī)則、邏輯程序 圖模型:貝葉斯網(wǎng)、條件隨機(jī)場(chǎng) 準(zhǔn)確/錯(cuò)誤率 精準(zhǔn)率/召回率 方差 似然函數(shù) 后驗(yàn)概率 信息增益 KL散度 成本-效用 差額 組合優(yōu)化:貪心搜索、集束搜索、分支定界法 持續(xù)優(yōu)化:無(wú)約束(梯度下降、共軛梯度、擬牛頓法)、有約束(線性規(guī)劃、二次規(guī)劃) 2.泛化才有用 機(jī)器學(xué)習(xí)的基本目標(biāo)是概括超出訓(xùn)練集中的例子。因?yàn)?,無(wú)論我們擁有多少數(shù)據(jù),我們都不太可能在測(cè)試時(shí)再次看到這些確切的示例。在訓(xùn)練集上做得很好很容易。初學(xué)者中最常見的錯(cuò)誤是測(cè)試訓(xùn)練數(shù)據(jù)并得到成功的假象。如果所選分類器隨后在新數(shù)據(jù)上進(jìn)行測(cè)試,則通常不會(huì)比隨機(jī)猜測(cè)更好。因此,從一開始就設(shè)置一些數(shù)據(jù),并且僅使用它來(lái)測(cè)試最終選擇的分類器,然后在整個(gè)數(shù)據(jù)上學(xué)習(xí)最終分類器。 當(dāng)然,保留數(shù)據(jù)會(huì)減少可用于訓(xùn)練的樣本數(shù)。這可以通過(guò)交叉驗(yàn)證來(lái)緩解:比如,將你的訓(xùn)練數(shù)據(jù)隨機(jī)分成十個(gè)子集,在訓(xùn)練其余部分時(shí)保持每個(gè)子集,在其未使用的示例上測(cè)試每個(gè)學(xué)習(xí)的分類器,并對(duì)結(jié)果求平均值,來(lái)看特定參數(shù)設(shè)置的效果如何。 3.只有數(shù)據(jù)還不夠 當(dāng)泛化是目標(biāo)時(shí),我們會(huì)遇到另一個(gè)主要后果:僅憑數(shù)據(jù)是不夠的,無(wú)論你擁有多少數(shù)據(jù)。假設(shè)我們想學(xué)習(xí)一百萬(wàn)個(gè)例子中100個(gè)變量的布爾函數(shù)(0/1分類)。這意味著2 ^100-10^6個(gè)例子,你不知道它們的類。如果手頭沒(méi)有更多信息,這怎么能優(yōu)于隨機(jī)猜測(cè)呢? 似乎我們陷入了困境。幸運(yùn)的是,我們想要在現(xiàn)實(shí)世界中學(xué)習(xí)的特性并不是從所有數(shù)學(xué)上可能的函數(shù)集中統(tǒng)一繪制的!實(shí)際上,非常一般的假設(shè)——就像具有相似類的類似示例——是機(jī)器學(xué)習(xí)如此成功的一個(gè)重要原因。 這意味著專業(yè)知識(shí)和對(duì)數(shù)據(jù)的理解對(duì)于做出正確的假設(shè)非常重要。對(duì)學(xué)習(xí)知識(shí)的需求應(yīng)該不足為奇。機(jī)器學(xué)習(xí)并不神奇,它無(wú)法從無(wú)到有。它的作用是從更少的東西中獲得更多。與所有工程一樣,編程需要做很多工作:我們必須從頭開始構(gòu)建所有東西。學(xué)習(xí)更像是農(nóng)業(yè),讓大自然完成大部分工作。農(nóng)民將種子與營(yíng)養(yǎng)物質(zhì)結(jié)合起來(lái)種植農(nóng)作物。學(xué)習(xí)者將知識(shí)與數(shù)據(jù)相結(jié)合以優(yōu)化程序。 4.過(guò)擬合的多面性 過(guò)度擬合的問(wèn)題是機(jī)器學(xué)習(xí)的問(wèn)題。當(dāng)你的學(xué)習(xí)器輸出一個(gè)對(duì)訓(xùn)練數(shù)據(jù)100%準(zhǔn)確但對(duì)測(cè)試數(shù)據(jù)只有50%準(zhǔn)確的分類器時(shí),實(shí)際上它可以輸出一個(gè)對(duì)兩者都準(zhǔn)確度為75%的分類器,它已經(jīng)過(guò)擬合。 機(jī)器學(xué)習(xí)中的每個(gè)人都知道過(guò)擬合,但它有多種形式,并不是很明顯。理解過(guò)擬合的方法之一是將泛化誤差分解為偏差和方差。 偏差是學(xué)習(xí)者一直學(xué)習(xí)同樣錯(cuò)誤的傾向。與真實(shí)信號(hào)無(wú)關(guān),方差是學(xué)習(xí)隨機(jī)事物的傾向。飛鏢圖比可以更好地理解這一點(diǎn),如下圖所示: 例如,線性學(xué)習(xí)器具有較高的偏差,因?yàn)楫?dāng)兩個(gè)類之間的劃分不是明確的超平面時(shí),學(xué)習(xí)器無(wú)法正確地判別關(guān)系。決策樹沒(méi)有這個(gè)問(wèn)題,因?yàn)樗鼈兊膶W(xué)習(xí)方法很靈活。但另一方面,它們可能有高度差異——在同一任務(wù)的不同訓(xùn)練數(shù)據(jù)集上學(xué)習(xí)的決策樹通常是非常不同的,而實(shí)際上它們應(yīng)該是相同的。 現(xiàn)在,如何處理過(guò)擬合? 可以在此處使用交叉驗(yàn)證,例如通過(guò)使用它來(lái)選擇要學(xué)習(xí)的決策樹的最佳大小。但請(qǐng)注意,這里還有一個(gè)問(wèn)題:如果我們使用它來(lái)選擇太多參數(shù),它本身就會(huì)開始過(guò)擬合,我們又回到了同樣的陷阱。 除了交叉驗(yàn)證之外,還有許多方法可以處理過(guò)擬合。最受歡迎的是在評(píng)估函數(shù)中添加正則化項(xiàng)。另一個(gè)選擇是執(zhí)行卡方等統(tǒng)計(jì)顯著性檢驗(yàn),以分析添加更多復(fù)雜性是否會(huì)對(duì)類分布產(chǎn)生任何影響。這里的一個(gè)重點(diǎn)是沒(méi)有特定的技術(shù)“解決”過(guò)擬合問(wèn)題。例如,我們可以通過(guò)陷入欠擬合(偏差)的相反誤差來(lái)避免過(guò)度擬合(方差)。同時(shí)避免兩者都需要學(xué)習(xí)一個(gè)完美的分類器,并沒(méi)有一種技術(shù)總能做到最好(沒(méi)有免費(fèi)的午餐)。 5.高維中的直覺失效 過(guò)擬合后,機(jī)器學(xué)習(xí)中最大的問(wèn)題是維數(shù)的詛咒。這個(gè)表達(dá)式意味著當(dāng)輸入是高維的時(shí),許多在低維度下工作正常的算法變得難以處理。 由于固定大小的訓(xùn)練集覆蓋了輸入空間的一小部分(可能的組合變得巨大),因此隨著示例的維度(即特征的數(shù)量)的增長(zhǎng),正確泛化的難度呈指數(shù)級(jí)增加。但這就是為什么機(jī)器學(xué)習(xí)既有必要又有難度。正如你在下圖所示,即使我們從1維過(guò)渡到3維,能夠分辨出不同示例的工作似乎開始變得越來(lái)越難——在高維度上,所有示例都開始相似。 這里的一般問(wèn)題是,我們來(lái)自三維世界的直覺使我們?cè)诟呔S度上失敗。例如,高維度橙色的大部分體積都在外部,而不是內(nèi)部! 令人難以置信的是:如果恒定數(shù)量的示例在高維超立方體中均勻分布,并且如果我們通過(guò)將其刻在超立方體中來(lái)近似超球面,則在高維度中,超立方體的幾乎所有體積都在超球面之外。這是個(gè)壞消息。因?yàn)樵跈C(jī)器學(xué)習(xí)中,一種類型的形狀通常由另一種形狀近似。 澄清注意:如果你對(duì)所有“夸大其詞”感到困惑,超立方體內(nèi)部的超球面看起來(lái)像是這樣的二維和三維: 因此,你現(xiàn)在可以理解,構(gòu)建2維或3維分類器很容易,但在高維度上,很難理解發(fā)生了什么。反過(guò)來(lái),這使得設(shè)計(jì)好的分類器變得困難。事實(shí)上,我們經(jīng)常陷入這樣的陷阱:認(rèn)為獲取更多特征不會(huì)帶來(lái)負(fù)面影響,因?yàn)樵谧顗牡那闆r下,它們不會(huì)提供關(guān)于類的新信息。但事實(shí)上,維度的詛咒可能會(huì)超過(guò)它們的好處。 啟示:下次當(dāng)你考慮添加更多特征時(shí),請(qǐng)考慮當(dāng)你的維度變得太大時(shí)可能出現(xiàn)的潛在問(wèn)題。 6.特征工程是關(guān)鍵 當(dāng)一天結(jié)束時(shí),所有機(jī)器學(xué)習(xí)項(xiàng)目中有成功的,也有失敗的。它們之間有區(qū)別呢?這個(gè)不難想到,最重要的因素就是使用的特征。如果有許多獨(dú)立的特征,并且每個(gè)特征都與類的相關(guān)性很好,那么機(jī)器學(xué)習(xí)就很容易。相反,如果類是需要通過(guò)復(fù)雜方式處理特征后才能被使用,那么事情就變難了,這也就是特征工程——根據(jù)現(xiàn)在輸入的特征創(chuàng)建新的特征。 通常原始數(shù)據(jù)格式基本不能為建模所用。但你可以從中構(gòu)建可用于學(xué)習(xí)的特征。事實(shí)上,這是機(jī)器學(xué)習(xí)項(xiàng)目中的最花精力的部分。但這也是最有趣的部分之一,在這里直覺、創(chuàng)造力和“小技巧”與技術(shù)是同樣重要的東西。 經(jīng)常會(huì)有初學(xué)者驚訝一個(gè)機(jī)器學(xué)習(xí)項(xiàng)目中花費(fèi)在訓(xùn)練上的時(shí)間竟如此之少。但是,如果考慮收集數(shù)據(jù),整合數(shù)據(jù),清理數(shù)據(jù)并對(duì)其進(jìn)行預(yù)處理的時(shí)間以及在特征選擇上的試錯(cuò)次數(shù),這個(gè)時(shí)間就相對(duì)合理。 更何況,機(jī)器學(xué)習(xí)在構(gòu)建數(shù)據(jù)集和運(yùn)行學(xué)習(xí)樣例上不是一次性的過(guò)程,而是一個(gè)迭代的過(guò)程,需要運(yùn)行學(xué)習(xí)樣例,分析結(jié)果,修改數(shù)據(jù)或?qū)W習(xí)樣例,以及重復(fù)上述過(guò)程。訓(xùn)練往往是最快的部分,但那是因?yàn)槲覀儗?duì)這部分相當(dāng)熟練!特征工程很難,因?yàn)樗菍I(yè)領(lǐng)域的,不過(guò)學(xué)習(xí)器在很大程度上是通用的。當(dāng)然,機(jī)器學(xué)習(xí)界的夢(mèng)想之一就是提高特征工程的自動(dòng)化程度。 7.豐富的數(shù)據(jù)勝過(guò)聰明的算法 假設(shè)你已經(jīng)構(gòu)建了一組最好的特征,但是你得到的分類器仍然不夠準(zhǔn)確。你現(xiàn)在還可以做什么?有兩個(gè)主流的辦法: 設(shè)計(jì)更好的機(jī)器學(xué)習(xí)算法或者是收集更多數(shù)據(jù)(更多樣例,可能還有更多原始特征)。機(jī)器學(xué)習(xí)研究人員會(huì)去改進(jìn)算法,但在現(xiàn)實(shí)中,通往成功的最快途徑往往是獲取更多數(shù)據(jù)。 根據(jù)經(jīng)驗(yàn),具有大量數(shù)據(jù)的傻瓜算法勝過(guò)一個(gè)具有適度數(shù)量的聰明算法。 在計(jì)算機(jī)科學(xué)中,通常情況下,兩個(gè)主要的資源限制是時(shí)間和內(nèi)存。但在機(jī)器學(xué)習(xí)中,還有第三個(gè)約束:訓(xùn)練數(shù)據(jù)。在這三個(gè)中,今天的主要瓶頸是時(shí)間,因?yàn)橛写罅康目捎脭?shù)據(jù),但沒(méi)有足夠的時(shí)間來(lái)處理它們,所以數(shù)據(jù)被閑置了。這意味著在實(shí)踐中,更簡(jiǎn)單的分類器會(huì)勝出,因?yàn)閺?fù)雜的分類器需要很長(zhǎng)的學(xué)習(xí)時(shí)間。 使用更聰明的算法并不會(huì)給出更好的結(jié)果,部分原因是在一天中它們都在做同樣的事情,將所有學(xué)習(xí)樣例基本上都是通過(guò)將相鄰的樣例分組到同一個(gè)類來(lái)工作的。關(guān)鍵的區(qū)別在于對(duì)“相鄰”的定義。 當(dāng)我們有非均勻分布的數(shù)據(jù)時(shí),即使復(fù)雜的學(xué)習(xí)樣例也可以產(chǎn)生非常不同的邊界來(lái)對(duì)結(jié)果進(jìn)行分類,最終它們?nèi)匀辉谥匾獏^(qū)域做出相同的預(yù)測(cè)(具有大量訓(xùn)練樣例的區(qū)域,因此也可能出現(xiàn)大多數(shù)文本樣例)。正如下圖所示,無(wú)論是花式曲線,直線還是逐步邊界,我們都可以得到相同的預(yù)測(cè): 通常,首先嘗試最簡(jiǎn)單的學(xué)習(xí)器(例如,邏輯回歸前的樸素貝葉斯,支持向量機(jī)之前的鄰近算法)。復(fù)雜的學(xué)習(xí)器很吸引人,但它們通常很難使用,因?yàn)樗鼈冃枰刂聘嗟男o以獲得好的結(jié)果,并且因?yàn)樗鼈兊膬?nèi)部更像是黑箱。 8.組合多個(gè)模型,而非只用一個(gè) 在機(jī)器學(xué)習(xí)的早期階段,努力嘗試使用多種學(xué)習(xí)器的各種變形,并選擇最好的那個(gè)。但是研究人員發(fā)現(xiàn),如果不是選擇其中最好的單一模型,而是結(jié)合各種變形會(huì)得到更好的結(jié)果,建模者只需稍加努力就可以獲得顯著提升的效果?,F(xiàn)在建這種模型融合非常普遍: 在最簡(jiǎn)單的技術(shù)稱為bagging算法,我們使用相同的算法,但在原始數(shù)據(jù)的不同子集上進(jìn)行訓(xùn)練。最后,我們?nèi)【祷蛲ㄟ^(guò)某種投票機(jī)制將它們組合起來(lái)。 Boosting算法中學(xué)習(xí)器按順序逐一訓(xùn)練。隨后的每一個(gè)都將其大部分注意力集中在前一個(gè)錯(cuò)誤預(yù)測(cè)的數(shù)據(jù)點(diǎn)上。我們會(huì)一直訓(xùn)練到對(duì)結(jié)果感到滿意為止。 Stacking算法中,不同獨(dú)立分類器的輸出成為新分類器的輸入,該分類器給出最終預(yù)測(cè)。 在Netflix算法大賽中,來(lái)自世界各地的團(tuán)隊(duì)競(jìng)相建立最佳的視頻推薦系統(tǒng)。隨著比賽的進(jìn)行,發(fā)現(xiàn)將學(xué)習(xí)器與其他團(tuán)隊(duì)相結(jié)合可以獲得了最佳成績(jī),并且合并為越來(lái)越大的團(tuán)隊(duì)。獲勝者和亞軍都是超過(guò)100個(gè)學(xué)習(xí)器的疊加集成,兩個(gè)集成的結(jié)合進(jìn)一步改善了結(jié)果。算法組合將更好! 9.理論保證和實(shí)際具有差異 機(jī)器學(xué)習(xí)論文充滿理論保證。我們應(yīng)該對(duì)這些保證做些什么?歸納法傳統(tǒng)上與演繹法形成對(duì)比:在演繹法中,你可以保證結(jié)論是正確的,在歸納法中就很難說(shuō)。最近幾十年的一個(gè)重要進(jìn)展是我們認(rèn)識(shí)到可以做歸納結(jié)果正確性的保證,前提是如果我們?cè)敢饨邮芨怕时WC。 例如,我們可以保證,給定一個(gè)足夠大的訓(xùn)練集,在很大的概率上,學(xué)習(xí)器會(huì)返回一個(gè)成功泛化的假設(shè)或無(wú)法找到一個(gè)保持正確的假設(shè)。 另一種常見的理論保證是給定無(wú)窮的數(shù)據(jù),學(xué)習(xí)器可以保證輸出正確的分類器。在實(shí)踐中,由于我們之前討論過(guò)的偏置-方差的權(quán)衡,如果在無(wú)窮數(shù)據(jù)情況下,學(xué)習(xí)器A比學(xué)習(xí)器B好,那么在有限數(shù)據(jù)的情況下B通常比A好。 理論保證在機(jī)器學(xué)習(xí)中的主要作用不是作為實(shí)際決策的標(biāo)準(zhǔn),而是作為理解算法設(shè)計(jì)的起點(diǎn)。 10.簡(jiǎn)單并不意味著準(zhǔn)確 在機(jī)器學(xué)習(xí)中,奧卡姆剃刀原理通常被認(rèn)為是給定兩個(gè)具有相同訓(xùn)練誤差的分類器,兩者中較簡(jiǎn)單的可能具有較低的測(cè)試誤差。 但事實(shí)并非如此,我們之前看到了一個(gè)反例:即使在訓(xùn)練誤差達(dá)到零之后,通過(guò)添加分類器,一個(gè)boosted ensemble的泛化誤差也會(huì)繼續(xù)改善。與直覺相反,模型的參數(shù)數(shù)量與過(guò)擬合之間沒(méi)有必要的聯(lián)系。也就是說(shuō)在機(jī)器學(xué)習(xí)中,一個(gè)更簡(jiǎn)單的假設(shè)仍然應(yīng)該是首選,因?yàn)楹?jiǎn)單本身就是一種優(yōu)勢(shì),而不是因?yàn)樗馕吨鴾?zhǔn)確性。 11.可表示不等于可學(xué)習(xí) 僅僅因?yàn)榭梢员硎竞瘮?shù)并不意味著可以學(xué)習(xí)它。例如,標(biāo)準(zhǔn)決策樹學(xué)習(xí)器無(wú)法學(xué)習(xí)葉子多于訓(xùn)練樣例的樹木。 給定有限的數(shù)據(jù)、時(shí)間和內(nèi)存,標(biāo)準(zhǔn)學(xué)習(xí)器只能學(xué)習(xí)所有可能功能的一小部分,并且這些子集對(duì)于不同表示的學(xué)習(xí)器是不同的。因此,這里的關(guān)鍵是嘗試不同的學(xué)習(xí)器(并可能將它們結(jié)合起來(lái))是值得的。 12.相關(guān)性不意味著因果性 我們都聽說(shuō)過(guò)相關(guān)性并不意味著因果性,但仍然有人常常傾向于認(rèn)為相關(guān)性意味著因果關(guān)系。 通常,學(xué)習(xí)預(yù)測(cè)模型的目標(biāo)是將它們用作行動(dòng)指南。如果我們發(fā)現(xiàn)用戶在超市經(jīng)常買了啤酒就會(huì)買尿不濕,那么也許把啤酒放在尿不濕部分旁邊會(huì)增加銷量。但除非我們進(jìn)行真實(shí)的實(shí)驗(yàn),否則很難判斷這是否屬實(shí)。相關(guān)性標(biāo)志著一個(gè)潛在的因果關(guān)系,我們可以將其作為進(jìn)一步研究的方向,而非我們的最終結(jié)論。 |
|