天天看點

機器學習的相關書籍推薦推薦

 機器學習的資料較多,初學者可能會不知道怎樣去有效的學習,是以對這方面的資料進行了一個彙總,希望能夠對和我一樣的初學者有一定的借鑒。

1. 數學基礎

    機器學習是建構于數學的基礎之上的,是以隻有把數學的基本功打好,才能夠在機器學習領域有長遠的發展。正所謂”勿在浮沙築高台“。

    • 微積分:微積分學教程 (F.M.菲赫金哥爾茨)俄羅斯的數學書
    • 線性代數:Linear Algebra and Its Applications,Third Edition (David C.Lay)講得很實際,線性代數最重要的就是與實際應用相聯系才能夠了解其意義
    • 機率與統計:機率論與數理統計 (陳希孺)或(盛驟/謝式千/潘承毅)這兩本書都很不錯
    • 随機過程:應用随機過程:機率模型導論 (Sheldon M. Ross)這本書已經出到第10版了

    這四門是數學的基礎,當然數學本身就是博大精深的,下面這個連結中有更深入的一些資料可以學習。

   林達華推薦的幾本數學書:http://blog.sciencenet.cn/blog-722391-578745.html 

   上面是基本的一些數學知識,下面是其它的一些資料:

    • http://blog.csdn.net/abcjennifer/article/details/7691571
    • 資料挖掘中所需的機率論與數理統計知識、上:http://blog.csdn.net/v_july_v/article/details/8308762
    • 正态分布的前世今生:http://www.52nlp.cn/tag/%E6%AD%A3%E6%80%81%E5%88%86%E5%B8%83%E7%9A%84%E5%89%8D%E4%B8%96%E4%BB%8A%E7%94%9F
    • LDA數學八卦
    • 機器學習中的數學:http://leftnoteasy.cnblogs.com/

   都是牛人們的精彩分享,謝謝。

   對于數學的學習,個人覺得如果時間不夠,可以先略讀,之後再看機器學習算法時,若有不懂的,才知道去哪個地方查找,然後再根據機器學習中的具體應用加深對該處數學知識的掌握。

2. 機器學習與資料挖掘(偏理論)

    • 統計學習方法 (李航)
    • 統計學習基礎 (Trevor Hastie, Robert Tibshirani, Jerome Friedman)
    • Pattern Recognition and Machine Learning (Christopher Bishop)
    • Machine Learning: A Probabilistic Prespective (Kevin Murphy)
    • Pattern classification (Richard O. Duda, Peter E. Hart and David G. Stork)
    • Introduction to Machine Learning (Ethem Alpaydin)
    • Data Mining (韓家炜) 
    • 現代模式識别 (孫即祥) 

   個人覺得《統計學習方法》與《統計學習基礎》這兩本書是基礎,後面的書内容相差不大,是以前兩本書應該看,而入門的話, 後面的書可以選1到2本精讀 ,剩下的書可作參考。

3. 智能算法( 偏應用)

    • Web智能算法 (Haralambos Marmanis, Dmitry Babenko)
    • 集體智慧程式設計 (Toby Segaran)
    • 推薦系統實踐 (項亮)
    • 資料之魅 (Pbilipp K.Janert)

   這幾本書均是從實踐的角度講解了機器學習中常用的算法,非常值得一看。

4. Deep Learning

   Deep Learning最近幾年非常熱門,受到了業界廣泛的關注。

    • 斯坦福大學的網站:http://deeplearning.stanford.edu/wiki/index.php/UFLDL_Tutorial ,其中國内的業界牛人對其進行了翻譯,也在該網站上
    • Deep Learning的前世今生:http://www.cnblogs.com/avril/archive/2013/02/08/2909344.html
    • 深度學習的一些教程:http://baojie.org/blog/2013/01/27/deep-learning-tutorials/

5. 視訊學習資源

    前兩個是Andrew Ng的

    • http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=MachineLearning
    • http://v.163.com/special/opencourse/machinelearning.html
    • http://work.caltech.edu/telecourse.html
    • http://v.163.com/special/opencourse/daishu.html   線性代數公開課

