1. 程式人生 > >機器學習資料與攻略超強整理吐血推薦(一)

機器學習資料與攻略超強整理吐血推薦(一)

2016年3月,谷歌的AlphaGo對弈世界頂級圍棋棋手韓國人李世石。最終,AlphaGo以五局四勝的戰績擊敗李世石,一時風光無限,同時也在網路上極大的激起了小夥伴們對人工智慧(AI)的興趣。歲末年初,一個名叫“Master”的神祕網路圍棋手轟動了圍棋界,自去年12月29日開始,它在幾個知名圍棋對戰平臺上輪番挑戰中日韓圍棋高手,並在1月3日晚間擊敗了中國頂級圍棋手柯潔,取得了50勝0負的驚人戰績。人們紛紛猜測“Master”就是谷歌人工智慧AlphaGo的升級版。謎底很快被揭曉,就在Master取得第59場連勝後,Master賬號宣佈自己就是AlphaGo。各種媒體對此番交戰大肆報道,某些電視上的談話節目甚至以“人工智慧在未來會否搶去人類飯碗”之類的話題展開熱烈討論。

其實人機大戰這也不是頭一次了。早在二十年前,國際象棋特級大師,世界冠軍卡斯帕羅夫就曾與IBM公司的超級電腦“深藍”之間進行過終極對抗。在總共的六局比賽裡,卡斯帕羅夫最終以五平一負的戰績宣告敗北。儘管當時媒體也有報道,但遠遠沒有引起像最近這一兩年來AlphaGo這樣的話題熱度。原因何在?天時也!IT界無論是小夥伴還是祖國的老花朵都意識到人工智慧時代真的來了。去年在烏鎮召開的世界網際網路大會上,百度CEO李彥巨集就表示:移動網際網路時代已經結束,未來屬於人工智慧!

於是乎,眾多小夥伴,無論是IT從業者,還是尚處在學校的青年學子,紛紛摩拳擦掌,躍躍欲試,希望至少不要被AI時代給落下。然而,要進入人工智慧這個圈子,卻要比從“Java程式設計師轉成C++程式設計師”難太多了,很多人對此都表示望而卻步或者望洋興嘆。很多人都是無頭蒼蠅,不得其法,好像功夫也沒少下,但卻還是隻能在門外轉悠。我希望下面的一些建議能讓大家少走一些彎路或者儘快走上正路。(注意:我可沒說是有捷徑可走!畢竟有一些坎始終無法繞過去,這就如同一個無形的篩子擺在那一樣,很多人會被其“過濾”掉

。)

一、數學——萬般無奈皆源此

最近讀了一篇熱文《放棄幻想,搞AI必須先過數學關》(你可以從參考連結【1】中瀏覽該文全文),文章基本已經把數學之於AI的重要性闡釋的比較清楚,我只略擷取一些核心內容(相信每個過來人都會有此共同心聲):

“在 AI 學習的入門階段,數學是主要的攻堅物件,任何胸有大志的 AI 學習者都不要幻想繞過數學。” 儘管 AI 工具化的可能性是有的,而且是必然,趨勢很明顯。所以很多時候AI工程師並不像程式開發人員那樣強調編碼的能力與經驗,更多的時候AI工程師是在使用各種框架,呼叫各種現成的函式庫、軟體包等等。但是,“數學不過關的人在 AI 這個圈子裡是無法參與交流的,或者說得直白一點,是被人瞧不起的,根本無法被接納成為AI 圈子裡的人。其次,數學不過關而只能調引數的人,實踐當中並不好用。第三,即便是調參這件事情本身,懂不懂數學也是有很大差別的。”

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

1、線性代數

很多人會推薦MIT的線性代數公開課(確實不錯),但是很多中國學生聽英文課仍然有障礙,即使有字幕翻譯,恐怕也會影響學習速度,所以我推薦臺灣國立交通大學莊重特聘教授主講的線性代數課程,本課程分上下兩個學期:

  • http://ocw.nctu.edu.tw/course_detail.php?bgid=1&gid=1&nid=271#.WKm5gxBCtsA
  • http://ocw.nctu.edu.tw/course_detail.php?bgid=1&gid=1&nid=361#.WKm5gxBCtsA

