在研究機器學習中,理論在其整個自上而下方法中試用于哪裡呢?
在傳統的機器學習教學中,豐富的數學理論知識對于了解機器學習是至關重要的,我的機器學習教學方法通常是教你如何端對端解決問題以及傳輸結構。
是以此方法哪裡要用到理論知識了呢?
在此帖中你将了解我們是如何了解機器學習中的“理論”一詞。提示:全部與算法有關。
你會發現一旦你可以熟練解決問題以及傳輸結果後,你就欲罷不能地想要對機器學習有更深入的了解以及獲得更好的結果,沒人能拉得住你。
最後,你會發現可以通過應用标準資料集練習機器學習的5個技巧,進而進一步加深你對機器學習算法的了解。
理論學習----放在最後而不是第一
對開發者的機器學習教學法很麻煩。
教學方法是自下而上的, 它對于一個僅想通過運用機器學習工具來解決問題,而非對此領域進行專門研究的開發者來說确實很狗屎。傳統的學習方法要求你在學習算法理論前有諸如線性代數、機率學及統計學等預備數學知識,如果你曾經曆如何端對端解決問題然後傳輸一個有效、可靠且準确的預測模型的工作執行或讨論,那你是很幸運的。
我來教你一個自上而下的學習機器學習的方法。這種方法首先是
學習端對端解決問題的系統性處理
繪制一張“最佳組合”機器學習工具及平台的步驟圖
在測試資料庫裡進行定向實踐。
你可以在标題為“程式設計員的機器學習:從開發者到機器學習實踐者的跳躍”一貼中了解更多自上而下機器學習教學的方法。
是以在這個過程中,理論到底在哪裡呢?
如果教學法倒置,後學理論,但是我們所說的理論到底是什麼理論,在測試資料庫實踐中到底是怎樣學習那個理論的呢?
理論其實都是算法
機器學習是一個理論密集型的領域。
他之是以密集是因為它有着從數學角度描述及解釋概念的傳統。
這招很管用,因為數學描述是非常簡潔明了的,這些數學描述也通過與專業領域技術相結合來做分析(例如對一個程式機率性的了解)。
很多這些次要的數學技巧與機器學習算法是捆綁在一起的。對于一些想要通過粗略了解機器學習方法來配置及應用它的人來說,這确實太難搞定了。
如果你沒有能解析及了解算法表述的知識基礎的話,學習機器學習真的是很令人沮喪。沮喪感是來自諸如計算機科學的領域,在這些領域,對算法的描述随處可見,但其描述意在快速了解(如桌面檢查)及其執行。
例如,我們在學習及學習使用哈希表是從來不深入追究哈希方程的,但是我們知道哈希方程是什麼以及去哪裡可以了解哈希方程的細節和書寫。為什麼機器學習就不能這樣呢?
機器學習領域中的理論大部分與機器學習算法有關,如果你去問一個初學者為何這些理論令人如此沮喪,他會告訴你是因為你必須得了解并且懂得使用一些特定的機器算法。
這裡,算法不僅是一個預測模型的程式,這裡的算法也意味着選擇特征,設計新功能,轉換資料以及估算未見資料的模型準确度。
是以,所謂後學理論, 其實是說最後學習機器學習算法。
深入理論的沖動
總的來說,我建議對知名機器學習資料庫作定向練習。
這是因為知名機器學習資料,如uci機器學習倉庫,可操作性更好,它們體積小,是以不會占用很多記憶體,并且可以直接在工作站上處理。它們還經過了充分地研究及學習,是以你可以有一個比較的基準值。
你可以在标題為“用uci機器學習庫小記憶體資料練習機器學習”一貼中了解更多關于機器學習資料庫定向練習的資訊。
了解機器學習算法是過程中的一部分,原因是你會在為得出标準機器學習算法結果中遇到限制。你會想知道如何能在已有算法中獲得更多,或怎樣得到最優解,亦或是其作用原理。
要做到這些,你必須知道更多,好奇心也會驅動你去學習機器學習算法, 為得到一個更好的結果,你會迫使自己去拼湊一個對算法的了解。
我們已經看到很多背景各異的年輕開發者為了提高他自己的作品,而去學習開源項目代碼、課本甚至研究論文。要做一個更好更全能的程式設計者,他們必須去做這些。
如果你想成功并且有動力取得成功,你是一定會去學習算法理論的。
了解機器學習的5種“兵法"
到了深入鑽研機器學習算法以作為目标來實踐的時候了,此時有很多技術和模闆你可以用來簡化學習的過程。
這一節你會發現五大技巧幫你快速了解機器學習算法理論。
1. 建立機器學習算法清單
剛開始的時候,你會覺得被現有的大量算法壓得喘不過氣來。
即使隻是測試算法,你也許仍會不确定要将哪些算法加入到你的菜單裡。(提示:盡量多樣化)。
作為一個菜鳥,一個很棒的技巧是持續跟蹤你所學到的算法。這些清單可以簡單到包括算法名稱,并随着你的興趣和好奇心而增加難度。
抓住算法适用問題的細節(分類或是回歸)、相關算法、和算法分類(決策樹,核等等),當你看到新的算法名稱就添加到你的清單裡,當開始解決一個新問題的時候,嘗試下你還沒用過的算法,在你用過的算法旁邊進行标注,諸如此類。
把算法名稱記錄在冊可以增加你對算法的駕馭能力,這個簡單到令人乍舌的戰術可以使你不會被過多資訊壓垮。以下列出了簡單的算法清單可以事半功倍、減少挫敗的一些例子:
來嘗試新的不同類型的問題的算法思路(時間序列,評分系統等等)。
那些你可以研究以便學習如何應用的算法。
按類别對算法分類,諸如樹,核等等。
避免隻專注于最喜歡的一類問題,現在就着手開始建立算法清單吧!
2. 研究機器學習算法
當你希望更深入了解一個算法的時候,你就需要開始研究了。你将會對研究一個算法感興趣的重要原因是可以學習如何配置算法以及了解它的工作原理。
研究不僅僅是學術界的專利,一些簡單的技巧可以讓你在收集一個給定的機器學習算法的資訊上走的更遠。
關鍵在于資訊的來源,下面列出了一個你可以作為研究算法的參考文獻的各種類型來源。
權威來源,如課本,講義,幻燈片和綜述文獻。
開創性的來源,如對算法進行初次描述的論文和報刊文章。
描述最前沿推廣和實驗的第一手資料。
啟發式來源,如機器學習競賽中出現的文章或者在問答網站的文章以及會議論文。
實作代碼的資源如用于工具和庫的開放源代碼,部落格文章和技術報告。
你并不需要成為一個博士研究人員或者機器學習算法的專家。
針對一種你希望學習的機器學習算法,耐下心來挑選多樣的來源作為參考。着眼于你可以應用或者了解的具體細節,把其他部分暫時懸疑。
3. 創造你自己的算法描述
在你的研究中,将會發現機器學習算法的描述會不完備或者不統一。
你可以用的一個方法是把你自己的簡短算法描述整合起來,這是另一個非常簡單而行之有效的政策。
你可以設計一個标準的算法描述模闆,僅包含能幫助你最大化了解該算法的細節,例如算法應用探讨、僞代碼清單、參數範圍和資源清單。
然後你可以用相同的算法描述模闆來歸納許多關鍵算法,并開始逐漸建立你自己的小型算法百科全書作為之後做項目的參考。
以下是你可以用在算法描述模闆中的問題:
算法的标準縮寫是什麼?
該算法的目标或者需要解決的問題是什麼?
該算法的僞代碼或者算法流程圖是怎樣的?
應用該算法的思路或者要點是什麼?
更深入學習算法的有用的資源是什麼?
你将會感慨這些描述的威力。例如,我用這種方法撰寫了一本靈感來源于自然的算法描述書籍,多年之後我仍然時常參考此書。
4. 研究算法行為
機器學習的算法是一套複雜的運算系統,通過研究它們在真實資料庫上的行為往往是了解算法的有效方法。
通過設計實驗, 利用一個小的資料庫試着運作算法,能有效發現算法的運作效果、短處和參數設定方法,這樣在解決别的問題上也往往會取得滿意結果。
你可以按照以下幾個簡單的步驟來研究機器學習的算法:
1) 選擇一個你想了解的算法(如:随機森林random forests)
2) 標明一個你想要了解的有關該算法的問題(如:随機樹的數量對最後結果的影響)
3) 設計解決問題的試驗(如:在幾個不同的二分類問題上試驗不同數量的随機樹,并繪制數的數量與分類精度的關系圖)
4) 執行試驗并寫出結果,以便日後使用
5) 不斷重複這些步驟
這是實用性的機器學習的優勢之一,你通過自己的簡單研究即得到出人意料的結果。
5. 執行機器學習算法
沒有比執行算法本身更好的方式去了解機器學習的算法了。
在從頭開始執行算法過程中,你将碰到各種算法問題相關的一些微觀決策。你将決定哪些可以通過經驗法則來完成,哪些需要将參數一一暴露給使用者。
以下是從頭開始重複執行機器學習算法的步驟:
1) 選擇一種程式語言,越熟悉越好。
2) 選擇一種算法執行,從簡單的開始(可以參考下面的清單)。
3) 選擇一個課題去測試你的執行方法,2d資料适合可視化(即使是用excel)
4) 研究這個算法并利用多種資訊來源(如:閱讀教程、論文、其他執行方式)
5) 對算法進行單元測試,以确認你對算法的了解,并驗證你的執行方式 。
從小處開始并逐漸建立自信。有三種機器學習算法适合你從頭開始嘗試執行:
梯度下降法的線性回歸(linearregression using gradient descent)
k近鄰算法(k-nearest neighbor)
貝葉斯分類器(naive bayes)
理論不隻是給數學家使用的
機器學習不隻屬于數學精英。即使不深入學習多變量統計,你也能知道機器學習算法如何運作。
你不需要對數學很在行。
如前文所言,你可以從算法單開始并逐漸深入了解算法研究,算法描述和算法行為。
不需要太深入了解數學也一樣大有可為。
你不需要是一個學術專家。
研究不隻屬于學術領域。每個人都可以通過閱讀書籍和文摘完善他們對某一主題的了解,一個具體的機器學習算法就是其一。
即使需要通過學習來了解這些複雜的運算,一旦你嘗試成為“科學家”并開始你的算法試驗,你将獲得很大的突破。你将發現許多未經記錄的趣談怪事。
行動起來!
從以下的清單中選一個來開始吧。從今天開始,now!
列一個清單,包含10種用于分類的機器語言
找有關随機森林算法(random forests)的5本書
用自己的算法描述模闆做一個5頁的ppt來展示貝葉斯分類器(naivebayes)
打開weka了解”k”參數是怎樣影響k近鄰算法(k-nearestneighbor) 的準确率的
利用随機的梯度下降法運作線性回歸
原文釋出時間為:2015-10-27
本文來自雲栖社群合作夥伴“大資料文摘”,了解相關資訊可以關注“bigdatadigest”微信公衆号