机器学习教程
來源:知乎
我們今天就來分享一篇來自 EliteDataScience 上專門講給機(jī)器學(xué)習(xí)入門自學(xué)者的教程,一步步教你如何從基礎(chǔ)小白進(jìn)階為 ML 大拿。快上車吧,別找硬幣了,這趟車不要錢!
你是否正在準(zhǔn)備自學(xué)機(jī)器學(xué)習(xí),但又不知道怎么去學(xué)、還被那些貴的要命的培訓(xùn)課程嚇得不行?
今天我們在這篇文章里就教你怎樣免費獲得世界級的機(jī)器學(xué)習(xí)教育,你既不需要有博士學(xué)位,也不必是技術(shù)大牛,更不必賣好幾個腎去買一份很貴的培訓(xùn)課程。不管你是想成為數(shù)據(jù)科學(xué)家還是在開發(fā)中使用機(jī)器學(xué)習(xí)算法,其實你都能比想象中更快地學(xué)習(xí)和應(yīng)用機(jī)器學(xué)習(xí)。
本文告訴你在機(jī)器學(xué)習(xí)之路上的幾個步驟,保你不會迷路,下面開始我們的表演。
第一步:先搞懂什么是機(jī)器學(xué)習(xí)
在悶頭學(xué)習(xí)機(jī)器學(xué)習(xí)之前,最好先把什么是機(jī)器學(xué)習(xí)搞清楚,了解機(jī)器學(xué)習(xí)的基本概念。
簡單來說,機(jī)器學(xué)習(xí)就是教電腦怎樣從數(shù)據(jù)中學(xué)習(xí),然后做出決策或預(yù)測。對于真正的機(jī)器學(xué)習(xí)來說,電腦必須在沒有明確編程的情況下能夠?qū)W習(xí)識別模型。
機(jī)器學(xué)習(xí)屬于計算機(jī)科學(xué)與統(tǒng)計學(xué)的交叉學(xué)科,在多個領(lǐng)域會以不同的面目出現(xiàn),比如你應(yīng)該聽過這些名詞:數(shù)據(jù)科學(xué)、大數(shù)據(jù)、人工智能、預(yù)測型分析、計算機(jī)統(tǒng)計、數(shù)據(jù)挖掘······
雖然機(jī)器學(xué)習(xí)和這些領(lǐng)域有很多重疊的地方,但也不能將它們混淆。例如,機(jī)器學(xué)習(xí)是數(shù)據(jù)科學(xué)中的一種工具,也能用于處理大數(shù)據(jù)。
機(jī)器學(xué)習(xí)自身也分為多個類型,比如監(jiān)督式學(xué)習(xí)、非監(jiān)督式學(xué)習(xí)、增強(qiáng)學(xué)習(xí)等等。例如:
郵件運營商將垃圾廣告信息分類至垃圾箱,應(yīng)用的是機(jī)器學(xué)習(xí)中的監(jiān)督式學(xué)習(xí);電商公司通過分析消費數(shù)據(jù)將消費者進(jìn)行分類,應(yīng)用的是機(jī)器學(xué)習(xí)中的非監(jiān)督式學(xué)習(xí);而無人駕駛汽車中的電腦合攝像頭與道路及其它車輛交互、學(xué)習(xí)如何導(dǎo)航,就是用到了增強(qiáng)學(xué)習(xí)。想了解機(jī)器學(xué)習(xí)的入門知識,可以看看一些網(wǎng)絡(luò)課程。對于想對機(jī)器學(xué)習(xí)領(lǐng)域的重點慨念有個基礎(chǔ)的了解的人來說,吳恩達(dá)教授的機(jī)器學(xué)習(xí)入門課程絕對必看:
https://www.coursera.org/learn/machine-learning
以及“無人車之父” Sebastian Thrun 的《機(jī)器學(xué)習(xí)入門》課程,對機(jī)器學(xué)習(xí)進(jìn)行了詳細(xì)介紹,并輔以大量的編程操作幫助你鞏固所學(xué)內(nèi)容:
https://cn.udacity.com/course/intro-to-machine-learning--ud120
此外,Sebastian 在優(yōu)達(dá)學(xué)城上還開設(shè)了一本《人工智能入門》課程,講解人工智能領(lǐng)域的基本原理以及相關(guān)應(yīng)用比如機(jī)器人、計算機(jī)視覺和自然語言處理等:
https://cn.udacity.com/course/intro-to-artificial-intelligence--cs271
當(dāng)然也少不了集智君整理制作的免費專欄,在這里你可以免去安裝環(huán)境的煩惱,直接投入簡單地機(jī)器學(xué)習(xí)訓(xùn)練中來:
邊看邊練的簡明機(jī)器學(xué)習(xí)教程 Part I - 集智專欄
這些課程都是免費的哦!
大概了解機(jī)器學(xué)習(xí)后,我們就來到知識準(zhǔn)備階段了。
第二步:預(yù)備知識
如果沒有基本的知識儲備,機(jī)器學(xué)習(xí)的確看起來很嚇人。要學(xué)習(xí)機(jī)器學(xué)習(xí),你不必是專業(yè)的數(shù)學(xué)人才,或者程序員大牛,但你確實需要掌握這些方面的核心技能。
好消息是,一旦完成預(yù)備知識,剩下的部分就相當(dāng)容易啦。實際上,機(jī)器學(xué)習(xí)基本就是將統(tǒng)計學(xué)和計算機(jī)科學(xué)中的概念應(yīng)用在數(shù)據(jù)上。
這一步的基本任務(wù)就是保證自己在編程和統(tǒng)計學(xué)知識上別掉隊。
2-1:用于數(shù)據(jù)科學(xué)中的Python編程
如果不懂編程,是沒法使用機(jī)器學(xué)習(xí)的。幸好,這里有份免費教程,教你如何學(xué)習(xí)應(yīng)用于數(shù)據(jù)科學(xué)中的Python語言:
https://elitedatascience.com/learn-python-for-data-science
注:景略集智再補(bǔ)充三個資源:
[Python入門] 01 基本法則 - 集智專欄:
https://jizhi.im/blog/post/pyintro01
從零學(xué)習(xí)數(shù)據(jù)科學(xué)中Python的完全指南:
https://www.analyticsvidhya.com/blog/2016/01/complete-tutorial-learn-data-science-python-scratch-2/
以及40多個Python學(xué)習(xí)資源的匯總文章:
https://www.datacamp.com/community/tutorials/python-statistics-data-science
2-2:用于數(shù)據(jù)科學(xué)的統(tǒng)計學(xué)知識
了解統(tǒng)計學(xué)知識,特別是貝葉斯概率,對于許多機(jī)器學(xué)習(xí)算法來說都是基本的要求。
這里有份學(xué)習(xí)數(shù)據(jù)學(xué)習(xí)中統(tǒng)計學(xué)知識的教程:
https://elitedatascience.com/learn-statistics-for-data-science
2-3:需要學(xué)習(xí)的數(shù)學(xué)知識
研究機(jī)器學(xué)習(xí)算法需要一定的線性代數(shù)和多元微積分知識作為基礎(chǔ)。點這里,獲取一份免費學(xué)習(xí)教程:
https://elitedatascience.com/learn-math-for-data-science
第三步:開啟“海綿模式”,學(xué)習(xí)盡可能多的原理知識
所謂“海綿模式”,就是像海綿吸水一樣,盡可能多地吸收機(jī)器學(xué)習(xí)的原理和知識,這一步和第一步有些相似,但不同的是,第一步是對機(jī)器學(xué)習(xí)有個初步了解,而這一步是要掌握相關(guān)原理知識。
可能有些同學(xué)會想:我又不想做基礎(chǔ)研究,干嘛要掌握這些原理,只要會用機(jī)器學(xué)習(xí)工具包不就行了嗎?
有這個疑問也很正常,但是對于任何想將機(jī)器學(xué)習(xí)應(yīng)用在工作中的人來說,學(xué)習(xí)機(jī)器學(xué)習(xí)的基礎(chǔ)知識非常重要。比如你在應(yīng)用機(jī)器學(xué)習(xí)中可能會遇到這些問題:
- 數(shù)據(jù)收集是個非常耗時耗力的過程。你需要考慮:我需要收集什么類型的數(shù)據(jù)?我需要多少數(shù)據(jù)?等此類的問題。
- 數(shù)據(jù)假設(shè)和預(yù)處理。不同的算法需要對輸入數(shù)據(jù)進(jìn)行不同的假設(shè)。我該怎樣預(yù)處理我的數(shù)據(jù)?我的模型對缺失的數(shù)據(jù)可靠嗎?
- 解釋模型結(jié)果。說機(jī)器學(xué)習(xí)就是“黑箱”的觀點明顯是錯誤的。沒錯,不是所有的模型結(jié)果能直接判讀,但你需要能夠判斷模型的狀況,進(jìn)而完善它們。我怎么確定模型是過度擬合還是不充分?jǐn)M合?模型還有多少改進(jìn)空間?
- 優(yōu)化和調(diào)試模型。很少有人剛開始就得到一個最佳模型,你需要了解不同參數(shù)之間的細(xì)微差別和正則化方法。如果我的模型過度擬合,該怎么修正?我應(yīng)該將幾個模型組合在一起嗎?
要想在機(jī)器學(xué)習(xí)研究中解答這些問題,掌握機(jī)器學(xué)習(xí)的知識原理必不可少。這里推薦兩個世界級的機(jī)器學(xué)習(xí)課程,一定會讓你受益良多:
哈佛大學(xué)的機(jī)器學(xué)習(xí)課程,讓你了解從數(shù)據(jù)收集到數(shù)據(jù)分析的整個流程:
https://cs109.github.io/2015/ https://cs109.github.io/2015/pages/videos.html https://github.com/cs109/content(提示:這個課程和吳恩達(dá)教授的課程配合食用,效果更加)
斯坦福大學(xué)的機(jī)器學(xué)習(xí)課程,清楚地講解了機(jī)器學(xué)習(xí)的核心概念:
https://see.stanford.edu/Course/CS229還有兩部值得讀的參考書籍:《統(tǒng)計學(xué)習(xí)導(dǎo)論》和《統(tǒng)計學(xué)習(xí)基礎(chǔ)》
這兩部書的英文原版下載地址:
《An Introduction to Statistical Learning》:
http://www-bcf.usc.edu/~gareth/ISL/ISLR%20Sixth%20Printing.pdf
《Elements of Statistical Learning》:
https://web.stanford.edu/~hastie/Papers/ESLII.pdf
注:看不慣英文原版的同學(xué),可以去讀這兩本書的中文版。
集智也建議大家可以多逛逛Reddit上的機(jī)器學(xué)習(xí)論壇:
https://www.reddit.com/user/techrat_reddit/m/machine_learning/
https://www.reddit.com/r/MachineLearning/
https://www.reddit.com/r/learnmachinelearning/
當(dāng)然,Quora上的機(jī)器學(xué)習(xí)版塊也很有料:
https://www.quora.com/pinned/Machine-Learning
逛論壇不容易看到高階知識,你不能一直停留在菜鳥階段不是,要升級就有必要看看專業(yè)的論文。arXive是個好去處,是個收集物理學(xué)、數(shù)學(xué)、計算機(jī)科學(xué)與生物學(xué)的論文預(yù)印本的網(wǎng)站。
關(guān)于人工智能的版塊:
https://arxiv.org/list/cs.AI/recent
關(guān)于機(jī)器學(xué)習(xí)的版塊:
https://arxiv.org/list/cs.LG/recent
如果嫌自己搜索論文太麻煩,可以在網(wǎng)站 arxiv-sanity.com 上注冊一個賬號,它可以按自己的感興趣標(biāo)簽給你推送最新的 arXive 上的論文。
第四步:針對性實際練習(xí)
在開啟“海綿模式”后,你應(yīng)該掌握了機(jī)器學(xué)習(xí)的基礎(chǔ)理念知識,接著就該實際操作了。
實際操作主要是通過具體的、深思熟慮的實踐操作增強(qiáng)你的技能。本步目標(biāo)有三個:
- 練習(xí)機(jī)器學(xué)習(xí)的整個流程:收集數(shù)據(jù),預(yù)處理和清理數(shù)據(jù),搭建模型,訓(xùn)練和調(diào)試模型,評估模型。
- 在真正的數(shù)據(jù)集上實踐操作:對于什么樣的數(shù)據(jù)適合用什么類型的模型,自己應(yīng)逐漸建立這方面的判斷能力。
- 深度探究:例如在上一步,你學(xué)習(xí)了很多機(jī)器學(xué)習(xí)算法知識,在這一步就要將不同類型的算法應(yīng)用在數(shù)據(jù)集中,看看哪個效果最好。
完成這一步后,就可以進(jìn)行更大規(guī)模的項目了。
4-1 九個基本部分
機(jī)器學(xué)習(xí)是一個非常廣泛和豐富的領(lǐng)域,幾乎在每個行業(yè)都有應(yīng)用。因為要學(xué)習(xí)的東西太多,初學(xué)者很容易發(fā)慌,而且在面對很多個模型時也很容易迷失,看不到大局。
因此,我們把機(jī)器學(xué)習(xí)大概劃分為九個部分:
ML整體學(xué)習(xí):
基本的機(jī)器學(xué)習(xí)原理,比如方差權(quán)衡這些知識。
優(yōu)化:
為模型發(fā)現(xiàn)最優(yōu)參數(shù)的算法。
數(shù)據(jù)預(yù)處理:
處理缺失數(shù)據(jù)、偏態(tài)分布、異常值等。
取樣和拆分
怎樣拆分?jǐn)?shù)據(jù)集來調(diào)整參數(shù)和避免過度擬合。
監(jiān)督式學(xué)習(xí)
使用分類和回歸模型從標(biāo)記數(shù)據(jù)中學(xué)習(xí)。
非監(jiān)督式學(xué)習(xí)
使用因素和集群分析模型從非標(biāo)記數(shù)據(jù)中學(xué)習(xí)。
模型評估
根據(jù)不同的性能度量做出決策。
集成學(xué)習(xí)
將不同模型相結(jié)合,達(dá)到更好的性能。
商業(yè)應(yīng)用
機(jī)器學(xué)習(xí)如何幫助不同類型的商業(yè)業(yè)務(wù)。
4-2 實踐工具
對于初學(xué)者,我們建議采用現(xiàn)成可用的算法,這樣可以把時間用在熟悉機(jī)器學(xué)習(xí)流程上,而不是寫算法。根據(jù)你使用的編程語言,有兩個不錯的工具(鏈接為使用教程):
Python的Scikit-Learn
https://elitedatascience.com/python-machine-learning-tutorial-scikit-learn
R語言的Caret
https://www.youtube.com/watch?v=7Jbb2ItbTC4
4-3 利用數(shù)據(jù)集實踐操作
在這步需要用數(shù)據(jù)集進(jìn)行搭建和調(diào)試模型的實際操作,也就是將你在“海綿模式”階段學(xué)到的理論轉(zhuǎn)變?yōu)榇a。我們建議你選擇UCI Machine Learning Repo,Kaggle和http://Data.gov上的數(shù)據(jù)集開始入手:
UCI Machine Learning Repo:
http://archive.ics.uci.edu/ml/index.php
Kaggle:
https://www.kaggle.com/datasets
http://Data.gov:
https://www.data.gov/
第五步:機(jī)器學(xué)習(xí)項目
終于到了最后一步,也是很有意思的一步。目前為止,我們已經(jīng)完成了:知識儲備、掌握基本原理、針對性練習(xí)等階段,現(xiàn)在我們準(zhǔn)備探究更大的項目:
這一步的目標(biāo)就是練習(xí)將機(jī)器學(xué)習(xí)技術(shù)應(yīng)用于完整的端到端分析。
任務(wù):完成下面的項目,依次從易到難。
5-1:“泰坦尼克號”幸存者預(yù)測
“泰坦尼克號”幸存者預(yù)測是練習(xí)機(jī)器學(xué)習(xí)時相當(dāng)流行的選擇。而且有非常多的教程可供參考。
Python 教程:
https://www.kaggle.com/c/titanic
或
https://github.com/savarin/pyconuk-introtutorial
R語言教程:
https://amunategui.github.io/binary-outcome-modeling/
http://will-stanton.com/machine-learning-with-r-an-irresponsibly-fast-tutorial/
5-2 從零開始寫算法
我們建議你先以一些簡單的方面寫起:邏輯回歸、決策樹、k 最近鄰算法等。
如果中間卡住了,這里有些小技巧可以參考:
- 維基百科是個不錯的資源庫,提供了一些常見算法的偽代碼。
- 可以看看一些現(xiàn)成ML工具包的源代碼,獲得靈感。
- 將算法分為幾部分。寫出取樣、梯度下降等的分離函數(shù)。
- 在開始寫整個算法前,先寫一個簡單的決策樹。
5-3 選個有趣的項目或自己感興趣的領(lǐng)域
其實這應(yīng)該是機(jī)器學(xué)習(xí)最棒的部分了,可以利用機(jī)器學(xué)習(xí)實現(xiàn)自己的想法。
如果實在沒想到好點子,這里有6個有趣的初學(xué)者機(jī)器學(xué)習(xí)實踐項目:
https://elitedatascience.com/machine-learning-projects-for-beginners
結(jié)語:
如果你按照這個步驟一步步扎實學(xué)習(xí)的話,相信你最終一定在機(jī)器學(xué)習(xí)方面小有成就!
我們對初學(xué)機(jī)器學(xué)習(xí)的人還有10個小小的tips:
總結(jié)
- 上一篇: HTML+CSS实现个人简历
- 下一篇: 爬虫如何监听插件_Go 爬虫之 coll