方法 | 普通程序員如何轉向機器學習

相信看到這篇文章的朋友,幾乎都想成爲機器學習科學家。

事實上,絕大多數的付費課程,基本上都有徹底免費的課程放在另外一個地方。咱們只是把這些信息整理好,告訴你在哪兒能夠找到他們,以及經過什麼樣的順序進行學習。

這樣,哪怕你是還沒畢業的大學生,或者是初入職場的工程師,均可以經過自學的方式掌握機器學習科學家的基礎技能,並在論文、工做甚至平常生活中快速應用。

python

在這裏咱們推薦一份用戶友好型的機器學習教程,你能夠經過幾個月的學習成爲機器學習科學家,徹底免費。git


一份用戶友好型的機器學習教程


當你學習機器學習課程時,有沒有被信息過載所淹沒?
      大部分的學習者都遇到了這個問題,這不是他們的錯,由於絕大多數的機器學習課程都過於關注個別算法了。
沒錯,雖然算法很重要,但他們仍是把太多時間花在了算法上。
程序員

以致於......你幾乎很難在短期內走完一遍機器學習的流程,從而感覺到經過它解決具體數據問題的巨大興奮。github

     這些機器學習課程關注於算法是由於它容易教。相比之下,若是機器學習老師要帶你走一遍機器學習的流程,那麼他須要搭建計算環境,完成數據採集、清洗、拆分,特徵處理,模型調參和模型預測,甚至他還須要一個面向學習者的交互界面。老師哪有這麼多的工具,與其手把手帶着學生走一遭,還不如學習機器學習算法。

      但這樣的問題是,很難有人能堅持經過自學,成爲一個卓越的機器學習科學家。哪怕他是數學博士,或者技術高超的程序員,都很容易陷在細節中而難以有具體項目實現的成就感。
      這份教程將會帶來徹底不一樣的思路。它很是適合自學者,即使徹底沒有編程的基礎,也能經過恰當的工具快速實現機器學習模型,解決工做、生活中遇到的具體問題。

web

值得注意的是,咱們享用了世界頂級的機器學習資源,而不須要花費 1 分錢。算法


自我學習的方式


咱們推薦經過 Doing Shit(不是技術術語)完成你的學習。

在這以前你也許已經學習過機器學習了,但從我和朋友們的經驗來看,每每會被各類神祕的符號、公式、大量的教科書和論文整的暈頭轉向,而後不再想碰這惱人的玩意了。

咱們的方法會更加友好,它的學習過程就像小朋友學習同樣,你會了解一些基礎的知識(但不必定要徹底弄懂),而後經過好用的工具快速實現出來就行了。而當你被建模出來的結果吸引,那時候咱們才談算法背後的數學邏輯和計算邏輯。

因此咱們會在學習中作不少機器學習項目,這樣的好處是當你面對一個工做機會時,你就是一個經驗豐富的機器學習科學家了!
編程


固然自學自己是須要自律的,這本教程將一直陪伴着你,如下是 4 個步驟。

1.前提條件: (不須要徹底弄懂)統計學、編程和數學(也能夠不須要編程)

2.海綿模式:   把本身浸泡在機器學習的各類理論中

3.目標實踐:    經過機器學習實踐 9 個有意思的題目

4.機器學習項目:    深度參與到感興趣的項目和領域中


步驟 1:前提條件
機器學習

任務:確保你瞭解基礎的統計學、編程和數學工具

統計學:理解統計學、特別是貝葉斯機率對許多機器學習算法來講都是相當重要的。性能

免費的指南:How to Learn Statistics for Data Science, The Self-Starter Way

https://elitedatascience.com/learn-statistics-for-data-science

編程:懂得編程將會更靈活的應用機器學習。

免費的指南:How to Learn Python for Data Science, The Self-Starter Way

https://elitedatascience.com/learn-python-for-data-science

數學:對原始算法的研究須要線性代數、多變量計算的基礎。

免費的指南:How to Learn Math for Data Science, The Self-Starter Way

https://elitedatascience.com/learn-math-for-data-science

你能夠先看看這些教程,給你的機器學習道路打下知識基礎。

步驟 2:海綿模式 

海綿模式是儘量吸取足夠多的機器學習理論知識。

 如今有些人可能會想:「若是我不打算進行原創性研究,爲何在可使用現有機器學習包的時候,還須要學習理論?」

這是一個合理的問題!

然而,若是你想把機器學習更靈活的應用於平常工做,學習一些基礎理論仍是頗有好處的,並且你並不須要徹底弄懂。下面咱們會劇透學習機器學習理論的 5 個理由。

(1)規劃和數據採集

數據採集真是一個昂貴和耗時的過程!那麼我須要採集哪些類型的數據?根據模型的不一樣,我須要多少數據?這個挑戰是否可行?

