開發(fā)者成功使用機(jī)器學(xué)習(xí)的十大訣竅

基于云的機(jī)器學(xué)習(xí)工具帶來了使用機(jī)器學(xué)習(xí)創(chuàng)造和提供新的功能的可能性。然而,當(dāng)我們使用不當(dāng)時(shí),這些工具會輸出不好的結(jié)果。想要在應(yīng)用程序中成功地融入機(jī)器學(xué)習(xí)的開發(fā)者,需要注意十大關(guān)鍵要點(diǎn)。

在提供發(fā)現(xiàn)埋藏?cái)?shù)據(jù)深層的模式的能力上,機(jī)器學(xué)習(xí)有著潛在的能力使得應(yīng)用程序更加的強(qiáng)大并且更能響應(yīng)用戶的需求。精心調(diào)校好的算法能夠從巨大的并且互不相同的數(shù)據(jù)源中提取價(jià)值,同時(shí)沒有人類思考和分析的限制。對于開發(fā)者而言,機(jī)器學(xué)習(xí)為應(yīng)用業(yè)務(wù)的關(guān)鍵分析提供了希望,從而實(shí)現(xiàn)從改善客戶體驗(yàn)到提供產(chǎn)品推薦上升至超個(gè)性化內(nèi)容服務(wù)的任何應(yīng)用程序。

像Amazon和Micorosoft這樣的云供應(yīng)商提供云功能的機(jī)器學(xué)習(xí)解決方案,承諾為開發(fā)者提供一個(gè)簡單的方法,使得機(jī)器學(xué)習(xí)的能力能夠融入到他們的應(yīng)用程序當(dāng)中,這也算是最近的頭條新聞了。承諾似乎很好,但開發(fā)者還需謹(jǐn)慎。

對于開發(fā)人員而言,基于云的機(jī)器學(xué)習(xí)工具帶來了使用機(jī)器學(xué)習(xí)創(chuàng)造和提供新的功能的可能性。然而,當(dāng)我們使用不當(dāng)時(shí),這些工具會輸出不好的結(jié)果,用戶可能會因此而感到不安。測試過微軟年齡檢測機(jī)器學(xué)習(xí)工具的人都會發(fā)現(xiàn),伴隨即插即用的易用性而來的是主要的精度問題——對于關(guān)鍵應(yīng)用程序或者是重大決策,它應(yīng)該不值得信賴。

想要在應(yīng)用程序中成功地融入機(jī)器學(xué)習(xí)的開發(fā)者,需要注意以下的一些關(guān)鍵要點(diǎn):

1. 算法使用的數(shù)據(jù)越多,它的精度會更加準(zhǔn)確,所以如果可能要盡量避免抽樣。機(jī)器學(xué)習(xí)理論在預(yù)測誤差上有著非常直觀的描述。簡而言之,在機(jī)器學(xué)習(xí)模型和最優(yōu)預(yù)測(在理論上達(dá)到最佳可能的誤差)之間的預(yù)測誤差的差距可以被分解為三個(gè)部分:

  • 由于沒有找到正確函數(shù)形式的模型的誤差
  • 由于沒有找到最佳參數(shù)的模型的誤差
  • 由于沒用使用足夠數(shù)據(jù)的模型的誤差

如果訓(xùn)練集有限,它可能無法支撐解決這個(gè)問題所需的模型復(fù)雜性。統(tǒng)計(jì)學(xué)的基本規(guī)律告訴我們,如果我們可以的話,應(yīng)該利用所有的數(shù)據(jù)而不是抽樣。

2. 對給定的問題選擇效果最好的機(jī)器學(xué)習(xí)算法是決定成敗的關(guān)鍵。例如,梯度提升樹(GBT)是一個(gè)非常受歡迎的監(jiān)督學(xué)習(xí)算法,由于其精度而被業(yè)內(nèi)開發(fā)人員廣泛使用。然而,盡管其高度受歡迎,我們也不能盲目的把這種算法應(yīng)用于任何問題上。相反,我們使用的算法應(yīng)該是能夠最佳地?cái)M合數(shù)據(jù)特征同時(shí)能夠保證精度的算法。

