入門機器學習,大體路線怎樣的。不太清楚每一個階段要學習的東西


您好!這是我們老師根據現有資源整理的一個機器學習路徑。涵蓋了Numpy,Scipy,Pandas,Scikit-learn,Matplotlib 等開源工具的學習,並完成從數據清理、數據分析、模型構建,到最終的預測評估及可視化呈現。基本由淺入深地涵蓋了大多機器學習的入門知識。

「成為編程大牛要一門好語言加一點點天分。一門好語言,一點點天分,再加一份堅持。要是天分少,光靠堅持也行。」

入門知識

  1. Linux 基礎入門(新版)

2. Github 快速上手實戰教程

3. Python3 簡明教程

4. NumPy 百題大沖關5. Pandas 百題大沖關6. 使用 Matplotlib 繪製 2D 和 3D 圖形本教程的正確食用姿勢:區別於目前所有主流教程,這類教程的核心就是動手!跟著文檔說明,在在線的Linux系統中一步一步地敲出基礎知識,各種有趣項目;走出只看書、看視頻卻不動手的禁區,你會比別人學的更快的,放心。

演算法基礎

  1. 基於SVM的貓咪圖片識別器

SVM(支持向量機)是一種常用的機器學習分類演算法。教程使用HOG+SVM演算法和OpenCV實現一個圖片分類器,通過自己訓練分類器,達到可以判斷任意圖片是否是貓咪的效果。

2. K-近鄰演算法實現手寫數字識別系統

從電影題材分類的例子入手,詳細講述 k-近鄰演算法的原理。在這之後,我們將會使用該演算法實現手寫數字識別系統,書籍教程配套實驗練習,幫助您更好得實戰。

3. Spark 基礎之使用機器學習庫 MLlib你將可以學習到 Spark 的機器學習庫—— MLlib 的相關知識,了解 MLlib 與 ML 之間的區別和聯繫,掌握 MLlib 中的幾個基本數據類型。同時,還將通過一個電影推薦的實例,講解如何利用機器學習演算法解決實際問題。4. 決策樹實戰項目-鳶尾花分類了解決策樹的基本概念,學習決策樹生成過程中的 ID3, C4.5 及 CART 演算法及原理。最後通過 scikit-learn 提供的決策樹演算法完成鳶尾花分類實驗。

5. 使用邏輯回歸預測IPO市場在20世紀90年代末,獲得了對的IPO(首次公開募股)就像贏得彩票一樣。通過對一系列數據進行清洗、建模、分類,來獲一個可以預測IPO市場的簡單模型。6. 《Python 貝葉斯分析》- 利用邏輯回歸實現鳶尾花分類講解邏輯回歸模型的概念,以及由線性回歸擴展為邏輯回歸的逆連結函數概念,並利用邏輯回歸對鳶尾花進行分類。

中場休息......笑一個吧!

基礎項目

  1. 人機對戰初體驗:Python基於Pygame實現四子棋遊戲

利用Python模擬AI和玩家進行四子棋遊戲,利用遊戲實驗Pygame庫,為遊戲提供界面和操作支持。AI演算法借用蒙特卡洛搜索樹思想。通過設置AI的難度係數,即AI所能考慮到的未來棋子的可能走向,從而選擇出最佳的方案和玩家對抗。

2. Python 實現英文新聞摘要自動提取新聞摘要提取就是除去新聞中冗餘的部分,只保留關鍵的語句。教程將通過兩個實驗來為大家介紹兩個不同的提取摘要演算法,並通過python語言完成英文新聞摘要的自動提取。

3. 使用 Python 實現深度神經網路教你使用 Python 實現一個深度神經網路,讓你在實際動手的過程中理解深度學習的一些基本原理,帶你真正入門深度學習。

4. 使用卷積神經網路進行圖片分類卷積神經網路特別適合於處理圖像相關問題,教程一邊講解卷積神經網路原理,一邊帶你動手使用caffe深度學習框架進行圖片分類。

5. 基於卷積神經網路實現圖片風格的遷移基於卷積神經網路,使用Caffe框架,探討圖片風格遷移背後的演算法原理,手把手教你實現和Prisma一樣的功能,教計算機學習梵高作畫。

開源工具學習

  1. scikit-learn 實戰之非監督學習

機器學習中,除了常見的監督學習之外,還有一個非常重要的分支 —— 非監督學習。本教程將帶你了解非監督學習,並學會使用 scikit-learn 解決非監督學習問題。

2. scikit-learn 實戰之監督學習監督學習是機器學習中最為常見、應用最為廣泛的分支之一。本教程將帶你了解監督學習,並學會使用 scikit-learn 提供的各類監督學習方法解決實際問題。

3. 深度學習初探--入門DL主流框架通過8個實驗,帶領同學們入門TensorFlow、Theano、Keras 及 Caffe 幾個主流的深度學習框架,通過項目實踐使同學了解如何利用這些框架搭建自己的深度學習神經網路。中場休息......要麼面帶桃花,要麼面帶微笑。