6. 其它書籍

    • 數學之美 (吳軍)鼎鼎大名的書就不用多說了,對目前搜尋、自然語言處理等領域所常用的算法進行了講解
    • 研究之美 (Knuth)40年前寫好的書,去年才在國内買到,很小的冊子
    • 從一到無窮大

    個人覺得,上面的書基本上包括了機器學習入門所需要的一些知識,若能用心學完,基本上算是入門了。之後若是理論研究,則不斷閱讀最新的文獻,而投向于工業界,則隻有不斷實踐,才能夠更好地将機器學習的理論應用于平時的工作中。

   當然,限于我自身知識的局限性,還有更多的好資料沒能列于其中,還請各位多多指教。同時,若文中有何不足之處,也請各位不吝賜教,謝謝!

前面有一篇機器學習經典論文/survey合集,本文總結了機器學習的經典書籍,包括數學基礎和算法理論的書籍。 

入門書單 

《數學之美》 PDF 

作者吳軍大家都很熟悉。以極為通俗的語言講述了數學在機器學習和自然語言處理等領域的應用。 

《Programming Collective Intelligence》 (《集體智慧程式設計》)PDF 

作者Toby Segaran也是《BeautifulData : The Stories Behind Elegant Data Solutions》(《資料之美:解密優雅資料解決方案背後的故事》)的作者。這本書最大的優勢就是裡面沒有理論推導和複雜的數學公式,是很不錯的入門書。目前中文版已經脫銷,對于有志于這個領域的人來說, 英文的pdf是個不錯的選擇,因為後面有很多經典書的翻譯都較差,隻能看英文版, 不如從這個入手。還有,這本書适合于快速看完,因為據評論,看完一些經典的帶有數學推導的書後會發現這本書什麼都沒講,隻是舉了很多例子而已。 

《Algorithms of the Intelligent Web》(《智能web算法》)PDF 

作者Haralambos Marmanis、Dmitry Babenko。這本書中的公式比《集體智慧程式設計》要略多一點,裡面的例子多是網際網路上的應用,看名字就知道。不足的地方在于裡面的配套代碼是BeanShell而不是python或其他。總起來說,這本書還是适合初學者,與上一本一樣需要快速讀完,如果讀完上一本的話,這一本可以不必細看代碼,了解算法主要思想就行了。 

《統計學習方法》 PDF 

作者李航,是國内機器學習領域的幾個大家之一,曾在MSRA任進階研究員,現在華為諾亞方舟實驗室。書中寫了十個算法,每個算法的介紹都很幹脆,直接上公式,是徹頭徹尾的“幹貨書”。每章末尾的參考文獻也友善了想深入了解算法的童鞋直接查到經典論文;本書可以與上面兩本書互為輔助閱讀。 

《Machine Learning》(《機器學習》) PDF 

作者Tom Mitchell是CMU的大師 ,有機器學習和半監督學習的網絡課程視訊。這本書是領域内翻譯的較好的書籍,講述的算法也比《統計學習方法》的範圍要大很多。據評論這本書主要在于啟發,講述公式為什麼成立而不是推導;不足的地方在于出版年限較早,時效性不如PRML。但有些基礎的經典還是不會過時的,是以這本書現在幾乎是機器學習的必讀書目。

《Mining of Massive Datasets》 (《大資料》) PDF 

作者Anand Rajaraman[3]、Jeffrey David Ullman,Anand是Stanford的PhD。這本書介紹了很多算法,也介紹了這些算法在資料規模比較大的時候的變形。但是限于篇幅,每種算法都沒有展開講的感覺,如果想深入了解需要查其他的資料,不過這樣的話對算法進行了解也足夠了。還有一點不足的地方就是本書原文和翻譯都有許多錯誤,勘誤表比較長,讀者要用心了。 

《Data Mining: Practical Machine Learning Tools and Techniques》(《資料挖掘:實用機器學習技術》) PDF 

作者Ian H. Witten 、Eibe Frank是weka的作者、紐西蘭懷卡托大學教授。他們的《ManagingGigabytes》[4]也是資訊檢索方面的經典書籍。這本書最大的特點是對weka的使用進行了介紹,但是其理論部分太單薄,作為入門書籍還可,但是,經典的入門書籍如《集體智慧程式設計》、《智能web算法》已經很經典,學習的話不宜讀太多的入門書籍,建議隻看一些上述兩本書沒講到的算法。 

《機器學習及其應用》 

周志華、楊強主編。來源于“機器學習及其應用研讨會”的文集。該研讨會由複旦大學智能資訊處理實驗室發起,目前已舉辦了十屆,國内的大牛如李航、項亮、王海峰、劉鐵岩、餘凱等都曾在該會議上做過講座。這本書講了很多機器學習前沿的具體的應用,需要有基礎的才能看懂。如果想了解機器學習研究趨勢的可以浏覽一下這本書。關注領域内的學術會議是發現研究趨勢的方法嘛。 

《Managing Gigabytes》(深入搜尋引擎)PDF 

資訊檢索不錯的書。 

《Modern Information Retrieval》 PDF 

Ricardo Baeza-Yates et al. 1999。貌似第一本完整講述IR的書。可惜IR這些年進展迅猛,這本書略有些過時了。翻翻做參考還是不錯的。另外,Ricardo同學現在是Yahoo Research for Europe and Latin Ameria的頭頭。 

《推薦系統實踐》 PDF 

項亮,不錯的入門讀物 

深入 

《Pattern Classification》(《模式分類》第二版) PDF 

作者Richard O. Duda[5]、Peter E. Hart、David。模式識别的奠基之作,但對最近呈主導地位的較好的方法SVM、Boosting方法沒有介紹,被評“挂一漏萬之嫌”。 

《Pattern Recognition And Machine Learning》 PDF 

作者Christopher M. Bishop[6];簡稱PRML, 側重于機率模型,是貝葉斯方法的扛鼎之作,據評“具有強烈的工程氣息,可以配合stanford 大學 Andrew Ng 教授的 Machine Learning 視訊教程一起來學,效果翻倍。 ” 

《The Elements of Statistical Learning : Data Mining, Inference, andPrediction》,(《統計學習基礎:資料挖掘、推理與預測》第二版) PDF 

作者RobertTibshirani、Trevor Hastie、Jerome Friedman。“這本書的作者是Boosting方法最活躍的幾個研究人員,發明的Gradient Boosting提出了了解Boosting方法的新角度,極大擴充了Boosting方法的應用範圍。這本書對目前最為流行的方法有比較全面深入的介紹,對工程人員參考價值也許要更大一點。另一方面,它不僅總結了已經成熟了的一些技術,而且對尚在發展中的一些議題也有簡明扼要的論述。讓讀者充分體會到機器學習是一個仍然非常活躍的研究領域,應該會讓學術研究人員也有常讀常新的感受。”[7] 

《Data Mining:Concepts andTechniques》(《資料挖掘:概念與技術》第三版) PDF 

作者(美)Jiawei Han[8]、(加)Micheline Kamber、(加)Jian Pei,其中第一作者是華裔。本書毫無疑問是資料挖掘方面的的經典之作,不過翻譯版總是被噴,沒辦法,大部分翻譯過來的書籍都被噴,想要不吃别人嚼過的東西,就好好學習英文吧。 

《AI, Modern Approach 2nd》 PDF 

Peter Norvig,無争議的領域經典。 

《Foundations of Statistical Natural Language Processing》 PDF 

自然語言處理領域公認經典。 

《Information Theory:Inference and Learning Algorithms》 PDF 

《Statistical Learning Theory》 PDF 

Vapnik的大作,統計學界的權威,本書将理論上升到了哲學層面,他的另一本書《The Nature ofStatistical Learning Theory》也是統計學習研究不可多得的好書,但是這兩本書都比較深入,适合有一定基礎的讀者。 

數學基礎 

《矩陣分析》 PDF 

Roger Horn。矩陣分析領域無争議的經典 

《機率論及其應用》 PDF 

威廉·費勒。極牛的書,可數學味道太重,不适合做機器學習的 

《All Of Statistics》 PDF 

機器學習這個方向,統計學也一樣非常重要。推薦All of statistics,這是CMU的一本很簡潔的教科書,注重概念,簡化計算,簡化與Machine Learning無關的概念和統計内容,可以說是很好的快速入門材料。 

《Nonlinear Programming, 2nd》 PDF 

最優化方法,非線性規劃的參考書。 

《Convex Optimization》 PDF 配套代碼 

Boyd的經典書籍,被引用次數超過14000次,面向實際應用,并且有配套代碼,是一本不可多得的好書。 

《Numerical Optimization》 PDF 

第二版,Nocedal著,非常适合非數值專業的學生和工程師參考,算法流程清晰詳細,原理清楚。 

《Introduction to Mathematical Statistics》 PDF 

第六版,Hogg著,本書介紹了機率統計的基本概念以及各種分布,以及ML,Bayesian方法等内容。 

《An Introduction to Probabilistic Graphical Models》 PDF 

Jordan著,本書介紹了條件獨立、分解、混合、條件混合等圖模型中的基本概念,對隐變量(潛在變量)也做了詳細介紹,相信大家在隐馬爾科夫鍊和用Gaussian混合模型來實作EM算法時遇到過這個概念。 

《Probabilistic Graphical Models-Principles and Techniques》 PDF 

Koller著,一本很厚很全面的書,理論性很強,可以作為參考書使用。 

具體數學 PDF 

經典 

歡迎補充。 

文中提供的PDF下載下傳連結,均來自于網絡,如有問題,請站内告知。 

2 回複排序方式 投票 時間 

bindbind 2小時前 

線性代數 (Linear Algebra): 

我想國内的大學生都會學過這門課程,但是,未必每一位老師都能貫徹它的精要。這門學科對于Learning是必備的基礎,對它的透徹掌握是必不可少的。我在科大一年級的時候就學習了這門課,後來到了香港後,又重新把線性代數讀了一遍,所讀的是 

Introduction to Linear Algebra (3rd Ed.) by Gilbert Strang. 

這本書是MIT的線性代數課使用的教材,也是被很多其它大學選用的經典教材。它的難度适中,講解清晰,重要的是對許多核心的概念讨論得比較透徹。我個人覺得,學習線性代數,最重要的不是去熟練矩陣運算和解方程的方法——這些在實際工作中MATLAB可以代勞,關鍵的是要深入了解幾個基礎而又重要的概念:子空間(Subspace),正交(Orthogonality),特征值和特征向量(Eigenvalues and eigenvectors),和線性變換(Linear transform)。從我的角度看來,一本線代教科書的品質,就在于它能否給這些根本概念以足夠的重視,能否把它們的聯系講清楚。Strang的這本書在這方面是做得很好的。 

而且,這本書有個得天獨厚的優勢。書的作者長期在MIT講授線性代數課(18.06),課程的video在MIT的Open courseware網站上有提供。有時間的朋友可以一邊看着名師授課的錄像,一邊對照課本學習或者複習。 

http://ocw.mit.edu/OcwWeb/Mathematics/18-06Spring-2005/CourseHome/index.htm  

機率和統計 (Probability and Statistics): 

機率論和統計的入門教科書很多,我目前也沒有特别的推薦。我在這裡想介紹的是一本關于多元統計的基礎教科書: 

Applied Multivariate Statistical Analysis (5th Ed.) by Richard A. Johnson and Dean W. Wichern 

這本書是我在剛接觸向量統計的時候用于學習的,我在香港時做研究的基礎就是從此打下了。實驗室的一些同學也借用這本書學習向量統計。這本書沒有特别追求數學上的深度,而是以通俗易懂的方式講述主要的基本概念,讀起來很舒服,内容也很實用。對于Linear regression, factor analysis, principal component analysis (PCA), and canonical component analysis (CCA)這些Learning中的基本方法也展開了初步的論述。 