為了證明這個(gè)觀點(diǎn),嘗試做這樣一個(gè)實(shí)驗(yàn),在數(shù)據(jù)集 the popular text categorization dataset rcv1上測試GBT算法和線性支持向量機(jī)(SVM)算法,并比較兩者的精度。我們觀察到在這個(gè)問題上,就錯(cuò)誤率而言,線性SVM要優(yōu)于GBT算法。這是因?yàn)樵谖谋绢I(lǐng)域當(dāng)中,數(shù)據(jù)通常是高維的。一個(gè)線性分類器能夠在N-1維當(dāng)中完美的分離出N個(gè)樣本,所以,一個(gè)樣本模型在這種數(shù)據(jù)上通常表現(xiàn)的更好。此外,模型越簡單,通過利用有限的訓(xùn)練樣本來避免過擬合的方式學(xué)習(xí)參數(shù),并且提供一個(gè)精確的模型,產(chǎn)生的問題也會隨之越少。

另一方面,GBT是高度非線性的并且更加強(qiáng)大,但是在這種環(huán)境中卻更難學(xué)習(xí)并且更容易發(fā)生過擬合,往往結(jié)果精度也較低。

3. 為了得到一個(gè)更好的模型,必須選擇最佳的的算法和相關(guān)的參數(shù)。這對于非數(shù)據(jù)科學(xué)家而言可能不容易?,F(xiàn)代的機(jī)器學(xué)習(xí)算法有許多的參數(shù)可以調(diào)整。例如,對于流行的GBT算法單獨(dú)的就有十二個(gè)參數(shù)可以設(shè)置,其中包括如何控制樹的大小,學(xué)習(xí)率,行或列的采樣方法,損失函數(shù),正則化選項(xiàng)等等。一個(gè)特有的項(xiàng)目需要在給定的數(shù)據(jù)集上為每一個(gè)參數(shù)找到其最優(yōu)值并且達(dá)到最精準(zhǔn)的精度,這確實(shí)不是一件容易的事。但是為了得到最佳的結(jié)果,數(shù)據(jù)科學(xué)家需要訓(xùn)練大量的模型,而直覺和經(jīng)驗(yàn)會幫助他們根據(jù)交叉驗(yàn)證的得分,然后決定使用什么參數(shù)再次嘗試。

4. 機(jī)器學(xué)習(xí)模型會隨著好的數(shù)據(jù)而變得更好,錯(cuò)誤的數(shù)據(jù)收集和數(shù)據(jù)處理會降低你建立預(yù)測和歸納的機(jī)器學(xué)習(xí)模型的能力。根據(jù)經(jīng)驗(yàn),建議仔細(xì)審查與主題相關(guān)的數(shù)據(jù),從而深入了解數(shù)據(jù)和幕后數(shù)據(jù)的生成過程。通常這個(gè)過程可以識別與記錄、特征、值或采樣相關(guān)的數(shù)據(jù)質(zhì)量問題。

5. 理解數(shù)據(jù)特征并改進(jìn)它們(通過創(chuàng)造新的特征或者去掉某個(gè)特征)對預(yù)測能力有著高度的影響。機(jī)器學(xué)習(xí)的一個(gè)基本任務(wù)就是找到能夠被機(jī)器學(xué)習(xí)算法充分利用的豐富特征空間來替代原始數(shù)據(jù)。例如,特征轉(zhuǎn)換是一種流行的方法,可以通過在原始數(shù)據(jù)的基礎(chǔ)上使用數(shù)學(xué)上的轉(zhuǎn)換提取新的特征來實(shí)現(xiàn)。最后的特征空間(也就是最后用來描述數(shù)據(jù)的特征)要能更好的捕獲數(shù)據(jù)的多復(fù)雜性(如非線性和多種特征之間的相互作用),這對于成功的學(xué)習(xí)過程至關(guān)重要。

6. 在應(yīng)用中,選擇合適的靈感來自商業(yè)價(jià)值的目標(biāo)函數(shù)/損失函數(shù)對于最后的成功至關(guān)重要。幾乎所有的機(jī)器學(xué)習(xí)算法最后都被當(dāng)成是一種優(yōu)化問題。根據(jù)業(yè)務(wù)的性質(zhì),合理設(shè)置或調(diào)整優(yōu)化的目標(biāo)函數(shù),是機(jī)器學(xué)習(xí)成功的關(guān)鍵。