進階項目

  1. Python 應用馬爾可夫鏈演算法實現隨機文本生成

應用馬爾可夫鏈演算法,實現根據給定訓練文本,輸出隨機生成的中/英文文本。使用 Python 實現一個類,封裝可供使用的方法。

2. 神經網路實現人臉識別任務利用基於無監督學習的自編碼器對人臉數據進行特徵提取,進行圖片降維,利用降維後的結果作為有監督學習分類器的輸入,最終利用一個三層神經網路實現人臉識別的任務。

3. 基於無監督學習的自編碼器實現介紹一種基於無監督學習神經網路數據降維的一種應用——自聯想存儲器。

4. NBA常規賽結果預測:利用Python進行比賽數據分析

利用NBA在2015~2016年的比賽統計數據進行回歸模型建立,最終在今年2016~2017的常規賽中預測每場比賽的輸贏情況。

5. Python 氣象數據分析:《Python 數據分析實戰》先會對數據進行清洗,然後運用 Python 中 matplotlib 模塊的對數據進行可視化處理,最終從清晰的圖表中得出我們的結論。6. Twitter數據情感分析使用Spark MLlib對Twitter上的流數據進行情感分析,並且利用Python的工具包basemap可視化美國不同的州對於曾經的總統候選人情感分析結果。

7. Ebay 在線拍賣數據分析利用 eBay 上的拍賣數據進行數據分析,實現通過數據判斷拍賣最終是否可以成功交易和預測最終成交的價格。8. 大數據帶你挖掘打車的秘籍基於某市的計程車行駛軌跡數據,帶你學習如何應用Spark SQL和機器學習相關技巧,並且通過數據可視化手段展現分析結果。

9. 使用 Spark 和 D3.js 分析航班大數據在航班數據分析實驗中,可以學習到如何使用 OpenRefine 進行簡單的數據清洗,以及如何通過 Spark 提供的 DataFrame、 SQL 和機器學習框架等工具,對航班起降的記錄數據進行分析。如果你看到這裡,你已經超過91.23%對機器學習感興趣的人啦噢嘿嘿。你知不知道,有句話是這樣說的:一件事,1000人想去做,100人開始做了,最終,只有1個人堅持到了最後。話雖沒有絕對,但想想看,今天確實是你生命中最年輕的一天啦,所以,想要做的事,勇敢撿起來做吧!祝你學習順利。

其他教程推薦:

第一彈:超全Python學習資源整理(入門系列)第二彈:超全Python學習資源整理(進階系列)40個大數據學習資源PHP學習資源整理:入門到進階全系列8個程序員專用軟體/網站,個個是神器,第一個最驚喜......Java進階之設計模式Scala 開發教程Hadoop部署及管理RabbitMQ 消息隊列Redis基礎教程Shell腳本實現打字遊戲Python3 實現色情圖片識別Python實現3D建模工具

謝謝邀請。

之前我們平台推出過一篇《怎樣成為一名優秀的演算法工程師》,希望給能給大家一點啟發。

首先來看一個高度相關的問題:一個優秀的演算法工程師必須具備哪些素質?我們給出的答案是這樣的:

數學知識

編程能力機器學習與深度學習的知識應用方向的知識對自己所做的問題的思考和經驗

數學知識

與其他工作方向如app、伺服器開發相比,以及與計算機科學的其他方向如網路,資料庫,分散式計算等相比,人工智慧尤其是機器學習屬於數學知識密集的方向。在各種書籍,論文,演算法中都充斥著大量的數學公式,這讓很多打算入門的人或者開始學習的人感到明顯的壓力。首先我們考慮一個最核心的問題:機器學習和深度學習究竟需要哪些數學知識?在SIGAI之前的公眾號文章「學好機器學習需要哪些數學知識」里,我們已經給出了答案。先看下面這張表:

上面的表給出了各種典型的機器學習演算法所用到的數學知識點。我們之前已經總結過,理解絕大多數演算法和理論,有微積分/高等數學,線性代數,概率論,最優化方法的知識就夠了。除流形學習需要簡單的微分幾何概念之外,深層次的數學知識如實變函數,泛函分析等主要用在一些基礎理論結果的證明上,即使不能看懂證明過程,也不影響我們使用具體的機器學習演算法。概率圖模型、流形學習中基於圖的模型會用到圖論的一些基本知識,如果學習過離散數學或者數據結構,這些概念很容易理解。除此之外,某些演算法會用到離散數學中的樹的概念,但很容易理解。

編程能力

編程能力是學好機器學習和深度學習的又一大基礎。對於計算機類專業的學生,由於本科已經學了c語言,c++,數據結構與演算法,因此這方面一般不存在問題。對於非計算機專業的人來說,要真正學好機器學習和深度學習,這些知識是繞不開的。

