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