(2)數據假設和預處理

不一樣的算法對數據輸入有不一樣的假設,那我應該如何預處理個人數據?我應該正則化嗎?假如個人模型缺乏一些數據,它還穩定嗎?離羣值怎麼處理?

(3)解釋模型結果

簡單的認爲機器學習是一個「黑盒子」的概念是錯誤的。是的,並非全部的結果都直接能夠解釋,但你須要診斷本身的模型而後改善它們。我要怎麼評估模型是過擬合仍是欠擬合?我要向業務利益相關者怎麼解釋這些結果?以及模型還有多少的改善空間?

(4)改進和調整模型

你的第一次訓練不多會達到最佳模式,你須要瞭解不一樣的調參和正則化方法的細微差異。若是個人模型是過擬合了,我該如何補救?我應該花更多時間在特徵工程上,仍是數據採集上?我能夠組合個人模型嗎?

(5)驅動商業價值

機器學習歷來不會在真空中完成。若是你不瞭解武器庫中的工具,就沒法最大化發揮它們的效能。在這麼多結果指標中,哪些是優化的參考指標?哪一個更爲重要?或者還有其餘的算法會表現更好嗎?

好消息是,你不須要一開始就知道全部問題的答案。因此咱們推薦你從學習足夠的理論開始,而後快速進入到實踐。這樣的話,你比較可以堅持下來,並在一段時間後真正精通機器學習。


如下是一些免費的機器學習資料

2.1 機器學習視頻課程

這是來自哈佛大學和耶魯大學的世界級課程。

任務:完成至少一門課程

哈佛大學數據科學課程

端到端的數據科學課程。相比吳恩達的課程,它對機器學習的重視程度較低,可是從數據收集到分析,你能夠在這裏學到整個數據科學的工做流程。

課程主頁:http://cs109.github.io/2015/

斯坦福大學機器學習課程

這是吳恩達的著名課程,這些視頻說清楚了機器學習背後的核心理念。若是你的時間只能上一節課,咱們建議這個。

課程主頁:https://www.youtube.com/watch?v=qeHZOdmJvFU&list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW&index=1


2.2 機器學習參考資料

接下來咱們推薦行業中兩本經典的教材。

任務:看這些 PDF 做爲教科書

An Introduction to Statistical Learning

Gentler 在書裏介紹了統計學習的基本要素,適合全部機器學習的學習者。

PDF 地址:http://www-bcf.usc.edu/~gareth/ISL/ISLR%20Sixth%20Printing.pdf

Elements of Statistical Learning

嚴格的介紹了機器學習理論和數學,推薦給機器學習的研究員。

PDF 地址:http://statweb.stanford.edu/~tibs/ElemStatLearn/


2.3 成功的關鍵

如下是每一個步驟成功的關鍵。

A:注重大局,老是問爲何

每當你被介紹一個新概念時,問一句「爲何」。爲何在某些狀況下要使用決策樹而不是迴歸?爲何要規範參數?爲何要拆分數據集?當你瞭解爲何使用每一個工具時,你將成爲真正的機器學習從業者。

B:接受你不會記得全部學過的東西

不要瘋狂的作筆記,也不要每一個課程都複習 3 次。在本身的實際工做中,你會常常須要回過頭查看.

C:繼續前進,不要氣餒

儘可能避免在一個話題上拖過久的時間。即使是對於機器學習教授來講,有些概念也很很差解釋。可是當你在實踐中開始應用時,你會很快就懂得概念的真實含義。

D:視頻比教科書更有效

從咱們的經驗來看,教科書是很好的參考工具,但它很難堅持。咱們強烈推薦視頻講座的形式。

(參考我博客裏其餘文章)


步驟 3:有目的實踐 

在海綿模式以後,咱們會經過刻意練習的方式磨練技能,把機器學習能力提升到一個新水平。目標包括三個方面:

1.實踐完整的機器學習流程:包括數據收集、清洗、預處理,創建模型,調整參數和模型評估。

2.在真實的數據集中練習,逐漸創建哪一種模型適合哪一種挑戰的直覺。

3.深刻到一個具體主題中,例如在數據集中應用不一樣類型的聚類算法,看哪些效果最好。

在完成這些步驟後,當你開始解決大型項目時就不會不知所措了。

3.1 機器學習的工具

爲了快速實現機器學習模型,咱們推薦使用現成的建模工具。這樣的話,你會在短期內練習整個機器學習的工做流程,而無需在任何一個步驟花費太多時間。這會給你很是有價值的「大局直覺」(Big Picture Intuition)。

Python:Scikit-Learn(機器學習 python是最主流的語言)

