“開始”,是一個令人激動的字眼。然而萬事開頭難,當你擁有過多的選擇時,往往就會不知所措。
我們希望借助免費、便捷的在線資源,幫助你完成從小白到大牛的蛻變。這篇文章將會回答如何選擇資源、如何拓展學習以及按怎樣的順序學習等一系列問題。
我們要開始了!首先假定你還不具備以下技能:
- 精通機器學習
- 熟練掌握Python
- 熟悉其他Python相關包
使用Python的經驗或許對后面的學習有幫助,但并不是必需的。在最初的幾步多花些時間和功夫也可以彌補這些欠缺。
第1步:Python基本技能
如果我們希望用Python進行機器學習,對Python的基本理解是至關重要的。幸運的是,由于Python作為編程語言的普及和它在相關領域的廣泛應用,找到入門教程并非難事。而從何處起步取決于你對Python的掌握程度。
首先,你需要下載Python。考慮到我們會利用Python進行科學計算和機器學習,我建議安裝Anaconda。它是一個多平臺開源的Python發行版本,其包含了conda、Python等180多個科學包及其依賴項,還包括我們許多教程的交互式環境iPythonNotebook。
如果沒有編程基礎,我的建議是從下面的資料看起,然后再學習更多教程。
- Pythonthehardway
如果有其他編程語言基礎,或剛接觸Python,我會建議使用以下材料:
- GoogleDevelopersPythonCourse
- AnIntroductiontoPythonforScientificComputing(fromUCSBEngineering)
對于希望能夠快速上手的讀者,我推薦:
- LearnXinYMinutes(X=Python)
當然,如果你是一個有經驗的Python程序員,你可以跳過這一步。
第2步:機器學習基礎
人們會覺得數據科學家有許多異于常人之處。這實際上是人們對機器學習領域的印象,因為數據科學家所做的大部分工作都不同程度的涉及到機器學習算法。是否有必要為了更高效地完成機器學習模型的建立而去深入其內核?當然不是。就像生活中任何事物一樣,理論理解的程度和實際應用相關。但機器學習算法并不在本文討論范圍,通常這需要長期學術研究,亦或是鍥而不舍的自學。
好消息是,你不需要對機器學習擁有博士一般的理解程度,換句話說,并不是所有的程序員都需要接受理論的計算機科學教育才能成為的編程人員。
吳恩達老師在Coursera上的課程經常得到好評。然而,我的建議是多瀏覽學生編寫的課程筆記,并跳過Octave某些的注釋。盡管這些不是“官方”的筆記,但仍然把握了吳恩達老師課程材料的核心內容。如果你有時間和興趣的話,現在可以在Coursera上選擇吳恩達老師的機器學習課程了(網易云課堂也發布了吳老師的中文版課程)。
- 非官方的課程筆記
除了上述吳恩達老師的課程,其中還包含各種各樣的視頻講座。
- TomMitchell的機器學習講座
瀏覽到這里,你并不需要查看所有的筆記和視頻。一個更為高效的方案是,完成下面特定的練習,并輔以相關的視頻和筆記。例如,當你在練習回歸模型建立時,閱讀吳恩達老師和Mitchell的相關資料即可。
第3步:Python基礎包概覽
當我們掌握Python并對機器學習有一定概念后,我們還要了解一些機器學習常用的開源庫:
- Numpy-主要提供矩陣運算的功能。
- Pandas-提供了高效地操作大型數據集所需的工具。
- Matplotlib-一個Python的2D繪圖庫,它以各種硬拷貝格式和跨平臺的交互式環境生成出版質量級別的圖形。
- Scikit-learn-用于數據分析和數據挖掘任務的機器學習算法。
相關學習教程如下:
- ScipyLectureNotes
- 10MinutestoPandas
下面的教程中將會提到其他一些軟件包,其中包括Seaborn(一個基于Matplotlib的數據可視化庫)。前面提到的包是Python機器學習任務的核心;然而,我希望你理解它們以適應相關的包,而不會在以下教程中引用它們時引起混淆。
第4步:用Python開始機器學習
- Python√
- 機器學習基礎√
- Numpy√
- Pandas√
- Matplotlib√
時機成熟,讓我們用Python的標準機器學習庫Scikit-learn來實現機器學習算法吧!
下面的許多教程和練習將由iPythonNotebook驅動,這是一個用于執行Python的交互式環境。這些iPythonNotebook可以選擇在線查看或下載,并在本地計算機上進行交互。
- 來自斯坦福的iPython筆記本概述
我們的第一個教程,是進行Scikit的學習。我建議在進行以下步驟之前先完成所有這些工作。
scikit-learn的一般介紹,涵蓋了K-均值聚類算法:
- AnIntroductiontoscikit-learn
一個更深入、更廣泛的介紹,包括一個數據集的入門項目:
- ExampleMachineLearningNotebook
一個側重于評估scikit-learn中不同模型的介紹,涵蓋訓練/測試數據集拆分:
- ModelEvaluation
第5步:開始主題化的機器學習
在Scikit-learn的基礎上,我們可以進一步深入探索各種常見的、有用的算法。我們從K-means聚類開始,這是最著名的機器學習算法之一,是解決無監督學習問題的一種簡單且有效的方法:
- K-meansClustering
接下來,我們回到分類,并看看歷史上最受歡迎的分類方法之一:
- DecisionTreesviaTheGrimmScientist
從分類,我們看看連續的數字預測:
- LinearRegression
然后我們可以利用回歸分類問題,通過邏輯回歸:
- LogisticRegression
第6步:用Python完成機器學習進階
我們已經習慣了Scikit-learn,現在我們把注意力轉向一些更高級的話題。首先是支持向量機,一種與相關的學習算法有關的監督學習模型,可以分析數據、識別模式,用于分類和回歸分析。
- SupportVectorMachines
接下來,通過Kaggle比賽來檢驗隨機森林:
- KaggleTitanicCompetition(withRandomForests)
降維是一種減少問題考慮的變量數量的方法。主成分分析是無監督降維的一種特殊形式:
- DimensionalityReduction
在進入最后一步之前,我們回過頭看看,我們在較短的時間內完成了許多充滿意義的任務。
使用Python及其機器學習庫,我們已經介紹了一些常見和知名的機器學習算法(K-均值聚類算法、K-means聚類、支持向量機),學習了強大的技術,檢查了一些機器學習支撐任務(降維,模型驗證技術)。除了一些基本的機器學習技巧外,我們也開始為自己擴充一個有用的工具包。
在完成之前,我們將再添加一個按需使用的工具。
第7步:Python深度學習
深度學習無處不在。它建立在神經網絡研究的基礎上,可以追溯到幾十年前,但是最近幾年來的進步已經顯著提高了深度神經網絡的感知能力。如果您不熟悉深度學習,這兒有一些文章可供學習。最后一步并不意味著任何機器學習方面的權威。我們將從兩個領先的Python深度學習庫學習簡單網絡的實現。對于那些有興趣深入深度學習的人,我建議從下面的教程開始:
- NeuralNetworksandDeepLearning
Theano
Theano是我們將要看到的第一個Python深度學習庫。以下的Theano深度學習教程是冗長的,但它非常的經典、具體,被各方高度評價:
- TheanoDeepLearningTutorial
Caffe
Caffe是我們學習的另一種庫。這篇教程是整個文章最璀璨的明珠,盡管我們已經實現了一些有趣的案例,但仍沒有一個可以與用Caffe實現谷歌的DeepDream相匹敵。好好享受吧!掌握教程內容后,就可以讓你的處理器擁有屬于你的思維了!
- DreamingDeepwithCaffeviaGoogle'sGitHub
我并不能保證上述這些會很快或很容易實現,但如果你花精力按照上面的7個步驟,相信你可以理解機器學習算法并熟練使用Python完成這一工作,興許還能參與最前沿的深度學習研究中。