雖然現在大家熱衷於學習python,但要作為一名真正的演算法工程師,還是應該好好學習一下c++,至少,機器學習和深度學習的很多底層開源庫都是用它寫的;很多公司線上的產品,無論是運行在伺服器端,還是嵌入式端,都是用c++寫的。此外,如果你是應屆生,在校園招聘時不少公司都會面試你c++的知識。

機器學習與深度學習

在說完了數學和編程基礎之後,下面我來看核心的內容,機器學習和深度學習知識。機器學習是現階段解決很多人工智慧問題的核心方法,尤其是深度學習,因此它們是演算法工程師的核心知識。在這裡有一個問題:是否需要先學機器學習,還是直接學深度學習?如果是一個專業的演算法工程師,我的建議是先學機器學習。至少,你要知道機器學習中的基本概念,過擬合,生成模型,ROC曲線等,上來就看深度學習,如沒有背景知識你將不知所云。另外,神經網路只是機器學習中的一類方法,對於很多問題,其他機器學習演算法如logistic回歸,隨機森林,GBDT,決策樹等還在被大規模使用,因此你不要把自己局限在神經網路的小圈子裡。

首先來看機器學習,這方面的教材很多,周志華老師的機器學習,李航老師的統計學習方法是國內的經典。這裡我們介紹國外的經典教材,首先是PRML,深度學習是花書,然後強化學習是《An Introdction to Reinforcement Learning》

開源庫

上面介紹了機器學習和深度學習的理論教材,下面來說實踐問題。我們無需重複造車輪子,熟練的使用主流的開源庫是需要掌握的一項技能。對於經典的機器學習,常用的庫的有:

libsvm

liblinearXGBoostOpenCVHTKWeka

在這裡我們不一一列舉。藉助於這些庫,我們可以方便的完成自己的實驗,或是研發自己的產品。對於深度學習,目前常用的有:

Caffe

TensorFlowMXNet

除此之外,還有其他的。對於你要用到的開源庫,一定要理解它的原理,以及使用中的一些細節問題。例如很多演算法要求輸入的數據先做歸一化,否則效果會非常差,而且面臨浮點數溢出的問題,這些實際經驗需要你在使用中摸索。如果有精力把這些庫的核心代碼分析一遍,你對實現機器學習演算法將會更有底氣。以深度學習為例,最核心的代碼無非是實現:

各種層,包括它們的正向傳播和反向傳播

激活函數的實現損失函數的實現輸入數據的處理求解器,實現各種梯度下降法

這些代碼的量並不大,沉下心來,我相信一周之內肯定能分析完。看完之後你會有一種豁然開朗的感覺。

應用方向的知識

接下來是各個方向的知識,與機器學習有關的應用方向當前主要有:

機器視覺

語音識別 自然語言處理數據挖掘知識圖譜推薦系統

除此之外,還有其他一些特定小方向,在這裡不一一列舉。這些具體的應用方向一般都有自己的教材,如果你以後要從事此方向的研究,系統的學習一遍是必須的。

實踐經驗與思考

在說完理論與實踐知識之後,最後我們來說經驗與思考。在你確定要做某一個方向之後,對這個方向的方法要有一個全面系統的認識,很多方法是一脈相承的,如果只追求時髦看最新的演算法,你很難做出學術上的創新,以及工程上的優化。對於本問題所有的經典論文,都應該化時間細度,清楚的理解它們解決了什麼問題,是怎麼解決的,還有哪些問題沒有解決。例如:

機器視覺目標檢測中的遮擋問題

推薦系統中的冷啟動問題

自然語言處理中文分詞中的歧義切分問題

只有經過大量的編程和實驗訓練,以及持續的思考,你才能算得上對這個方向深刻理解,以至於有自己的理解。很多同學對自己實現輪上的演算法沒有底氣,解決這個問題最快的途徑就是看論文演算法的開源代碼,在github上有豐富的資源,選擇一些合適的,研究一下別人是怎麼實現的,你就能明白怎麼實現自己的網路結構和損失函數,照葫蘆畫瓢即可。

計算機以及人工智慧是一個偏實踐的學科,它的方法和理論既需要我們有紮實的理論功底,又需要有豐富的實踐能力與經驗。這兩個方面構成了演算法工程師最主要的素質。科學的學習路徑能夠讓你取得好的學習效果,同時也縮短學習時間。錯誤和浮躁的做法則會讓你最後事倍功半。這是SIGAI對想進入這個領域,或者剛進入這個領域的每個人要說的!


你的英語如何?英語好的話私信我。我發現一個印度人做的課非常好。


只需十四步:從零開始掌握Python機器學習(附資源)


先大致複習下數學,微積分,矩陣,概率統計,再看下數據結構,入門課推薦ng的機器學習課,數學要求比較低講的也很細,看完課可以再看一下周志華的《機器學習》
推薦閱讀:
查看原文 >>
相关文章