我個人認為本課程的特色包括:

1)老師講得非常非常細緻,如果你循序漸進跟著學,絕對可以聽得懂;

2)這門課程其實是從泛函的角度來講解線性代數(同時兼顧了矩陣角度),會幫你建立一種更加高屋建瓴的線性代數觀念;

3)課程與實際應用結合非常緊密,像最小二乘法、奇異值分解SVD等在機器學習非常重要的內容都有深入探討。

同時,本課程所選用的教材也是你自學線性代數的一本上乘之選(網上可以找到本書的PDF版):

  • Linear Algebra 4th Edition,  Stephen Friedberg, Arnold Insel, Lawrence Spence,Prentice Hall


如果想自學,或者僅僅是溫故以往所學的線性代數,那麼下面這本從矩陣角度解釋線性代數的書可能更適合中國人的閱讀習慣,這本書裡對於最小二乘法、SVD等內容亦有涉及。

  • 線性代數及其應用 (原書第3版) David C Lay著,劉深泉等譯,機械工業出版社

目前這本書的中英文版國內都可以買到:

  

2、概率論


有一個非常非常簡單的入門課——國立臺灣大學葉丙成的概率課:

  • http://mooc.guokr.com/course/461/%E6%A9%9F%E7%8E%87/

但是上面這個課屬於掃盲課,如果你覺得深度還不夠,那麼我還是推薦你從下面這些書籍中找一本來作為參考,因為概率論方面的書特別特別多,我推薦幾本各具特色的:

1)首先是由Sheldon M. Ross編寫的《概率論基礎教程(第9版)》,這是一本在世界範圍內被廣泛使用的教材,內容嚴謹而且全面。鑑於概率論是大學本科階段的必修內容,如果你不是忘掉太多,其實並不用重頭開始學,所以備這樣一本書,偶爾翻查一下也是不錯的選擇。


2) 統計思維——程式設計師數學之概率統計;相對而言這本就不那麼學術化,更側重概念的通俗解讀,而非嚴格的數學推導。因為概率和統計常常是糾纏不在一起的,所以這本書裡面也涉及到了部分統計學的內容。


像概率裡面的期望、方差、概率密度函式、邊緣分佈、貝葉斯定理、全概率公式、矩母函式、二項分佈、高斯分佈、貝塔分佈等等在機器學習中都非常非常重要。最後這本算是概率學習裡面比較深的一本(也非常經典),供有深入學習需求的人研讀。

3)概率與計算——隨機演算法與概率分析,Michael M. & Eli Upfal 著

 

3、統計學

注意統計和概率是不一樣的,儘管它們的關係實在太緊密,所以講概率的書裡往往也會插入一些統計方面的知識。但還是專門講統計的書更專注一些。統計的書挺多,但是非統計專業,也不必學得太深。

1)統計學(第四版),賈俊平等編著。這是國內高校普遍使用的一本教材,我覺得條例是比較清晰的,講解也比較到位,如果你要系統地學,那麼它是一個不錯的選擇。


2)R語言實戰——機器學習與資料分析,這是博主夾帶的私貨。不要被名字遮住眺望的眼睛,這裡的“資料分析”主要是指統計資料分析,所以這本書裡有1/3在講解統計知識,而且是剝掉冗餘只留幹活地收錄了幾乎所有你該知道的統計知識(甚至包括非引數檢驗的內容),R語言是輔助統計計算的工具,便於向你演示一些統計方法的具體細節。


3)統計推斷是統計學的核心。統計推斷一般包括引數估計和假設檢驗兩個部分。其中假設檢驗包括引數假設檢驗和非引數檢驗兩類。引數估計又包括點估計和區間估計兩種,而點估計的方法主要有矩方法和極大似然法。如果你覺得希望在統計推斷方面有跟深入的研究,那麼下面這本書就是一個比較經典的讀物。


4、高等數學(或者叫微積分)

