1. 程式人生 > >機器學習入門資料

機器學習入門資料


轉載自https://blog.csdn.net/zyj098765/article/details/52860183

引言

   拿到這份文件時想必你的腦海中一直縈繞著這麼一個問題,“機器學習/深度學習要怎麼學呢?(怎麼入門,又怎麼進一步掌握?)”。關於這個問題其實並沒有一個標準答案,有的人可能適合自底向上的學,也就是先從理論和數學開始,然後是演算法實現,最後再通過一些專案去解決生活中的實際問題;有的人則可能適合自頂向下的學,也就是在弄清楚什麼是機器學習及為什麼學機器學習後,先確定一個系統性的用機器學習來解決實際問題的程式,然後找到一個合適的工具,接著再在各種資料集上做練習以不斷加強自己的實踐能力與鞏固對演算法的理解。而這份文件是希望能從紛繁眾多的學習資料裡為你整理出一個頭緒,但即使是這樣一個出發點,從最終的結果來看,也還是繁雜了一些,也許之後還會再整理出一個精簡版,不過其實一些很不錯的入門指南的連結在這份文件裡也已列出,仔細找找就會有好東西喔。最後想借用Quora上一份對“

I’m very interested in deep learning. How can I get hired?”問題的回答來作為這份學習建議的開場白: 
 “Deep learning (Neural nets)/Machine learning is an ART. ART can never be mastered unless it is practiced. So instead of just learning about them , start exploring them by implementing one. there are outnumbered tutorials on net. choose either lib based implementation such as convnet or torch7 or caffe etc. or try implementing fully from scratch( this way u understand internal structures and linkages of algo better) . 
  Start off with small dataset instead of aiming on high . 
  Start off by minimal architecture. 
  U will learn a lot this way u gain confidence. then you can project yourself to the companies by posting link of ur github repository of machine /deep learning implementations. this will help u in the long run… “ 
                                                  —Good Luck

階段一.機器學習入門


這裡寫圖片描述

這是最基礎也是最重要的一個階段,借用臺大的林軒田教授總結的幾句話,在這個階段我們要注重思考與理解這麼幾個問題: 
1.什麼是機器學習? 
What is machine learning 
2.什麼時候機器可以學習(機器學習能為我們做什麼)? 
When can machines learn 
3.為什麼機器可以學習? 
Why can machines learn 
4.怎樣讓機器學習? 
How can machines learn 
5.怎樣讓機器學得更好? 
How can machines learn better

推薦的課程

1.Coursera-Machine Learning 
https://www.coursera.org/learn/machine-learning/ 
吳恩達教授在Coursera上開的機器學習的公開課,是一門非常好的機器學習入門課程,相信很多同學都知道,就不多說了。但值得一提的是,程式設計作業除了官網提供的matlab版,也有人用python實現了一遍,對於想要了解python的同學,這是個不錯的實踐機會: 
https://github.com/icrtiou/coursera-ML

2.CS229-Machine Learning 
http://open.163.com/movie/2008/1/M/C/M6SGF6VB4_M6SGHFBMC.html?recomend=2 
同樣是吳恩達教授開的公開課,相比Coursera上的課程難度會大一些,適合做一定程度的拔高。以下連結為課程講義的下載: 
http://cs229.stanford.edu/materials.html

3.Intro to Machine Learning 
https://www.udacity.com/course/intro-to-machine-learning–ud120 
Udacity有一個免費的,十週的機器學習課程,著重於理論與實際的應用。對深度學習感興趣的人這會是一個全面的預備課程。

4.Coursera-Machine Learning Foundations 
http://pan.baidu.com/s/1hsjtaWc 
這就是一開始提到的林軒田教授在Coursera上開的課,不過現在網上已經下架了,因此給了個百度雲盤的連結,可直接下載觀看。個人覺得相比前兩門課,在基礎上講得會更細緻一些,而且全程中文講課,聽起來也相對輕鬆些,適合想把基礎打紮實些的同學觀看。

推薦的書籍

1.李航 -《統計學習方法》 
2.周志華 -《機器學習》 
這兩本書就不用說了,相信大部分對這個領域感興趣的人都已經人手一本了吧:) 
個人覺得關鍵是如何使用這兩本書了,先貼出一個周志華教授他自己的建議: 
http://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/MLbook2016.htm?url_type=39&object_type=webpage&pos=1&from=groupmessage&isappinstalled=1 
然後我個人的看法是不要孤立地去看這兩本書,最好能結合其他資源如公開課、部落格等一起去看,還有最重要的一點,一定要注重邊看邊實踐,比如當看到某個模型時,就去網上下載一些相關的資料集和程式碼來學習一下。這一點做起來可能不是那麼容易,因為實踐難度會更高一些,也往往意味著更多時間的投入,很多時候可能只是稍微試了一下,碰到些困難,就放棄了,我這一年來的學習也存在著很多這樣的情況。但如果想更深入地理解模型、演算法,想做出些自己的東西,實踐上的練習是絕對必不可少的。

