机器学习数学提要
挺不錯的博客鏈接:
●《高數上下冊》
●《概率論與數理統計浙大版》
●《數理統計學簡史》陳希孺
●《矩陣分析與應用》張賢達
●《凸優化 (Convex Optimization)》-Stphen Boyd&Lieven Vandenberghe
●《統計學習方法》李航
●《PRML》
1、機器學習中的數學基礎
- Taylor展式的應用
- 常見概率分布與共軛分布
- 最大似然估計
- 中心極限定理及其應用
- 大數定理及其應用
- Lagrange凸優化
2、Python及其數學/機器學習庫的使用
- 機器學習算法類別
- 機器學習應用的一般流程
- 解釋器Python2.7與IDE:Anaconda/Pycharm
- numpy/scipy/matplotlib/panda庫的介紹和典型使用
- 舉例:SVD用于圖像處理
3、回歸
- 線性回歸
- 高斯分布
- Logistic回歸
- 最大似然估計
- 梯度下降算法:BGD與SGD
- 特征選擇與過擬合
4、回歸實踐
- 機器學習sklearn庫介紹
- Ridge回歸、LASSO
- Logistic/Softmax回歸
- 回歸代碼實現和調參
- 數據可視化
5、決策樹和隨機森林
- 熵、聯合熵、條件熵、KL散度、互信息
- 最大似然估計與最大熵模型
- ID3、C4.5、CART詳解
- 決策樹的評價
- 預剪枝和后剪枝
- Bagging
- 隨機森林
6、隨機森林實踐
- 手寫隨機森林實踐
- 調用開源庫函數完成隨機森林
- 數據結構的綜合使用
- gini系數
7、提升
- 提升為什么有效
- Adaboost算法
- 加法模型與指數損失
- 梯度提升決策樹GBDT
8、xgboost
- 自己動手實現GBDT
- xgboost庫介紹
- Taylor展式與學習算法
- xgboost應用于實踐
9、SVM
- 線性可分支持向量機
- 軟間隔的改進
- 損失函數的理解
- 核函數的原理和選擇
- SMO算法
10、SVM實踐
- libSVM代碼庫介紹
- 原始數據和特征提取
- 手寫隨機森林實踐
- 調用開源庫函數完成SVM
- SVM、Logistic回歸、隨機森林三者的橫向比較
11、聚類
- 各種相似度度量及其相互關系
- K-means與K-Medoids及變種
- AP算法/LPA算法及其應用
- 密度聚類DBSCAN/DCluster(Science2014)
- 譜聚類SC
- 聚類評價和結果指標
12、聚類實踐
- 動手自己實現K-means
- K-Means++算法原理和實現
- 并查集的實踐應用
- 密度聚類的代碼實現
- 使用開源機器學習包完成聚類
13、EM算法
- 最大似然估計
- Jensen不等式
- 樸素理解EM算法
- 精確推導EM算法
- EM算法的深入理解
- 混合高斯分布
14、EM算法實踐
- 多元高斯分布的EM實現
- 分類結果的數據可視化
- EM與聚類的比較
- 主題模型pLSA與EM算法
15、主題模型LDA
- 貝葉斯學派的模型認識
- 共軛先驗分布
- Dirichlet分布
- Laplace平滑
- Gibbs采樣詳解
16、LDA實踐
- 停止詞和高頻詞
- 動手自己實現LDA
- LDA開源包的使用和過程分析
- Metropolis-Hastings算法
- MCMC
- LDA與word2vec的比較
17、隱馬爾科夫模型HMM
- 概率計算問題
- 前向/后向算法
- HMM的參數學習
- Baum-Welch算法詳解
- Viterbi算法詳解
18、HMM實踐
- 動手自己實現HMM用于中文分詞
- 多個語言分詞開源包的使用和過程分析
- 文件數據格式UFT-8、Unicode
- 停止詞和標點符號對分詞的影響
- 前向后向算法計算概率溢出的解決方案
- EM算法和MLE的優劣比較
- 發現新詞和分詞效果分析
附贈:機器學習用于股票預測(綜合)
你可以從一個由你熟悉的語言編寫的庫開始學習,然后再去學習其他功能強大的庫。如果你是一個優秀的程序員,你會知道怎樣從一種語言,簡單合理地遷移到另一種語言。語言的邏輯都是相同的,只是語法和API稍有不同。
?R Project for Statistical Computing:這是一個開發環境,采用一種近似于Lisp的腳本語言。在這個庫中,所有你想要的與統計相關的功能都通過R語言提供,包括一些復雜的圖標。CRAN(你可以認為是機器學弟的第三方包)中的機器學習目錄下的代碼,是由統計技術方法和其他相關領域中的領軍人物編寫的。如果你想做實驗,或是快速拓展知識,R語言都是必須學習的。但它可能不是你學習的第一站。
?WEKA:這是一個數據挖掘工作平臺,為用戶提供數一系列據挖掘全過程的API、命令行和圖形化用戶接口。你可以準備數據、可視化、建立分類、進行回歸分析、建立聚類模型,同時可以通過第三方插件執行其他算法。除了WEKA之外, Mahout是Hadoop中為機器學習提供的一個很好的JAVA框架,你可以自行學習。如果你是機器學習和大數據學習的新手,那么堅持學習WEKA,并且全心全意地學習一個庫。
?Scikit Learn:這是用Python編寫的,基于NumPy和SciPy的機器學習庫。如果你是一個Python或者Ruby語言程序員,這是適合你用的。這個庫很用戶接口友好,功能強大,并且配有詳細的文檔說明。如果你想試試別的庫,你可以選擇Orange。
?Octave:如果你很熟悉MatLab,或者你是尋求改變的NumPy程序員,你可以考慮 Octave。這是一個數值計算環境,與MatLab像是,借助Octave你可以很方便地解決線性和非線性問題,比如機器學習算法底層涉及的問題。如果你有工程背景,那么你可以由此入手。
?BigML:可能你并不想進行編程工作。你完全可以不通過代碼,來使用 WEKA那樣的工具。你通過使用BigMLS的服務來進行更加深入的工作。BigML通過Web頁面,提供了機器學習的接口,因此你可以通過瀏覽器來建立模型。
挑選出一個平臺,并且在你實際學習機器學習的時候使用它。不要紙上談兵,要去實踐!
Video Courses視頻課程
很多人都是通過視頻資源開始接觸機器學習的。我在YouTube和VideoLectures上看了很多于機器學習相關的視頻資源。這樣做的問題是,你可能只是觀看視頻而并不實際去做。我的建議是,你在觀看視頻的時候,應該多記筆記,及時后來你會拋棄你的筆記。同時,我建議你將學到的東西付諸實踐。
坦白講,我沒有看見特別合適初學者的視頻資源。視頻資源都需要你掌握一定的線性代數、概率論等知識。Andrew Ng在斯坦福的講解可能是最適合初學者的,下面是我推薦的一些視頻資源。
?Stanford Machine Learning斯坦福的機器學習課程:可以在Coursera上觀看,這門課是由 Andrew Ng講解的。只要注冊,你可以隨時觀看所有的課程視頻,從Stanford CS229 course下載講義和筆記。這門課包括了家庭作業和小測試,課程主要講解了線性代數的知識,使用Octave庫。
?Caltech Learning from Data加利福尼亞理工學院的數據分析課程:你可以在edX上學習這門課程,課程是由Yaser Abu-Mostafa講解的。所有的課程視頻和資料都在加利福尼亞理工學院的網站上。與斯坦福的課程類似,你可以根據自己的情況安排學習進度,完成家庭作業和小論文。它與斯坦福的課程主題相似,關注更多的細節和數學知識。對于初學者來說,家庭作業可能稍有難度。
?Machine Learning Category on VideoLectures.Net網站中的機器學習目錄:這是個很容易令人眼花繚亂的資源庫。你可以找出比較感興趣的資源,并且深入學習。不要糾結于不適合你的視頻,或者對于感興趣的內容你可以做筆記。我自己會一直重復深入學習一些問題,同時發現新的話題進行學習。此外,在這個網站上你可以發現是這個領域的大師是什么樣的。
?“Getting In Shape For The Sport Of Data Science” – 由Jeremy Howard講授:這是與機器學習競賽者的對話,他們是一些實踐中的R語言用戶。這是非常珍貴的資源,因為很少有人會討論研究一個問題的完整過程和究竟怎樣做。我曾經幻想過在網上找到一個TV秀,記錄機器學習競賽的全過程。這就是我開始學習機器學習的經歷!
Overview Papers綜述論文
如果你并不習慣閱讀科研論文,你會發現論文的語言非常晦澀難懂。一篇論文就像是一本教科書的片段,但是論文會介紹一個實驗或者是領域中其他的前沿知識。然而,如果你準備從閱讀論文開始學習機器學習的話,你還是可以找到一些很有意思的文章的。
?The Discipline of Machine Learning機器學習中的規則:這是由Tom Mitchell編著的白皮書,其中定義了機器學習的規則。Mitchell在說服CMU總裁為一個百年內都存在的問題建立一個獨立的機器學習部門時,也用到了這本書中的觀點。
?A Few Useful Things to Know about Machine Learning:這是一篇很好的論文,因為它以詳細的算法為基礎,又提出了一些很重要的問題,比如:選擇特征的一般化,模型簡化等。
我只是列出了兩篇重要的論文,因為閱讀論文會讓你陷入困境。
Beginner Machine Learning Books給機器學習初學者的書
關于機器學習的書有很多,但是幾乎沒有為初學者量身定做的。什么樣的人才是初學者呢?最有可能的情況是,你從另外一個完全不同的領域比如:計算機科學、程序設計或者是統計學,來到機器學習領域。那么,大部分的書籍要求你有一定的線性代數和概率論的基礎。
但是,還有一些書通過講解最少的算法來鼓勵程序員學習機器學習,書中會介紹一些可以使用工具、編程函數庫來讓程序員嘗試。其中最有代表性的書是:《Programming Collective Intelligence》,《Machine Learning for Hackers》,《Hackersand Data Mining: Practical Machine Learning Tools and Techniques》(Python版, R版, 以及Java版)。如果感到迷惑的話,你可以選擇其中一本開始學習。
?Programming Collective Intelligence: Building Smart Web 2.0 Applications:這本書是為程序員寫的。書中簡略介紹相關理論,重點以程序為例,介紹web中的實際問題和解決辦法。你可以買來這本書,閱讀,并且做一些練習。
?Machine Learning for Hackers (中文版:機器學習:實用案例解析 ):我建議你在閱讀了《Programming Collective Intelligence》一書之后,再閱讀這本書。這本書中也提供了很多實踐練習,但是涉及更多的數據分析,并且使用R語言。我個人很喜歡這本書!
?Machine Learning: An Algorithmic Perspective:這本書是《Programming Collective Intelligence》的高級版本。它們目的相同(讓程序員開始了解機器學習),但是這本書包括一些數學知識,參考樣例和phython程序片段。如果你有興趣的話,我建議你在看完《Programming Collective Intelligence》之后來閱讀這本書。
?數據挖掘:實用機器學習工具與技術(英文版·第3版) :我自己是從這本書開始了解機器學習的,那時是2000年這本書還是第一版。我那時是Java程序員,這本書和WEKA庫為我的學習和實踐提供了一個很好的環境。我通過這樣的平臺和一些插件,實現我的算法,并且真正開始實踐機器學習和數據挖掘的過程。我強烈推薦這本書,和這樣的學習過程。
?Machine Learning(中文版:計算機科學叢書:機器學習 ):這是一本很老的書,包括了一些規則和很多參考資料。這是一本教科書,為每個算法提供了相關講解。
有一些人認為那些經典的機器學習教科書很了不起。 我也贊同,那些書的確非常好。但是,我認為,對于初學者來說,這些書可能并不合適。
Further Reading 繼續閱讀
在寫這篇文章時,我認真思考了相關問題,同時也參考了其他人推薦的資料,以確保我沒有遺漏任何重要參考資料。為了確保文章的完整性,下面也列出了一些網上流行的,可以供初學者使用的材料。.
?A List of Data Science and Machine Learning Resources:這是一份仔細整理的列表。你可以花一些時間,點擊鏈接,仔細閱讀作者的建議。值得一讀!
?What are some good resources for learning about machine learning Why:這個問題的第一個答案令人吃驚。每次我閱讀這篇文章的時候,都會做好筆記,并且插入新的書簽。答案中對我最有啟發的部分是機器學習課程列表,以及相應的課程筆記和問答網站。
?Overwhelmed by Machine Learning: is there an ML101 book:這是StackOverflow上的問題。并且提供了一系列機器學習推薦書籍。Jeff Moser提供的第一個答案是很有用的,其中有課程視頻和講座的鏈接。
總結
- 上一篇: 张志华 机器学习 两门课程正确顺序及视频
- 下一篇: 广义逆高斯分布及推广(To be con