Scikit-learn 和 Sklearn 是通用機器學習中 Python 的黃金標準庫,它具備常規算法的實現。


3.2 實踐數據集

學習了工具後,你還須要一些數據集。數據科學和機器學習的藝術,不少都在於解決問題時的幾十個微觀決定。咱們會在不一樣的數據集中看到建模的結果。

任務:從如下選項中選擇 5 到 10 個數據集。

咱們建議從 UCI 的機器學習庫開始,例如你能夠選擇 3 個數據集,分別用於迴歸、分類和聚類。

在進行機器學習工程的時候,想一想如下問題:

  • 你須要爲每一個數據集執行哪些類型的預處理?
  • 你須要進行降維操做嗎?你可使用什麼方法?
  • 你能夠如何拆分數據集?
  • 你怎麼知道模型是否出現「過擬合」?
  • 你應該使用哪些類型的性能指標?
  • 不一樣的參數調整會如何影響模型的結果?
  • 你可以進行模型組合以獲得更好的結果嗎?
  • 你的聚類結果和直觀的相符麼?

UCI 機器學習報告

UCI 機器學習報告採集了超過 350 個不一樣的數據集,專門爲機器學習提供訓練數據。你能夠按照任務搜索(迴歸、分類或聚類),也能夠按照行業、數據集大小搜索。

地址:http://archive.ics.uci.edu/ml/

Kaggle

Kaggle.com 以舉辦數據科學比賽聞名,可是該網站還擁有超過 180 個社區數據集,它們包含了有趣的話題,從用戶寵物小精靈到歐洲足球比賽的數據應有盡有。

https://www.kaggle.com/datasets

Data.gov

若是你正在尋找社會科學或者與政府有關的數據集,請查看 Data.gov。這是美國政府開放數據集合,你能夠搜索超過 190,000 個數據集。

https://www.data.gov/


步驟 4:機器學習項目 

好了,如今到了真正有趣的部分了。到目前爲止,咱們已經涵蓋了前提條件、基本理論和有目的實踐。如今咱們準備好進入更大的項目。

這一步驟的目標是將機器學習技術整合到完整的、端到端的分析中。

4.1 完成一個機器學習項目

任務:完成泰坦尼克倖存者挑戰。

泰坦尼克號倖存者預測挑戰是一個很是受歡迎的機器學習實踐項目,事實上,這是 Kaggle.com 上最受歡迎的比賽。

咱們喜歡以這個項目做爲起點,由於它有不少偉大的教程。你能夠從中瞭解到這些有經驗的數據科學家們是怎麼處理數據探索、特徵工程和模型調參的。

Python 教程

咱們真的很是喜歡這個教程,由於它教會你如何進行數據預處理和糾正數據。

教程由 Pycon UK 提供。

教程地址:https://github.com/savarin/pyconuk-introtutorial


4.2 從頭寫個算法 

爲了對機器學習有更深的理解,沒有什麼比從頭寫個算法有幫助了,由於魔鬼老是在細節裏。

咱們建議從一些簡單的開始,例如邏輯迴歸、決策樹或者 KNN 算法

這個項目也爲你提供了一個將數據語言翻譯成程序語言的實踐。當你想把最新的學術界研究應用於工做時,這個技能將會十分方便。

而若是你卡住了,這裏有一些提示:

  • 維基百科有不少好資源,它有不少常見算法的僞代碼。
  • 爲了培養你的靈感,請嘗試查看現有機器學習軟件包的源代碼。
  • 將你的算法分解,爲採樣、梯度降低等編寫單獨的功能
  • 從簡單開始,在嘗試編寫隨機森林前,先執行一個決策樹。

4.3 選擇一個有趣的項目或領域 

若是你沒有好奇心,你是很難學好的。但目前爲止,也許你已經找到了想堅持下去的領域,那麼開始建模吧!

老實說這是機器學習最好的部分了。這是一個強大的工具,而一旦你開始理解,不少想法都會主動找上門。

好消息是,若是你一直在跟蹤,也準備好從事這份工做,那麼你的收穫會遠超你的想象!

咱們也推薦了 6 個有趣的機器學習項目。

地址:https://elitedatascience.com/machine-learning-projects-for-beginners


恭喜你到達了自學指南的終點

這裏有一個好消息,若是你已經遵循並完成了全部任務,那麼你在應用機器學習上將會比 90% 自稱是數據科學家的人更好。

而更好的消息是,你還有不少東西要學習。例如深度學習、強化學習、遷移學習、對抗生成模型等等。

成爲最好的機器學習科學家的關鍵是永遠不要中止學習。在這個充滿活力、激動人心的領域,開始你的旅程吧!

原文連接:https://elitedatascience.com/learn-machine-learning

相關文章
相關標籤/搜索