通常微積分部分在AI中的佔比不如線性代數和概率,這其實也主要是因為我們假設像“求導計算”這樣的基本功,上過大學的人應該都已經掌握。在機器學習的公式推導中,一般求導公式,鏈式法則,分部積分法、偏導數,這些內容都是家常便飯,如果你的記憶已經模糊,那麼其實上學時的高數教材就可以涵蓋這些必要的計算技巧。例如:

  • 同濟大學版的 高等數學(上、下)(第5版及以後)

一般這套書工科大學上課都會用到。書比較嚴謹,也比較經典,如果自學感覺比較枯燥,當字典查查也不錯,比如公式忘了就翻翻看。

 

如果你基礎不錯,還沒忘光,可以在不確定的地方翻翻看該書。如果你想複習或者重新學,或者有的地方書上講得看不懂,我推薦看國防科大的MOOC視訊課(朱健民教授主講)

  • http://www.icourse163.org/university/NUDT#/c,高等數學(一)(二)(三)(四)(五)

因為全部課程有100集之多,可能相當考驗學習者的毅力。個人認為在機器學習裡會用到的地方主要是泰勒展開(牛頓法的基礎)、梯度的概念(在學習梯度下降,你當然應該知道梯度的意義),和一些基本的最優化問題求解等。

5、其他數學書

有些東西或是“跳出三界外,不在無形中”,或是“哪裡都講,但哪裡又都不講全”,對於這類問題,似乎也只能找些非常專門的書來參考了。比如拉格朗日乘數法,在機器學習裡也算是比較常用的技巧了,在SVM裡會出現,在多元邏輯迴歸時也會出現,要想學習學習它,有些微積分的書裡會講,有些泛函分析的書裡也會講,但是為了學習拉格朗日乘數法把泛函分析也學一遍,好像又有點太麻煩。不如直接學凸優化吧!

1)凸優化——這也算是備受推崇的一本書了,SVM的推導核心就是凸優化的具體應用,名聲在外,不多贅述。


2)應用迴歸分析(第三版),何曉群,等編著。“迴歸”(包括線性迴歸及其推廣)是個比較特殊的存在。早在機器學習誕生之前很久很久,它就已經存在了,更多的時候研究它的人都是統計學家。所以現在在統計學(或者計量經濟學)的教材裡面都有迴歸的一席之地。而回歸分析也在機器學習中舉重若輕,是機器學習中的一類重要方法。但是機器學習書籍的作者往往會認為,那些修過統計的人對於迴歸已經很熟悉了,或者他們的讀者可以乾脆找本統計的書來看,所以一般的機器學習書裡並不太重視迴歸話題的探討(有的書會提到,但篇幅都有限)。如果你對迴歸很感興趣,那麼不妨看看下面這本專門講迴歸的書。


6、一些機器學習書中的數學基礎部分


因為數學對於機器學習來說太重要了,某些機器學習方面的書還會專門開闢章節“提綱挈領”地給出閱讀後續內容所必須的數學基礎。如果你自我感覺數學還不錯,那麼你大可以看看下面這個兩部書中的相關章節,如果你感覺作者所列之內容皆瞭然於心,那倒也省卻諸多繁冗。但如若有些坑還不能填上,那麼其實也可以按圖索驥找些資料來看,好處是定位精準,所學即所需;不好的地方在於,數學知識之間的牽連深廣,可能你不會的知識點是A,當你去找關於A的資料來看時,返現其中又用到了B,所以也又不得不去找B方面的資料來看,而且這個鏈條還可能繼續延伸下去。所以各種利弊只有你冷暖自知了。


1)Chris Bishop, Pattern Recognition And Machine Learning,這本是機器學習裡面的經典之作,其中第1、2章介紹了一些在閱讀書籍時所必備的數學基礎。

2Ian Goodfellow , Yoshua Bengio , Aaron Courville,Deep Learning,本書第2、3、4章分別介紹線性代數、概率與資訊理論、數值計算。

一不小心已經寫了這麼多了,誰讓數學在AI中的分量這麼重呢。好在跟數學有關的資料我已經都推薦到了,後續文章中我們再來具體談機器學習和資料探勘方面的資料吧 :)