3.其他的入門及深入書籍可參看這個連結: 
http://www.cnblogs.com/xmphoenix/p/3683870.html 
其中的《Pattern Recognition And Machine Learning》一書據評“具有強烈的工程氣息,可以配合stanford 大學 Andrew Ng 教授的 Machine Learning 視訊教程一起來學,效果翻倍。”

推薦的綜述論文

1.《The Discipline of Machine Learning》 
http://www.cs.cmu.edu/~tom/pubs/MachineLearning.pdf 
Tom Mitchell 當年為在CMU建立機器學習系給校長寫的東西。

2.《A Few Useful Things to Know about Machine Learning》 
http://homes.cs.washington.edu/~pedrod/papers/cacm12.pdf 
Pedro Domingos教授的大道理,也許入門時很多概念還不明白,上完公開課後一定要再讀一遍。

推薦的程式設計庫

1.scikit-learn 
http://scikit-learn.org/stable/ 
這是基於python來進行機器學習實戰的一個很好的庫,主要包含分類、迴歸、聚類、降維的常用演算法及具體例程,以及模型選擇、預處理這樣的影響機器學習模型效能的關鍵處理。

2.DMLC 
http://dmlc.ml/ 
這是一個開源的分散式機器學習專案,包含有MxNet、Minerva這樣的靈活而又高效的深度學習庫,以及Xgboost這樣的大規模、分散式的通用Gradient Boosting庫,值得一提的是,由於其效能和效率上的優勢,Xgboost自問世起就一直是各類資料探勘競賽(如kaggle)的一大殺器。下圖為Xgboost與另外兩個boosting方法常用包的對比:

這裡寫圖片描述

xgboost和另外兩個常用包的效能對比

推薦的部落格

1.掌握機器學習的5條必由之路 
http://mp.weixin.qq.com/s?__biz=MzI3MTA0MTk1MA==&mid=2651987978&idx=3&sn=6c5e1ae866dd47105cb84417e59502ac&chksm=f12154fbc656dded6edc649fab530efc25f686f027db57f0dc76e24dfa1c6142f1f3bb5ba3e5&mpshare=1&scene=1&srcid=1018HDoQNrHdRpA5A8zyhF3Q#rd 
傳統的機器學習方法提倡從下往上學,先從理論和數學開始,然後是演算法實現,最後讓你去解決現實世界的問題。作者提倡的掌握機器學習的方法與傳統方法相反,是從最有價值的成果部分開始。這一思路值得借鑑。

2.機器學習入門資源不完全彙總 
http://ml.memect.com/article/machine-learning-guide.html#%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5 
如題,你可以從這個連結中找到更多的入門資源

3.機器學習的最佳入門學習資源 
http://blog.jobbole.com/56256/ 
這其實是“2”的中文翻譯

4.Best Machine Learning Resources for Getting Started 
http://machinelearningmastery.com/best-machine-learning-resources-for-getting-started/ 
這也是一份很不錯的入門資源的整合

5.機器學習相關學習網址記錄 
http://blog.csdn.net/brightming/article/details/50420608 
有很多東西,從中挑選自己感興趣的吧

6.機器學習與人工智慧學習資源導引 
http://mindhacks.cn/2008/09/11/machine-learning-and-ai-resources/ 
除了這篇文章本身,大家也可以多關注下文章作者(劉未鵬)的其他部落格,有很多方法論的東西寫的很棒

7.從入門到精通是怎樣一種體驗 
http://blog.csdn.net/kkk584520/article/details/51136439 
如題,更多有趣的見解也可以直接知乎一下

8.zouxy09的專欄 
http://blog.csdn.net/zouxy09/article/category/1333962 
zouxy09也是個部落格大牛了,寫有很多有價值的文章

9.從機器學習談起 
http://www.cnblogs.com/subconscious/p/4107357.html 
這篇文章“以漫談的形式介紹跟機器學習相關的所有內容,包括學科(如資料探勘、計算機視覺等),演算法(神經網路,svm)等等”,是一篇寫得不錯的機器學習入門介紹

10.機器學習系列 
https://www.52ml.net/20090.html 
這是一系列的機器學習基礎文章,最好可以在整個學習過程中一點點地跟著看

推薦的微信公眾號

公眾號上的文章幾乎每天都會更新,而且瀏覽起來很便捷,主要推薦四個: 
1.機器之心 
2.新智元 
3.機器學習研究會 
4.深度學習大講堂