閱讀232 返回首頁    go 阿裏雲 go 技術社區[雲棲]


機器學習的入門“秘籍”

更多深度文章,請關注:https://yq.aliyun.com/cloud


由於人工智能的發展,機器學習越來越受到大家的追捧。很多新的計算機科學家和工程師開始跨入機器學習這個美好的世界。不幸的是,理論,算法,應用,論文,書籍,視頻等的數量是如此之大,以至於無法清楚地了解到底那些才是他們想要/需要學習提高他/她的技能的知識。

在這篇文章中,我想分享一下我的經驗,提出一條可行的途徑,快速學習基本概念,並準備好深入討論最複雜的話題。當然這隻是個人建議:每個朋友都可以根據自己的經驗,選擇更多地關注一些更有趣的話題。畢竟適合自己才是最好的路!

先決條件(基礎)

機器學習是非常依賴數學的一門科學。這不是一個可以選擇的選項,而是必選項,因為沒有數學就沒有機器學習,數學是一個不可拋棄的根本支柱。如果您是計算機工程師,每天使用UMLORM,設計模式和許多其他軟件工程工具/技術,請閉上眼睛,忘記幾乎所有內容。這並不意味著所有的這些概念都不重要。但機器學習需要一種不同的方法。Python在這個領域越來越受歡迎的原因之一就是它的原型設計速度。在機器學習中,一種允許您使用幾行代碼(無類,接口和所有其他OO基礎架構)對算法進行建模的語言是絕對要掌握的。無疑,Python是最佳的選擇,如果你有很深厚的Python基礎,那麼這將成為你的優勢。

微積分,概率理論和線性代數是幾乎任何算法所必需的數學技能。如果你已經有了很好的數學背景,你可以跳過這個部分,選擇刷新一些重要的概念是一個不錯的主意。考慮到數學理論,我不鼓勵從頭開始進行通透性學習。在完成特定的任務時也可以突擊式的學習它們,數學的使用要由淺入深,一開始就注重簡單的任務。

另外機器學習,有很多好的在線資源(如CourseraKhan AcademyUdacity)。學習過程中盡量采用適合自己學曆背景的務實方法。我的建議是使用一個簡短的綱要,其中最重要的概念需要一一自己親自搞明白,並且在需要的時候通過搜索和研究繼續深入的學下去。這不是一個非常係統的方法,但替代方案有一個顯著的缺點:大量的數學概念可以阻止和迷失所有沒有深厚學術背景的人。

一個入門的武林秘籍

概率論:

1.離散和連續的隨機變量(Discrete and continuous random variables

2.重要的分布(伯努利,分類,二項式,正態,指數,泊鬆,貝塔,伽馬)

3.貝葉斯統計(Bayes statistics

4.相關和協方差(correlation and covariance

線性代數:

1.向量和矩陣(Vectors and matrics

2.矩陣的決定因素(determinant of a matrix

3.特征向量和特征值(eigenvectors and eigenvalues

4.矩陣分解(像SVD)(Matrix factorization

微積分:

1.函數

2.積分

網上有很多免費資源,如:

維基百科也是一個非常好的資源,許多公式,理論和定理都以清晰易懂的方式解釋。

機器學習必備技能:

1.特征工程:

進入機器學習的第一步是了解如何測量和提高數據集的質量。管理分類和缺失的特征、歸一化和維數降低(PCAICANMF)是可以顯著提高任何算法性能的基本技術。研究如何將數據集分為訓練集和測試集以及如何采用交叉驗證,而不是經典測試方法。如果想清楚的了解什麼是特征工程,點擊

2.NumpyPython的數學之王!

使用Python時,Numpy不僅僅是一個庫。它是幾乎任何機器學習實現的基礎,絕對有必要了解它的工作原理,重點要關注矢量化和廣播機製的概念、利用多線程和SIMDMIMD架構的優勢。通過掌握這些原理概念,可以加快大多數算法的學習過程。官方文件完整,但我也建議這些資源:

3.數據可視化

雖然它不是純粹的機器學習主題,重要的是要知道如何可視化數據集。Matplotlib可能是最佳的解決方案,它易於使用,並允許繪製不同類型的圖表。BokehSeaborne提供了非常有趣的選擇。沒有必要對所有軟件包有全麵的了解,但是了解每個軟件包的優點/弱點是有用的,因此能夠在需要時選擇正確的軟件包。

學習Matplotlib的一個很好的資源是:

4.線性回歸:

線性回歸是最簡單的模型之一,可以考慮將其作為解決優化問題的首選,它可以解決最小化均方誤差的優化問題。我建議將其研究為貝葉斯問題,其中使用先驗概率表示參數(例如,高斯分布),優化成為MLE(最大似然估計)。即使它似乎更複雜,這種方法提供了一個新的思路,可以和許多其他更複雜的模型共享。

有關貝爾斯統計的非常有用的介紹可在Coursera上獲得:

我建議你選擇這些書:

5.線性分類:

邏輯回歸通常是最好的起點。這也是學習一些信息理論的好機會,了解熵、交叉熵和互信息等概念。分類交叉熵是深度學習分類中最穩定的成本函數,簡單的邏輯回歸可以展示如何加快學習過程(與均方誤差相比)。另一個重要的話題是正則化(RidgeLassoElasticNet)。有很多次,它被認為是提高模型準確性的深奧方式,但它的真實含義更加精確,應該通過一些具體的例子予以理解。我建議初學者可以以邏輯回歸作為一個簡單的神經網絡搭建的開始,可視化(對於2D示例)如何權重向量在學習過程中移動。

超參數網格搜索方法是一個不錯的方法。Grid Search可以評估不同超參數集的性能,而不是完全意識到不同的值。因此,工程師可以將注意力集中在產生最高精度的組合上。

6.支持向量機(SVM):

支持向量機提供了不同的分類方法(線性和非線性)。該算法非常簡單,學生隻需要具有基礎的幾何知識就可以學習。然而,了解kernel-SVM的工作原理是非常有用,因為它們可以幫助你避免在線性方法的任務中頻繁出現失敗。

一些有用的免費資源:

7.決策樹:

決策樹提供了另一種分類和回歸方法。一般來說,它們不是非常複雜問題的首選,但它們提供了完全不同的方法,即使是非技術人員也可以很容易地理解,並且可以在會議或官方演示中進行可視化。

8.快速瀏覽集成學習(Ensemble learning):

在了解了決策樹之後,研究如何組合樹來提高整體準確度的方法是有用的。隨機森林,梯度提升回歸樹和AdaBoost是複雜性比較低的強大算法。Scikit-Learn提供了最常見的實現,但是如果您想要充分利用這些算法,我建議你花一些時間研究XGBoost,這是一個分布式框架,可以與CPUGPU一起工作,加快訓練過程,即使是非常龐大的數據集。

9.聚類:

研究聚類方法,依我的意見,最好的做法是研究高斯混合算法(基於EM期望最大化)。即使K-Means也比較簡單(但必須進行研究),高斯混合提供了一種純貝葉斯方法,這對許多其他類似的任務很有用。其他必須研究的聚類算法還包括分層聚類光譜聚類DBSCAN。了解基於實例的學習的思想也很有用,例如研究了k-Nearest Neighbors算法,可以用於監督學習和無監督學習任務。

光譜聚類的免費資源是:

10.神經網絡:

神經網絡是深度學習的基礎,應該花單獨的時間進行研究。但是,我認為了解PerceptronMulti-Layer PerceptronBackpropagation算法的概念對神經網絡的學習是很有用的。Scikit-learn提供了一個非常簡單的神經網絡,但是,它是一個好的開始,接著就是了解Keras,這是基於高層次的框架TensorflowTheanoCNTK的深度學習包,允許模擬和訓練神經網絡。

一些好的神經網絡資源:

市場上最好的深度學習書可能是:

  • Goodfellow I.Bengio Y.Courville A.Deep LearningThe MIT Press

希望本文能夠幫助到那些打算進入機器學習領域的朋友們!

本文由北郵@愛可可-愛生活老師推薦,@阿裏雲雲棲社區組織翻譯。

文章原標題《An annotated path to start with Machine Learning

作者:bonaccprso  人工智能軟件工程師,數據科學家,技術傳播與顧問。

博客:https://www.bonaccorso.eu

譯者:袁虎 審閱:主題曲哥哥

文章為簡譯,更為詳細的內容,請查看原文

最後更新:2017-09-12 16:02:31

  上一篇:go  揭秘混合雲網絡架構:9月21日獨家直播,阿裏雲大咖為你詳解!
  下一篇:go  專訪阿裏雲異構計算負責人:異構計算的未來,GPU、FPGA、ASIC芯片三分天下