Python還是R語言?怎樣學(xué)數(shù)學(xué)?機(jī)器學(xué)習(xí)的征程從這里開始……
本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)
機(jī)器學(xué)習(xí)是近幾年來最熱門的技術(shù)之一,也許你對機(jī)器學(xué)習(xí)很感興趣,但卻不知從何處下手。別擔(dān)心,興趣是最好的老師這里有你開啟該領(lǐng)域職業(yè)生涯的完整學(xué)習(xí)路徑。
筆者也曾面臨同樣的困惑:怎樣才是好的開始?應(yīng)該學(xué)習(xí)Python還是選擇R語言?數(shù)學(xué)總是很可怕,筆者總是擔(dān)心自己應(yīng)該從何處開始學(xué)數(shù)學(xué),還擔(dān)心如何為機(jī)器學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。
不管怎樣,祝賀你,至少你已經(jīng)下定決心了。本文將帶你做好開啟機(jī)器學(xué)習(xí)生涯之前的所有準(zhǔn)備工作。
機(jī)器學(xué)習(xí)第一步(基礎(chǔ)編程)
第一步應(yīng)該是學(xué)習(xí)編程,最好是Python。如果你一行代碼都沒編寫過,那么推薦你學(xué)習(xí)哈佛大學(xué)的CS50。這是編程初學(xué)者的最佳課程,它將從頭開始教你C語言的所有內(nèi)容、Python的許多要點(diǎn)、JavaScript以及SQL和JSON的基礎(chǔ)知識。而且它在edx.org上是免費(fèi)的。
如果想直接從Python開始,那么edx上免費(fèi)的“MIT計(jì)算機(jī)科學(xué)入門Python課”很適合你。需要注意的是,至少你得掌握高中代數(shù)。
如果覺得自己的計(jì)算邏輯不好,而且不善于解決編程問題,微軟的課程很不錯,這門課程與edx上的“計(jì)算思維”有關(guān),都是免費(fèi)的。它能教你很多計(jì)算邏輯和批判性思維方面的內(nèi)容。
如果已經(jīng)掌握了足夠的編程基礎(chǔ)知識,但是還不了解面向?qū)ο蟪绦蛟O(shè)計(jì)方面的知識,建議學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計(jì)編程。雖然它在機(jī)器學(xué)習(xí)(基本水平)中沒有被大量使用,但確實(shí)有很大的幫助。它會教授python中OOP和算法的基本知識。
下一步是熟悉數(shù)據(jù)結(jié)構(gòu)和算法。一個(gè)好的程序員必須知道一些基本的算法,如鏈表、二叉樹等。微軟的課程將教授:
- 算法分析
 - 分類和搜索算法
 - 數(shù)據(jù)結(jié)構(gòu):鏈表、堆棧、隊(duì)列
 
如果想深入研究數(shù)據(jù)結(jié)構(gòu)和算法,加州大學(xué)圣地亞哥分校的專題絕對是經(jīng)典。它有6門課程,將帶領(lǐng)學(xué)習(xí)者在數(shù)據(jù)結(jié)構(gòu)和算法方面從0級達(dá)到英雄級??梢渣c(diǎn)擊每門課程并免費(fèi)旁聽它的材料,但如果想獲得證書,價(jià)格是50美元/月,這取決于完成的速度。你可以在Coursera.org找到這個(gè)專題。
機(jī)器學(xué)習(xí)第二步
對大多數(shù)初學(xué)者來說,數(shù)學(xué)是最“勸退”的部分。
事實(shí)上,數(shù)學(xué)并不像想象的那么難,如果認(rèn)為自己有很好的高中數(shù)學(xué)基礎(chǔ)(向量、矩陣、微積分、概率和統(tǒng)計(jì)),可以只參加一個(gè)復(fù)習(xí)課程;但如果認(rèn)為自己的數(shù)學(xué)不夠好,那么學(xué)數(shù)學(xué)最好的地方就是“可汗學(xué)院”,這里內(nèi)容豐富有用,而且都是免費(fèi)的,可以找到所有有關(guān)線性代數(shù)、概率和統(tǒng)計(jì)以及多變量微積分課程。
另一個(gè)優(yōu)質(zhì)的課程是Coursera上倫敦帝國理工學(xué)院的機(jī)器學(xué)習(xí)數(shù)學(xué)專題,教授基本知識和復(fù)習(xí)概念,但不會深入探討,練習(xí)和測驗(yàn)很有挑戰(zhàn)性。它有以下3門課程:
- 機(jī)器學(xué)習(xí)數(shù)學(xué):線性代數(shù)
 - 機(jī)器學(xué)習(xí)數(shù)學(xué):多元微積分
 - 機(jī)器學(xué)習(xí)數(shù)學(xué):主成分分析
 
