1. 程式人生 > >機器學習和python學習之路史上吐血整理機器學習python大資料技術書從入門到進階最全本(書籍推薦珍藏版)

機器學習和python學習之路史上吐血整理機器學習python大資料技術書從入門到進階最全本(書籍推薦珍藏版)

“機器學習/深度學習並不需要很多數學基礎!”也許你在不同的地方聽過不少類似這樣的說法。對於鼓勵數學基礎不好的同學入坑機器學習來說,這句話是挺不錯的。不過,機器學習理論是與統計學、概率論、電腦科學、演算法等方面交叉的領域,對這些技術有一個全面的數學理解對理解演算法的內部工作機制、獲取好的結果是有必要的。機器學習確實需要對一些數學領域有深入理解,缺乏必要的數學知識,很可能在更深入的學習中不斷遇到挫折,甚至導致放棄。

說的很多小夥伴恐怕心都涼了一半,或者已經開始打退堂鼓了。不要緊,山人自有妙法。下面就給大家分享一下,主要是一些資源(書籍或者視訊課程)。人工智慧(機器學習或資料探勘等)中最最重要的數學就是線性代數與概率論(還有其他,但這兩者比重最大)。

所以我找了個書單自學,電子書為主,順便分享出來。使用電子書的形式是因為,個人偏好。即使我買了實體書,一旦找到了電子書,我馬上就會把紙質書扔到床底下。如果侵犯了任何人的權益,煩請及時通知。

1. 數學基礎

1.微積分:《微積分學教程》 (F.M.菲赫金哥爾茨)俄羅斯的數學書

2.線性代數:《Linear Algebra and Its Applications,Third Edition (David C.Lay)》講得很實際,線性代數最重要的就是與實際應用相聯絡才能夠理解其意義

3.概率與統計:《概率論與數理統計 (陳希孺)》或《概率論與數理統計(盛驟/謝式千/潘承毅)》這兩本書都很不錯

4.隨機過程:《應用隨機過程:概率模型導論 (Sheldon M. Ross)》這本書已經出到第10版了

這四門是數學的基礎,當然數學本身就是博大精深的。

2. 機器學習與資料探勘(偏理論)

1.《  統計學習方法 (李航)》

2.《統計學習基礎 (Trevor Hastie, Robert Tibshirani, Jerome Friedman)》

3.《Pattern Recognition and Machine Learning (Christopher Bishop)》

4.《Introduction to Machine Learning (Ethem Alpaydin)》(《機器學習導論》)

6.《Data Mining (韓家煒) 》

7.《現代模式識別 (孫即祥) 》

   個人覺得《統計學習方法》與《統計學習基礎》這兩本書是基礎,後面的書內容相差不大,所以前兩本書應該看,而入門的話,後面的書可以選1到2本精讀,剩下的書可作參考。 3. 智慧演算法(偏應用)

1.《Web智慧演算法 (Haralambos Marmanis, Dmitry Babenko)》

2.《集體智慧程式設計 (Toby Segaran)》

3.《推薦系統實踐 (項亮)》

4.《資料之魅 (Pbilipp K.Janert)》

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

有人推薦,學習機器學習的話可以先讀《統計學習方法》和《統計學習基礎》打底,這樣就包含了大部分的演算法,然後再深入研究某個演算法。

入門級:

《數學之美》;作者吳軍大家都很熟悉。這本書主要的作用是引起了我對機器學習和自然語言處理的興趣。裡面以極為通俗的語言講述了數學在這兩個領域的應用。

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

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

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

《Machine Learning》(《機器學習》);作者TomMitchell[2]是CMU的大師,有機器學習和半監督學習的網路課程視訊。這本書是領域內翻譯的較好的書籍,講述的演算法也比《統計學習方法》的範圍要大很多。據評論這本書主要在於啟發,講述公式為什麼成立而不是推導;不足的地方在於出版年限較早,時效性不如PRML。但有些基礎的經典還是不會過時的,所以這本書現在幾乎是機器學習的必讀書目。那麼Mitchell的<機器學習>是經典的入門之作。當然,因為年代久遠,很多新的模型都沒有涉及到,但不影響他的經典性——入門級。

機器學習實戰》對於程式設計師,想快速瞭解模型流程和優缺點的,甚至是實現模型的,那麼<machine learning in action>是我比較推薦的,現在已經有中文版了<機器學習實戰>。這本書,提到了很多常見的模型,開始就是模型背景簡介,之後是模型優缺點和應用場景、在接著演算法實現和案例。而且,在書的最後,提及了一些比較切合時代的話題——大資料下機器學習。 《機器學習基礎》對於想從事機器學習的入門人員,比較推薦一本有中文版的<機器學習基礎>(Simon Rogers的,英國格拉斯哥大學電腦科學學院講師),這本書適合高年級本科生和研究生。從理論的角度,推導了各個演算法,以及探究了各個模型的特性等。涉及數學和矩陣的地方,都有詳細的參照。適合高階點的入門,看這本書,可以體會一下自己的數學和矩陣,有種必須要加強的感覺。

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

《Data Mining: Practical Machine Learning Tools and Techniques》(《資料探勘:實用機器學習技術》);作者Ian H. Witten 、Eibe Frank是weka的作者、紐西蘭懷卡託大學教授。他們的《ManagingGigabytes》[4]也是資訊檢索方面的經典書籍。這本書最大的特點是對weka的使用進行了介紹,但是其理論部分太單薄,作為入門書籍還可,但是,經典的入門書籍如《集體智慧程式設計》、《智慧web演算法》已經很經典,學習的話不宜讀太多的入門書籍,建議只看一些上述兩本書沒講到的演算法。

深入級:

《Pattern Classification》(《模式分類》第二版);作者Richard O. Duda[5]、Peter E. Hart、David。模式識別的奠基之作,但對最近呈主導地位的較好的方法SVM、Boosting方法沒有介紹,被評“掛一漏萬之嫌”。

《The Elements of Statistical Learning : Data Mining, Inference, andPrediction》,(《統計學習基礎:資料探勘、推理與預測》第二版);作者RobertTibshirani、Trevor Hastie、Jerome Friedman。“這本書的作者是Boosting方法最活躍的幾個研究人員,發明的Gradient Boosting提出了理解Boosting方法的新角度,極大擴充套件了Boosting方法的應用範圍。這本書對當前最為流行的方法有比較全面深入的介紹,對工程人員參考價值也許要更大一點。另一方面,它不僅總結了已經成熟了的一些技術,而且對尚在發展中的一些議題也有簡明扼要的論述。讓讀者充分體會到機器學習是一個仍然非常活躍的研究領域,應該會讓學術研究人員也有常讀常新的感受。”[7]