以支持向量機(jī)為例,通過假設(shè)所有錯(cuò)誤類型的權(quán)重相等,對一個(gè)二分類問題的泛化誤差進(jìn)行了優(yōu)化。這對損失敏感的問題并不合適,如故障檢測,其中某些類型的錯(cuò)誤比重可能比其它類型的要高。在這種情況下,建議通過在特定的錯(cuò)誤類型上,增加更多的懲罰來解釋它們的權(quán)重,從而調(diào)整SVM的損失函數(shù)。

7. 確保正確地處理訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù),如此當(dāng)在生產(chǎn)中部署該模型時(shí),測試數(shù)據(jù)能夠模擬輸入數(shù)據(jù)。例如,我們可以看到,這對于時(shí)間依賴性數(shù)據(jù)是多么的重要。在這種情況下,使用標(biāo)準(zhǔn)的交叉驗(yàn)證方法進(jìn)行訓(xùn)練,調(diào)整,那么測試模型的結(jié)果可能會有偏差,甚至?xí)粶?zhǔn)確。這是因?yàn)樵趯?shí)施平臺上它不能準(zhǔn)確的模擬輸入數(shù)據(jù)的性質(zhì)。為了糾正這一點(diǎn),在部署時(shí)我們必須仿照模型來部署使用。我們應(yīng)該使用一個(gè)基于時(shí)間的交叉驗(yàn)證,用時(shí)間較新的數(shù)據(jù)來驗(yàn)證訓(xùn)練模型。

8. 部署前理解模型的泛化誤差。泛化誤差衡量模型在未知數(shù)據(jù)上的性能好壞。因?yàn)橐粋€(gè)模型在訓(xùn)練數(shù)據(jù)上的性能好并不意味著它在未知的數(shù)據(jù)上的表現(xiàn)也好。一個(gè)精心設(shè)計(jì)的模擬實(shí)際部署使用的模型評估過程,是估計(jì)模型泛化誤差所需要的。

一不留心就很容易違反交叉驗(yàn)證的規(guī)則,并且也沒有一種顯而易見的方法來表現(xiàn)交叉驗(yàn)證的非正確性,通常在你試圖尋找快捷方式計(jì)算時(shí)發(fā)生。在任何模型部署之前,有必要仔細(xì)注意交叉驗(yàn)證的正確性,以獲得部署性能的科學(xué)評估。

9. 知道如何處理非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù),如文本、時(shí)間序列、空間、圖形或者圖像數(shù)據(jù)。大多數(shù)機(jī)器學(xué)習(xí)算法在處理特征空間中的數(shù)據(jù)時(shí),一個(gè)特征集代表一個(gè)對象,特征集的每一個(gè)元素都描述對象的一個(gè)特點(diǎn)。在實(shí)際當(dāng)中,數(shù)據(jù)引進(jìn)時(shí)并不是這種格式化的形式,往往來自于最原始的格式,并且最后都必須被改造成機(jī)器學(xué)習(xí)算法能夠識別的理想格式。比如,我們必須知道如何使用各種計(jì)算機(jī)視覺技術(shù)從圖像中提取特征或者如何將自然語言處理技術(shù)應(yīng)用于影片文本。

10. 學(xué)會將商業(yè)問題轉(zhuǎn)換成機(jī)器學(xué)習(xí)算法。一些重要的商業(yè)問題,比如欺詐檢測、產(chǎn)品推薦、廣告精準(zhǔn)投放,都有“標(biāo)準(zhǔn)”的機(jī)器學(xué)習(xí)表達(dá)形式并且在實(shí)踐當(dāng)中取得了合理的成就。即使對于這些眾所周知的問題,也還有鮮為人知但功能更強(qiáng)大的表達(dá)形式,從而帶來更高的預(yù)測精度。對于一般在博客和論壇中討論的小實(shí)例的商業(yè)問題,適當(dāng)?shù)臋C(jī)器學(xué)習(xí)方法則不太明顯。