MIT也有一門很好的統(tǒng)計(jì)學(xué)課程,它的內(nèi)容包括:
- 使用矩和最大似然法構(gòu)造估算器,決定如何在兩者間進(jìn)行選擇
 - 使用置信區(qū)間和假設(shè)檢驗(yàn)量化不確定性
 - 使用擬合優(yōu)度測試在不同模型之間進(jìn)行選擇
 - 使用線性、非線性和廣義線性模型進(jìn)行預(yù)測
 - 使用主成分分析(PCA)進(jìn)行降維
 
如果想在編寫代碼的同時(shí)學(xué)習(xí)數(shù)學(xué),去學(xué)習(xí)微軟的課程“機(jī)器學(xué)習(xí)基本數(shù)學(xué):Python版本”。這是一門交互式課程,它使用Python著名的數(shù)據(jù)處理庫Numpy、pandas和matplotlib來形象化地進(jìn)行數(shù)學(xué)教學(xué),這些庫是本課程的前提條件。
Udacity上有3門免費(fèi)的統(tǒng)計(jì)學(xué)課程:
- 統(tǒng)計(jì)簡介
 - 統(tǒng)計(jì)學(xué)
 - 推理統(tǒng)計(jì)簡介
 
也可以在學(xué)習(xí)實(shí)用機(jī)器學(xué)習(xí)的同時(shí)學(xué)習(xí)數(shù)學(xué),當(dāng)遇到不熟悉的內(nèi)容時(shí),只需搜索可汗學(xué)院,YouTube上也有數(shù)百個(gè)關(guān)于這個(gè)話題的優(yōu)質(zhì)視頻。
機(jī)器學(xué)習(xí)第三步
熟悉了線性代數(shù)、多變量微積分和統(tǒng)計(jì)學(xué)之后,接下來需要學(xué)習(xí)的是Python著名的可視化數(shù)據(jù)處理庫,包括Numpy、Pandas、Matplotlib和Scipy,它們有助于分析和操作任何類型的數(shù)據(jù),并以圖表方式查看數(shù)據(jù)。
當(dāng)然,還有很多其他可視化數(shù)據(jù)處理庫,但這些是最重要的,可以將線性代數(shù)和微積分的概念以圖表方式可視化。
這方面的代表之一是密歇根大學(xué)的Python統(tǒng)計(jì)學(xué)專題,教授了數(shù)據(jù)可視化和操作細(xì)節(jié)。當(dāng)然,可在coursera.org上免費(fèi)獲取。
另一門課程是密歇根大學(xué)為數(shù)據(jù)分析初學(xué)者開設(shè)的“Python的數(shù)據(jù)科學(xué)導(dǎo)論”,它包括從numpy的基礎(chǔ)知識到pandas的內(nèi)容。同樣也coursera.org上免費(fèi)提供。本課程的下一部分是改變方式,在Python中命名Applied Plotting、Charting和Data Representation,會交給你所有的圖形可視化及其技巧技術(shù)。
哈佛大學(xué)的《使用Python進(jìn)行研究》會通過一些著名的案例研究來教授這些庫,其最后一課無比振奮人心,會講解很多新內(nèi)容。
加州大學(xué)圣地亞哥分校的“使用Python進(jìn)行數(shù)據(jù)科學(xué)項(xiàng)目”內(nèi)容非常全面,該課程教授:
- Python
 - Jupyternotebooks
 - pandas
 - NumPy
 - Matplotlib
 - git
 - sci kit-learn
 - NLTK
 