之後就可以進一步深入學習貝葉斯統計和Graphical models。一本理想的書是 

Introduction to Graphical Models (draft version). by M. Jordan and C. Bishop. 

我不知道這本書是不是已經出版了(不要和Learning in Graphical Models混淆,那是個論文集,不适合初學)。這本書從基本的貝葉斯統計模型出發一直深入到複雜的統計網絡的估計和推斷,深入淺出,statistical learning的許多重要方面都在此書有清楚論述和詳細講解。MIT内部可以access,至于外面,好像也是有電子版的。 

分析 (Analysis): 

我想大家基本都在大學就學過微積分或者數學分析,深度和廣度則随各個學校而異了。這個領域是很多學科的基礎,值得推薦的教科書莫過于 

Principles of Mathematical Analysis, by Walter Rudin 

有點老,但是絕對經典,深入透徹。缺點就是比較艱深——這是Rudin的書的一貫風格,适合于有一定基礎後回頭去看。 

在分析這個方向,接下來就是泛函分析(Functional Analysis)。 

Introductory Functional Analysis with Applications, by Erwin Kreyszig. 

适合作為泛函的基礎教材,容易切入而不失全面。我特别喜歡它對于譜論和算子理論的特别關注,這對于做learning的研究是特别重要的。Rudin也有一本關于functional analysis的書,那本書在數學上可能更為深刻,但是不易于上手,所講内容和learning的切合度不如此書。 

在分析這個方向,還有一個重要的學科是測度理論(Measure theory),但是我看過的書裡面目前還沒有感覺有特别值得介紹的。 

拓撲 (Topology): 

在我讀過的基本拓撲書各有特色,但是綜合而言,我最推崇: 

Topology (2nd Ed.) by James Munkres 

這本書是Munkres教授長期執教MIT拓撲課的心血所凝。對于一般拓撲學(General topology)有全面介紹,而對于代數拓撲(Algebraic topology)也有适度的探讨。此書不需要特别的數學知識就可以開始學習,由淺入深,從最基本的集合論概念(很多書不屑講這個)到Nagata-Smirnov Theorem和Tychonoff theorem等較深的定理(很多書避開了這個)都覆寫了。講述方式思想性很強,對于很多定理,除了給出證明過程和引導你思考其背後的原理脈絡,很多令人贊歎的亮點——我常讀得忘卻饑餓,不願釋手。很多習題很有水準。 

流形理論 (Manifold theory): 

對于拓撲和分析有一定把握時,方可開始學習流形理論,否則所學隻能流于浮淺。我所使用的書是 

Introduction to Smooth Manifolds. by John M. Lee 

雖然書名有introduction這個單詞,但是實際上此書涉入很深,除了講授了基本的manifold, tangent space, bundle, sub-manifold等,還探讨了諸如綱理論(Category theory),德拉姆上同調(De Rham cohomology)和積分流形等一些比較進階的專題。對于李群和李代數也有相當多的讨論。行文通俗而又不失嚴謹,不過對某些記号方式需要熟悉一下。 

雖然李群論是建基于平滑流形的概念之上,不過,也可能從矩陣出發直接學習李群和李代數——這種方法對于急需使用李群論解決問題的朋友可能更加實用。而且,對于一個問題從不同角度看待也利于加深了解。下面一本書就是這個方向的典範: 

Lie Groups, Lie Algebras, and Representations: An Elementary Introduction. by Brian C. Hall 

此書從開始即從矩陣切入,從代數而非幾何角度引入矩陣李群的概念。并通過定義運算的方式建立exponential mapping,并就此引入李代數。這種方式比起傳統的通過“左不變向量場(Left-invariant vector field)“的方式定義李代數更容易為人所接受,也更容易揭示李代數的意義。最後,也有專門的論述把這種新的定義方式和傳統方式聯系起來。

繼續閱讀