機器學習書目以及線上教程推薦
當下在技術領域最火的莫過於人工智慧行業了,全球科技巨頭都在這個領域上爭奪屬於自己的一席之地。在全球趨勢大利好的情況下,加上國家政策大力度的扶持,越來越多的科技人員投身到人工智慧的懷抱中。在這個行業中,根據發展方向又可以為很多不同的細分領域,前幾年很火的大數據、數據挖掘在本質上也是屬於這一類,近幾年隨著理論的不斷更新和工具的不停迭代,又有一些非常有前景的領域不斷出現在人們的視線中,比如計算機視覺Computer Vision,自然語言處理Natual Language Processing,無人駕駛Autonomous car等等。人工智慧是建立在機器學習Machine Learning理論基礎之上的,因此想要入門人工智慧,首先要打好紮實的機器學習基礎。但是由於機器學習是一門理論和實踐結合非常緊密的學科,因此其學習曲線比較陡,不僅數學要好,也需要很好的編程基礎。
數學方面主要是線性代數、概率統計和微積分。
線性代數:在機器學習演算法的處理中,由於樣本數據非常多,因此幾乎所有的計算過程都是由矩陣來完成,而且在一些聚合演算法中,也需要有一些線性代數的理論來幫助推演。因此線性代數在機器學習中的地位是不言而喻的;
概率統計:很多機器學習的演算法是基於概率統計學的基礎之上的,比如樸素貝葉斯、邏輯分類、決策樹等,而且在演算法的優化選擇上也需要統計學作為基礎,比如P-value、R-score等。因此要入門機器學習,概率統計學的知識也是不可缺少的;
微積分:機器學習中的很多演算法也是基於微積分來推導的,比如梯度下降、神經網路的反向傳播等,如果想要更深入的理解演算法背後的數學理論,微積分的基礎也很重要。
好在以上所提到的理論部分,很多細節不需要我們重新編碼實現,目前已經有很多非常成熟的庫幫助完成了這項工作,不需要我們重新造輪子。在機器學習的編程語言中,當仁不讓的應屬Python。Python作為解釋類的膠水語言,雖然在速度上和C、C++這種編譯型語言是不能相比的,但是由於其簡潔性的語法、數據運算的方便以及超多的第三方庫軟體,使得Python成為機器學習的第一梯隊編程語言。在用Python關於機器學習的第三方庫中,最重要的就是Numpy、Pandas、Matplotlib和Scikit了。Numpy是一個矩陣計算庫,它讓大數據的計算變得簡單方便,編碼效率得以大幅提高;Pandas是建立在Numpy基礎之上,不僅繼承了Numpy優秀的矩陣計算特性,而且在此基礎之上擴展了DataFrame和Series數據類型,讓數據處理變得更加方便;Matplotlib是一個圖形庫,可以將各種數據的關係用圖形的形式非常直觀的展現出來,是評估演算法的不二之選;Scikit是目前使用最廣泛的機器學習演算法庫,裡面提供了各種主流演算法的介面函數,對於每種演算法的細節部分我們無需自己實現,只需要調Scikit的介面函數就可以了,省去了很多編碼工作。當然,如果想要對機器學習演算法的理解更加透徹,建議還是用Numpy和Pandas重新自己編寫一遍,雖然效率上可能不會有成熟的第三方庫高,但是這樣可以大幅度加深自己對理論的理解,以及編碼功力的提高。
本人從事機器學習也有很長一段時間了,一路走來深知裡面的艱辛。翻了不少書,看了不少視頻,總算是稍微有了一點經驗。下面是就我的經驗給大家推薦一些書目和在線課程,有了這些資源,相信你會少走很多彎路。
書目
理論類:
線性代數:《線性代數及其應用》(Linear Algebra and Its Applications)
概率統計:國外的有《概率論基礎教程》(A First Course in Probability),《深入淺出統計學》(Head First Statistics);國內的有陳希孺院士所著的《概率論與數理統計》(這本書個人認為極其優秀,是少見的國內數學教程大師級作品);
微積分:《托馬斯微積分》(Thomas" Calculus),《微積分學教程》
演算法類:
《統計學習入門》(An Introduction to Statistical Learning);《統計學習精要》(The Elements of Statistical Learning)。這兩本書是非常優秀的演算法類書籍,前者是入門性質的,後者對數學要求非常高;
國內的優秀書籍有《統計學習基礎》,西瓜書《機器學習》
實踐類:
Python語言:關於Python的書籍非常多,本人推薦的是《Learning Python》,雖然這是本一千多頁的大部頭,作者為了將一些內容講解清楚也可能比較啰嗦,但是看完之後你的Python功底會得到全面提升;當然也有一些其他的優秀書籍,比如《Programming in Python》,《Python Cookbook》等;
數據分析:為了更好的使用Numpy、Pandas和Matplotlib等這些在機器學習中用的非常多的第三方庫,重點推薦的是《Python for Data Analysis》這本書,裡面詳細講解了關於這些庫的使用方法;
Scikit:Scikit是使用最多的機器學習演算法庫,為了更好的理解和掌握各種函數介面的用法,以及使用機器學習解決現實問題的詳細過程,推薦的是《Mastering Machine Learning with scikit-learn》,這本書關於理論部分講的不是很深,但是對如何使用Scikit進行機器學習可以說的面面俱到;
自己實現演算法:如果想要更好的理解機器學習各種演算法,以及提高Python編程能力,最好是自己造一遍輪子,重點推薦的是《Machine Learning in Action》,同樣這本書對於理論也只是大致講解,但是對如何使用Numpy和Pandas實現各種演算法寫的非常詳細。書中代碼的注釋比較少,因此讀起來可能會比較頭疼,但是如果堅持下去一定會有很大收穫。
線上課程
目前有非常多極其優秀的線上課程供大家學習使用,很多都是世界名校免費提供的,教學質量絕對一流,即使沒有考上好的大學,也沒關係,在家裡也可以聽到和世界名校學生同樣的課程。
機器學習類:
Coursera上Andrew Ng的機器學習課程:這門課絕對是入門機器學習的不二之選,有非常多的人都是看NG大神這門課而入門機器學習的;
斯坦福大學的CS229課程:這門課同樣也是由NG大神所教授,但是裡面的理論深度比Coursera提高了一個檔次,對每個演算法都有詳盡的推導過程,因此看這門課數學基礎要好;
神經網路:Coursera上Geoffrey Hinton教授的神經網路課程,評價非常高,但是同樣理論層次比較深,需要有很好的數學基礎;
計算機視覺:斯坦福的CS231n課程,這門課由計算機視覺領域的華人權威李飛飛教授所講,質量也是非常之高;
數學理論類:
線性代數:麻省理工大學教授Gilbert Strang的線上課程,已經有些年頭了,但是經得住歲月的考驗;
概率統計:首先推薦Udacity上的統計學入門,這門課由Udacity的創始人Sebastian Thrun親自所教,可以在各種實踐問題中入門概率統計,並且課程中安排有Python編程環節。


※在互聯網大潮中,機器學習是做什麼的?
※機器學習方法篇-蒙特卡羅方法
TAG:機器學習 |