雖然該課程也會講解機(jī)器學(xué)習(xí)的基礎(chǔ)知識,但更重要的是,它教授數(shù)據(jù)科學(xué)庫。所有的這些課程都會在edx.org上免費(fèi)提供。
第四步 實(shí)用機(jī)器學(xué)習(xí)
所以現(xiàn)在要進(jìn)入最令人興奮的部分——機(jī)器學(xué)習(xí)。
第一個(gè)課程意義重大。如果其不夠引人入勝,學(xué)習(xí)者可能會半途而廢。所以這里的所有課程都是高質(zhì)量的,在開始第一門機(jī)器學(xué)習(xí)課程之前,我們要對它做一些研究。
入門課程不會教授機(jī)器學(xué)習(xí),而是讓學(xué)員了解一些基本概念。這門課程將概述什么是機(jī)器學(xué)習(xí),它是如何工作的,它的工作流程是什么,以及如何在公司建立人工智能。課程還提供了關(guān)于人工智能的完整介紹和概述。該課程由著名的機(jī)器學(xué)習(xí)講師吳恩達(dá)教授,可在coursera.org上免費(fèi)獲得。
接下來到了正式內(nèi)容。無論是搜索谷歌還是瀏覽任何博客,都可以看到,首推課程是斯坦福大學(xué)吳恩達(dá)教授的“機(jī)器學(xué)習(xí)”。注冊了這門課程的學(xué)生超250萬,20萬多名學(xué)生對其進(jìn)行了評分(4.9*)。它從非?;镜母拍钪v授到高級的概念,對初學(xué)者來說是一門非常全面的課程。這門課的總學(xué)時(shí)超過56小時(shí)。以下為課程目錄:
- 線性回歸
 - 多項(xiàng)式回歸
 - 邏輯回歸
 - 多類分類
 - 神經(jīng)網(wǎng)絡(luò)
 - 支持向量機(jī)
 - K-均值聚類
 - 主成分分析
 - 異常檢測
 - 推薦系統(tǒng)
 
唯一的問題是,它是用octave/Matlab來教的。對筆者而言這不是大問題,因?yàn)樗€會用各種其他語言來清晰闡明機(jī)器學(xué)習(xí)的所有基礎(chǔ)和深層概念,沒有任何問題,另外,Matlab也是一項(xiàng)額外的技能。這個(gè)課程在斯坦福大學(xué)官方網(wǎng)站和coursera.org都可以找到。
無需多言,這門課對每個(gè)人來說都是必修課。
學(xué)習(xí)完這門課,現(xiàn)在需要用Python來實(shí)操所有學(xué)到的東西,并通過學(xué)習(xí)來提高專業(yè)化程度。所以,Coursera上由吳恩達(dá)、Kian Katanfrosh和 Younes Bensouda教授的deeplearning.ai也是必修課。這個(gè)專題有五門課程:
- 神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)
 - 改進(jìn)深層神經(jīng)網(wǎng)絡(luò):超參數(shù)調(diào)整、正則化和優(yōu)化
 - 構(gòu)建機(jī)器學(xué)習(xí)項(xiàng)目
 - 卷積神經(jīng)網(wǎng)絡(luò)
 - 序列模型
 
你從中可獲得的主要技能是:
- TensorFlow
 - 卷積神經(jīng)網(wǎng)絡(luò)
 - 人工神經(jīng)網(wǎng)絡(luò)
 - 深度學(xué)習(xí)
 
有人可能不喜歡TensorFlow,或者只是想測試TensorFlow的著名競爭者Pythorch(Facebook),那你可以選擇學(xué)習(xí)Udacity上的課程。它由臉書與亞馬遜網(wǎng)絡(luò)服務(wù)合作提供,并且還有部分內(nèi)容來自價(jià)值1400美元的Udacity著名的深度學(xué)習(xí)“納米學(xué)位”課程。
當(dāng)然,這只是一個(gè)開始,還有很多東西需要學(xué)習(xí)和發(fā)現(xiàn),但如果開始學(xué)習(xí)了,希望學(xué)習(xí)者知道自己的立場和下一步計(jì)劃。
一些建議
現(xiàn)在開始收聽OC Devel的“機(jī)器學(xué)習(xí)指南”播客。這將提供一個(gè)完整的機(jī)器學(xué)習(xí)概述,包括機(jī)器學(xué)習(xí)的具體知識以及一個(gè)android和web應(yīng)用程序開發(fā)人員轉(zhuǎn)向機(jī)器學(xué)習(xí)道路的旅程。
在Kaggle上多練習(xí)(一旦開始機(jī)器學(xué)習(xí),就會明白這一點(diǎn))。
獲取《使用Scikit Learn和TensorFlow進(jìn)行機(jī)器學(xué)習(xí):構(gòu)建智能系統(tǒng)的概念、工具和技術(shù)》或是2019年10月發(fā)布的新版本。這本書的作者是 AurélienGéron。這本書內(nèi)容廣泛,值得推薦。
最關(guān)鍵的是要保持信心,一氣呵成就好,祝你在如何使機(jī)器更智能的學(xué)習(xí)之路上一路愉快。
















 
 
 





 
 
 
 