如果你是一個(gè)開發(fā)者,學(xué)習(xí)這十個(gè)通往成功的訣竅可能似乎是一個(gè)艱難的任務(wù),但是不要?dú)怵H。事實(shí)上,開發(fā)者不是數(shù)據(jù)科學(xué)家。認(rèn)為開發(fā)人員可以充分利用所有的機(jī)學(xué)習(xí)工具是不公平的。但是這并不意味著開發(fā)人員沒有機(jī)會去學(xué)習(xí)一些有水準(zhǔn)的數(shù)據(jù)科學(xué)從而改進(jìn)他們的應(yīng)用。隨著適當(dāng)?shù)钠髽I(yè)解決方案和自動(dòng)化程度的提高,開發(fā)人員可以做模型構(gòu)建到實(shí)施部署的一切事情,使用機(jī)器學(xué)習(xí)最佳實(shí)踐來保持高精度。

自動(dòng)化是在應(yīng)用程序中擴(kuò)展機(jī)器學(xué)習(xí)的關(guān)鍵。即使你能夠供得起一批小的數(shù)據(jù)科學(xué)家團(tuán)隊(duì)和開發(fā)者攜手合作,也沒有足夠的人才。像Skytree的AutoModel(自動(dòng)化模型)能夠幫助開發(fā)者自動(dòng)地確定最佳的參數(shù)并且使得算法得到最大的模型精度。一個(gè)易于使用的接口可以引導(dǎo)開發(fā)人員通過訓(xùn)練加工,調(diào)整并且測試模型來防止統(tǒng)計(jì)上的錯(cuò)誤。

自動(dòng)化機(jī)器學(xué)習(xí)過程,有許多方式,包括數(shù)據(jù)科學(xué)家或開發(fā)者的人工智能原理,允許算法去思考,學(xué)習(xí)并且承受更多的建模重任。也就是說,認(rèn)為數(shù)據(jù)科學(xué)家能夠從機(jī)器學(xué)習(xí)中解耦是錯(cuò)誤的,特別是在關(guān)鍵任務(wù)模型上。謹(jǐn)防這種能夠簡單使用機(jī)器學(xué)習(xí)功能的承諾,即能夠在不需要正確復(fù)雜的思考下或者可擴(kuò)展的應(yīng)用技術(shù)下就使用機(jī)器學(xué)習(xí)——這通常并不會得到高預(yù)測精度和機(jī)器學(xué)習(xí)提供的高商業(yè)價(jià)值結(jié)果。更糟糕的是,在應(yīng)用程序中使用不好的模型實(shí)際上可能會適得其反,并迅速在其用戶之間建立不信任的產(chǎn)品或服務(wù)。

文章來自:CSDN 英文原文: 10 keys to successful machine learning for developers (譯者/劉帝偉)

作者簡介:Alexander Gray,Skytree首席技術(shù)官,佐治亞理工學(xué)院計(jì)算機(jī)學(xué)院副教授,主要致力于大規(guī)模數(shù)據(jù)集的機(jī)器學(xué)習(xí)算法技術(shù)研發(fā),1993年開始在NASA噴氣推進(jìn)實(shí)驗(yàn)室機(jī)器學(xué)習(xí)系統(tǒng)小組從事大規(guī)??茖W(xué)數(shù)據(jù)的工作。

譯者簡介: 劉帝偉,中南大學(xué)軟件學(xué)院在讀研究生,關(guān)注機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘及生物信息領(lǐng)域。

End.

極客網(wǎng)企業(yè)會員

免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實(shí),并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。

2015-07-14
開發(fā)者成功使用機(jī)器學(xué)習(xí)的十大訣竅
基于云的機(jī)器學(xué)習(xí)工具帶來了使用機(jī)器學(xué)習(xí)創(chuàng)造和提供新的功能的可能性。然而,當(dāng)我們使用不當(dāng)時(shí),這些工具會輸出不好的結(jié)果。想要在應(yīng)用程序中成功地融入機(jī)器學(xué)習(xí)的開發(fā)者,需要注意十大關(guān)鍵要點(diǎn)。

長按掃碼 閱讀全文