(未完,待續...)

參考連結:

【1】http://mp.weixin.qq.com/s?__biz=MzI0ODcxODk5OA==&mid=2247484015&idx=1&sn=c606567bb5dd5df8f67a6d0f04c00505&chksm=e99d3196deeab880220f2fb073df2d00e560ef59a17b3f315bea4b9ce28161e5fc55d43f676c#rd

VIEWER DISCRETION IS ADVISED !!!

如果你有什麼好的建議或者資料補充,也歡迎在部落格下方留言發表見解!

相關推薦

機器學習資料超強整理吐血推薦

2016年3月,谷歌的AlphaGo對弈世界頂級圍棋棋手韓國人李世石。最終,AlphaGo以五局四勝的戰績擊敗李世石,一時風光無限,同時也在網路上極大的激起了小夥伴們對人工智慧(AI)的興趣。歲末年初,

模式識別機器學習筆記專欄之貝葉斯分類決策

[toc] > 這是模式識別與機器學習筆記專欄的第一篇,我會持續更新。 在所有的生活場景中,我們無時無刻不在進行著模式識別。比如你看見迎面走來一個人,根據他的長相來辨認出他好像是你一年前某個活動小組的組長,然後你開始決策要不要和他打個招呼。或者你走進水果店,把西瓜拍了個遍來決定最後買哪一個。或者你突

機器學習 Opencv】Opencv之Bag of Word模型

      上圖是一張新圖對映到詞典時得到的直方圖,可以看出,這張圖片相對於圖2的情況而言,更接近類別1,所以通過分類器,理想的狀態時判斷為1。但是我們都知道,理想狀態出現的可能性太小,所以BOW難免會有出錯的時候,通過閱讀幾篇論文,發現BOW的識別率大概在60%-80%之間,當然了一方面是資料量巨大的問題

scikit-learn機器學習常用算法原理及編程實戰

sed 數據 super 結構化 得到 人工智 計算機程序 語音 數值 機器學習介紹 機器學習的概念 機器學習要解決的問題分類 使用機器學習解決問題的一般性步驟 什麽是機器學習 機器學習是一個計算機程序,針對某個特定的任務 ,從經驗中學習,並且越做越好。 誰掌握的數據

應用大資料機器學習技術實現車險全流程智慧化的方案 -理賠流程智慧化改造

一、簡要說明 本篇討論的是理賠環節用大資料和機器學習技術實現車險理賠流程的智慧化。理賠與承保不同,重點要放在風險控制方面(既包括外部風險控制,也包括內部風險控制),對於如何簡化理賠流程、提高理賠時效等提升客戶體驗等方面沒有必要採用承保減少人工干預的方法(PS:原因?自己想...)。 二、

應用大資料機器學習技術實現車險全流程智慧化的方案

應用大資料和機器學習技術實現車險全流程智慧化的方案(上) -承保流程智慧化改造   一、簡要說明 以技術替代人力的思路對車險全業務流程改造,即應用車險大資料和機器學習技術全部或部分替代承保理賠管理相關業務處理崗位,實現車險業務處理流程、風險識別與控制的智慧化。本篇只討論

機器學習演算法-python實現】決策樹-Decision tree1 資訊熵劃分資料

1.背景          決策書演算法是一種逼近離散數值的分類演算法,思路比較簡單,而且準確率較高。國際權威的學術組織,資料探勘國際會議ICDM (the IEEE International Con

機器學習---吳恩達---Week1機器學習概述單變量線性回歸方程分析

行數 操作 相加 vision 強化學習 machine 其余 tro ram 機器學習概述 Machine Learning: Grew out of work in AI & New capability for computers Examples:

機器學習筆記】自組織映射網絡SOM

非線性 每一個 可能 合作 空間 找到 節點 視覺 網格 什麽是自組織映射? 一個特別有趣的無監督系統是基於競爭性學習,其中輸出神經元之間競爭激活,結果是在任意時間只有一個神經元被激活。這個激活的神經元被稱為勝者神經元(winner-takes-all neuron)。這種

[python機器學習及實踐(6)]Sklearn實現主成分分析PCA

相關性 hit 變量 gray tran total 空間 mach show 1.PCA原理 主成分分析(Principal Component Analysis,PCA), 是一種統計方法。通過正交變換將一組可能存在相關性的變量轉換為一組線性不相關的變量,轉換後的這組

機器學習】使用Python的自然語言工具包NLTK對Reddit新聞標題進行情感分析

讓我們使用Reddit API獲取新聞標題並執行情感分析 在我上一篇文章中,使用Python進行K-Means聚類,我們只是抓取了一些預編譯資料,但是對於這篇文章,我想更深入地瞭解一些實時資料。 使用Reddit API,我們可以從各種新聞subreddit獲得成千上萬的

運維要失業了?機器學習可自動優化你的資料庫管理系統DBMS

作者簡介: 達娜·範·阿肯(Dana Van Aken)是卡內基·梅隆大學的計算機學博士生,導師是安德魯·帕夫洛博士。 安迪·帕夫洛(Andy Pavlo)是卡內基·梅隆大學的計算機學系資料庫學助理教授。 傑夫·戈登(Geoff Gordon)是卡內基·梅隆大學的副教授兼機器學習系教育部副主任。 本

機器學習】動手寫一個全連線神經網路:分類

我們來用python寫一個沒有正則化的分類神經網路。 傳統的分類方法有聚類,LR邏輯迴歸,傳統SVM,LSSVM等。其中LR和svm都是二分類器,可以將多個LR或者svm組合起來,做成多分類器。 多分類神經網路使用softmax+cross entropy組

機器學習演算法-K最近鄰從原理到實現Python

本來這篇文章是5月份寫的,今天修改了一下內容,就成今天發表的了,CSDN這是出BUG了還是什麼改規則了。。。 引文:決策樹和基於規則的分類器都是積極學習方法(eager learner)的例子,因為一旦訓練資料可用,他們就開始學習從輸入屬性到類標號的對映模型。

機器學習實戰》第五章:Logistic迴歸1基本概念和簡單例項

最近感覺時間越來越寶貴,越來越不夠用。不過還是抽空看了點書,然後整理到部落格來。 加快點節奏,廢話少說。 Keep calm & carry on. ----------------------------------------------------------

機器學習中的隱馬爾科夫模型HMM詳解

前導性推薦閱讀資料: 歡迎關注白馬負金羈的部落格 http://blog.csdn.net/baimafujinji,為保證公式、圖表得以正確顯示,強烈建議你從該地址上檢視原版博文。本部落格主要關注方向包括:數字影象處理、演算法設計與分析、資料結構、機器學

最詳細的maven教程全之maven中級篇

所有用Maven管理的真實的專案都應該是分模組的,每個模組都對應著一個pom.xml。它們之間通過繼承和聚合(也稱作多模組,multi-module)相互關聯。那麼,為什麼要這麼做呢?我們明明在開發一個專案,劃分模組後,匯入Eclipse變成了N個專案,這會帶來複雜度,給

Deep Learning深度學習學習筆記整理系列之

Deep Learning(深度學習)學習筆記整理系列 作者:Zouxy version 1.0  2013-04-08 宣告: 1)該Deep Learning的學習系列是整理自網上很大牛和機

機器學習】利用蟻群演算法求解旅行商TSP問題

如果喜歡這裡的內容,你能夠給我最大的幫助就是轉發,告訴你的朋友,鼓勵他們一起來學習。 If you like the content here, you can give me the greatest help is forwarding, tell you

機器學習實戰》第三章:決策樹1基本概念

有半個月沒來了。 最近一段時間...大多在忙專案組的事(其實就是改一改現有程式碼的bug,不過也挺費勁的,畢竟程式碼不是自己寫的)。另外就是自己租了幾臺美帝的vps,搭了$-$的伺服器 ,效果還不錯。自己搭的話就不用去買別人的服務了,不過租vps畢竟還是要成本的,光用來番茄