【機(jī)器學(xué)習(xí)】扎實(shí)入門機(jī)器學(xué)習(xí)的路子
今天是一點(diǎn)經(jīng)驗(yàn)分享,包大人當(dāng)初用這個(gè)路子入門機(jī)器學(xué)習(xí)的。
前言
回顧了下我當(dāng)初入門機(jī)器學(xué)習(xí)方式,發(fā)現(xiàn)還是有些特點(diǎn)的。因?yàn)槭强瓢喑錾恚允悄欠N穩(wěn)扎穩(wěn)打,自頂向下,理論結(jié)合實(shí)踐的方式,比較注重用代碼實(shí)現(xiàn)去理解原理。代碼有個(gè)好處就是不會(huì)騙人,光看理論有種我明白了,但是很模糊,如果結(jié)合代碼就非常清晰了。用兩個(gè)字說(shuō)就是“扎實(shí)”。
主要分為原理入門,編程理解,實(shí)戰(zhàn)應(yīng)用,三個(gè)步驟。其中非常強(qiáng)調(diào)過(guò)程中的正反饋,和優(yōu)質(zhì)的資源。正反饋是長(zhǎng)久堅(jiān)持的動(dòng)力來(lái)源。優(yōu)質(zhì)資料是高效正確的保證。
比較反對(duì)下面這樣囫圇吞棗,良莠不齊,就想著21天從入門到精通的方式。
第一、反對(duì)上來(lái)就給你推薦python,sklearn,pandas之類的。這些東西往往把細(xì)節(jié)都藏起來(lái)了,容易變成調(diào)包俠。
第二、?不推薦任何國(guó)內(nèi)的非知名大學(xué)的視頻教程。大部分的東西不是抄就是質(zhì)量太差,有吳恩達(dá)的公開課不看去買網(wǎng)課,留著錢買個(gè)大雞腿吃不好嗎。
第三、不推薦任何上來(lái)就是各種花里胡哨從開發(fā)到部署的實(shí)戰(zhàn)項(xiàng)目,抓住人就想心急吃熱豆腐的心理貪圖你的錢包。
第一階段:原理入門
目標(biāo)是搞清楚機(jī)器學(xué)習(xí)的基本概念和基本的算法原理。這個(gè)階段的正反饋來(lái)自于新知識(shí)的獲取,原理的理解。不要好高騖遠(yuǎn)。下面介紹幾種入門方法,分別對(duì)應(yīng)看書入門黨,看視頻入門黨,有一些精選的優(yōu)質(zhì)資源推薦給初學(xué)者。推薦的資源,周志華《機(jī)器學(xué)習(xí)》,李航《統(tǒng)計(jì)學(xué)習(xí)方法》 Peter Harrington 《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》吳恩達(dá) Coursra 機(jī)器學(xué)習(xí)公開課
首先看書入門黨,周志華和李航老師的西瓜書和統(tǒng)計(jì)學(xué)習(xí)方法都可以,可以快速地看完前幾章,不要具體到算法,如果你愿意,看完邏輯回歸就可以了,首先明白機(jī)器學(xué)習(xí)問(wèn)題的定義,其次明白幾個(gè)關(guān)鍵的名詞,訓(xùn)練驗(yàn)證測(cè)試,偏差方差,樣本,特征,標(biāo)簽。然后去看什么是監(jiān)督學(xué)習(xí)什么是無(wú)監(jiān)督學(xué)習(xí),大概了解了這些之后,再到具體的算法。再推薦一本書《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》綠皮書,這些書的特點(diǎn)就是原理講的很明白,《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》所有的算法都用代碼實(shí)現(xiàn)了一遍,邏輯清晰很好理解,比那些用sklaern的書強(qiáng)一萬(wàn)倍。
看視頻入門黨,推薦吳恩達(dá) Coursera 上的《機(jī)器學(xué)習(xí)》,吳恩達(dá)老師設(shè)計(jì)的課程已經(jīng)非常適合入門了,側(cè)重原理,邏輯清楚,機(jī)器學(xué)習(xí)的細(xì)節(jié)也面面俱到。
經(jīng)過(guò)上述階段,你大概對(duì)機(jī)器學(xué)習(xí)要解決的問(wèn)題,使用的方法和適用場(chǎng)景都有所了解了,這時(shí)候,你大概對(duì)算法的原理也都八九不離十,但是學(xué)習(xí)原理總是枯燥的,不過(guò)一定要堅(jiān)持下來(lái),千萬(wàn)不要在這個(gè)階段滿足于調(diào)包。
第二階段:在編程中理解
目標(biāo)是能夠自己動(dòng)手實(shí)現(xiàn)算法的細(xì)節(jié)而不是用sklearn去調(diào)包。正反饋是自己動(dòng)手從頭正確實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法。?推薦資源?Peter Harrington 《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》吳恩達(dá) Coursra 機(jī)器學(xué)習(xí)公開課編程作業(yè)。
這里推薦吳恩達(dá)老師機(jī)器學(xué)習(xí)課程的作業(yè),不需要把每個(gè)算法都實(shí)現(xiàn)一遍,但是要在實(shí)踐中去理解機(jī)器學(xué)習(xí)的基本算法套路,比如梯度下降是怎么做的,鏈?zhǔn)椒▌t怎么用程序表達(dá)。還有就是《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》的配套代碼,這本書的最大好處是讓你能夠用最基本的python語(yǔ)法,從底層上讓你構(gòu)建代碼,實(shí)現(xiàn)我們常說(shuō)的比如郵件過(guò)濾,數(shù)據(jù)分類的應(yīng)用。
很多時(shí)候你要寫最基本的代碼和結(jié)構(gòu)去做這些工作,而不是像sklearn去調(diào)用fit 和predit,你能實(shí)現(xiàn)算法的底層原理,知道決策樹的分割增益計(jì)算如何寫代碼,梯度下降如何寫代碼,知道機(jī)器學(xué)習(xí)是如何從0到1實(shí)現(xiàn)的。
不過(guò)這本書比較老舊了,重點(diǎn)也不是講解理論方面的東西,可以當(dāng)成第二個(gè)階段的教材,和第一階段互補(bǔ)。
另外。如果你是NLP方向的同學(xué),可以看一下詞向量GloVe的代碼實(shí)現(xiàn),為什么推薦GloVe的代碼,他是一個(gè)用純c語(yǔ)言寫的機(jī)器學(xué)習(xí)做矩陣分解來(lái)求解詞向量的程序,包含實(shí)現(xiàn)隨機(jī)梯度下降,損失函數(shù)定義,數(shù)據(jù)并行處理等基本的要素,是麻雀雖小,五臟俱全,代碼邏輯清晰,涉及到機(jī)器學(xué)習(xí)的方方面面,而且,毫無(wú)調(diào)包,代碼量不大,很容易看懂。
第三階段:實(shí)戰(zhàn)應(yīng)用
目標(biāo)是把機(jī)器學(xué)習(xí)應(yīng)用到實(shí)際問(wèn)題中,加深對(duì)算法的理解。正反饋來(lái)自于使用機(jī)器學(xué)習(xí)工具來(lái)解決實(shí)際問(wèn)題。推薦資源Kaggle。
這時(shí)候,你對(duì)機(jī)器學(xué)習(xí)的原理,實(shí)現(xiàn)都有了解了,但是機(jī)器學(xué)習(xí)畢竟是一門應(yīng)用的科學(xué),我們通過(guò)在實(shí)戰(zhàn)中學(xué)習(xí)機(jī)器學(xué)習(xí)。所以這個(gè)階段非常適合打比賽。這里比較推薦Kaggle平臺(tái),不推薦國(guó)內(nèi)的競(jìng)賽平臺(tái),除非你想給自己添堵,被排行榜上各種騷操作嚇呆。至于怎么玩kaggle,推薦kaggle kernel上的開源討論,以及一些比較好的Grand Master的分享。
后話
上面三個(gè)階段,在具體的知識(shí)點(diǎn)上可以互相交叉。比如,你看完了邏輯回歸,動(dòng)手實(shí)現(xiàn)了一下,然后上kaggle做了一個(gè)數(shù)據(jù)集的任務(wù)。不是說(shuō)非得把所有的長(zhǎng)篇大論看完了,這樣能更有利于你學(xué)習(xí)。
如果你有什么特別好的資源推薦,或者入門方法,歡迎放到評(píng)論區(qū)~
往期精彩回顧 本站qq群955171419,加入微信群請(qǐng)掃碼:
