掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
Python 可以說(shuō)是現(xiàn)在最流行的機(jī)器學(xué)習(xí)語(yǔ)言,而且你也能在網(wǎng)上找到大量的資源。你現(xiàn)在也在考慮從 Python 入門(mén)機(jī)器學(xué)習(xí)嗎?本教程或許能幫你成功上手,從 0 到 1 掌握 Python 機(jī)器學(xué)習(xí),至于后面再?gòu)?1 到 100 變成機(jī)器學(xué)習(xí)專(zhuān)家,就要看你自己的努力了。

專(zhuān)注于為中小企業(yè)提供成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)晉中免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
「開(kāi)始」往往是最難的,尤其是當(dāng)選擇太多的時(shí)候,一個(gè)人往往很難下定決定做出選擇。本教程的目的是幫助幾乎沒(méi)有 Python 機(jī)器學(xué)習(xí)背景的新手成長(zhǎng)為知識(shí)淵博的實(shí)踐者,而且這個(gè)過(guò)程中僅需要使用免費(fèi)的材料和資源即可。這個(gè)大綱的主要目標(biāo)是帶你了解那些數(shù)量繁多的可用資源。毫無(wú)疑問(wèn),資源確實(shí)有很多,但哪些才是最好的呢?哪些是互補(bǔ)的呢?以怎樣的順序?qū)W習(xí)這些資源才是最合適的呢?
首先,我假設(shè)你并不是以下方面的專(zhuān)家:
當(dāng)然,如果你對(duì)前兩個(gè)主題有一定程度的基本了解就更好了,但那并不是必要的,在早期階段多花一點(diǎn)點(diǎn)時(shí)間了解一下就行了。
一、基礎(chǔ)篇
1. 第一步:基本 Python 技能
如果我們打算利用 Python 來(lái)執(zhí)行機(jī)器學(xué)習(xí),那么對(duì) Python 有一些基本的了解就是至關(guān)重要的。幸運(yùn)的是,因?yàn)?Python 是一種得到了廣泛使用的通用編程語(yǔ)言,加上其在科學(xué)計(jì)算和機(jī)器學(xué)習(xí)領(lǐng)域的應(yīng)用,所以找到一個(gè)初學(xué)者教程并不十分困難。你在 Python 和編程上的經(jīng)驗(yàn)水平對(duì)于起步而言是至關(guān)重要的。
首先,你需要安裝 Python。因?yàn)槲覀兒竺鏁?huì)用到科學(xué)計(jì)算和機(jī)器學(xué)習(xí)軟件包,所以我建議你安裝 Anaconda。這是一個(gè)可用于 Linux、OS X 和 Windows 上的工業(yè)級(jí)的 Python 實(shí)現(xiàn),完整包含了機(jī)器學(xué)習(xí)所需的軟件包,包括 numpy、scikit-learn 和 matplotlib。其也包含了 iPython Notebook,這是一個(gè)用在我們?cè)S多教程中的交互式環(huán)境。我推薦安裝 Python 2.7。
如果你不懂編程,我建議你從下面的免費(fèi)在線書(shū)籍開(kāi)始學(xué)習(xí),然后再進(jìn)入后續(xù)的材料:
如果你有編程經(jīng)驗(yàn),但不懂 Python 或還很初級(jí),我建議你學(xué)習(xí)下面兩個(gè)課程:
如果你要 30 分鐘上手 Python 的快速課程,看下面:
當(dāng)然,如果你已經(jīng)是一位經(jīng)驗(yàn)豐富的 Python 程序員了,這一步就可以跳過(guò)了。即便如此,我也建議你常使用 Python 文檔:https://www.python.org/doc/
2. 第二步:機(jī)器學(xué)習(xí)基礎(chǔ)技巧
KDnuggets 的 Zachary Lipton 已經(jīng)指出:現(xiàn)在,人們?cè)u(píng)價(jià)一個(gè)「數(shù)據(jù)科學(xué)家」已經(jīng)有很多不同標(biāo)準(zhǔn)了。這實(shí)際上是機(jī)器學(xué)習(xí)領(lǐng)域領(lǐng)域的一個(gè)寫(xiě)照,因?yàn)閿?shù)據(jù)科學(xué)家大部分時(shí)間干的事情都牽涉到不同程度地使用機(jī)器學(xué)習(xí)算法。為了有效地創(chuàng)造和獲得來(lái)自支持向量機(jī)的洞見(jiàn),非常熟悉核方法(kernel methods)是否必要呢?當(dāng)然不是。就像幾乎生活中的所有事情一樣,掌握理論的深度是與實(shí)踐應(yīng)用相關(guān)的。對(duì)機(jī)器學(xué)習(xí)算法的深度了解超過(guò)了本文探討的范圍,它通常需要你將非常大量的時(shí)間投入到更加學(xué)術(shù)的課程中去,或者至少是你自己要進(jìn)行高強(qiáng)度的自學(xué)訓(xùn)練。
好消息是,對(duì)實(shí)踐來(lái)說(shuō),你并不需要獲得機(jī)器學(xué)習(xí)博士般的理論理解——就想要成為一個(gè)高效的程序員并不必要進(jìn)行計(jì)算機(jī)科學(xué)理論的學(xué)習(xí)。
人們對(duì)吳恩達(dá)在 Coursera 上的機(jī)器學(xué)習(xí)課程內(nèi)容往往好評(píng)如潮;然而,我的建議是瀏覽前一個(gè)學(xué)生在線記錄的課堂筆記。跳過(guò)特定于 Octave(一個(gè)類(lèi)似于 Matlab 的與你 Python 學(xué)習(xí)無(wú)關(guān)的語(yǔ)言)的筆記。一定要明白這些都不是官方筆記,但是可以從它們中把握到吳恩達(dá)課程材料中相關(guān)的內(nèi)容。當(dāng)然如果你有時(shí)間和興趣,你現(xiàn)在就可以去 Coursera 上學(xué)習(xí)吳恩達(dá)的機(jī)器學(xué)習(xí)課程:http://suo.im/2o1uD
除了上面提到的吳恩達(dá)課程,如果你還需要需要其它的,網(wǎng)上還有很多各類(lèi)課程供你選擇。比如我就很喜歡 Tom Mitchell,這里是他最近演講的視頻(一起的還有 Maria-Florina Balcan),非常平易近人。
目前你不需要所有的筆記和視頻。一個(gè)有效地方法是當(dāng)你覺(jué)得合適時(shí),直接去看下面特定的練習(xí)題,參考上述備注和視頻恰當(dāng)?shù)牟糠郑?/p>
3. 第三步:科學(xué)計(jì)算 Python 軟件包概述
好了,我們已經(jīng)掌握了 Python 編程并對(duì)機(jī)器學(xué)習(xí)有了一定的了解。而在 Python 之外,還有一些常用于執(zhí)行實(shí)際機(jī)器學(xué)習(xí)的開(kāi)源軟件庫(kù)。廣義上講,有很多所謂的科學(xué) Python 庫(kù)(scientific Python libraries)可用于執(zhí)行基本的機(jī)器學(xué)習(xí)任務(wù)(這方面的判斷肯定有些主觀性):
學(xué)習(xí)這些庫(kù)的一個(gè)好方法是學(xué)習(xí)下面的材料:
在本教程的后面你還會(huì)看到一些其它的軟件包,比如基于 matplotlib 的數(shù)據(jù)可視化庫(kù) Seaborn。前面提到的軟件包只是 Python 機(jī)器學(xué)習(xí)中常用的一些核心庫(kù)的一部分,但是理解它們應(yīng)該能讓你在后面遇到其它軟件包時(shí)不至于感到困惑。
下面就開(kāi)始動(dòng)手吧!
4. 第四步:使用 Python 學(xué)習(xí)機(jī)器學(xué)習(xí)
首先檢查一下準(zhǔn)備情況
現(xiàn)在是時(shí)候使用 Python 機(jī)器學(xué)習(xí)標(biāo)準(zhǔn)庫(kù) scikit-learn 來(lái)實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法了。
scikit-learn 流程圖
下面許多的教程和訓(xùn)練都是使用 iPython (Jupyter) Notebook 完成的,iPython Notebook 是執(zhí)行 Python 語(yǔ)句的交互式環(huán)境。iPython Notebook 可以很方便地在網(wǎng)上找到或下載到你的本地計(jì)算機(jī)。
同樣也請(qǐng)注意,以下的教程是由一系列在線資源所組成。如果你感覺(jué)課程有什么不合適的,可以和作者交流。我們第一個(gè)教程就是從 scikit-learn 開(kāi)始的,我建議你們?cè)诶^續(xù)完成教程前可以按順序看一看以下的文章。
下面是一篇是對(duì) scikit-learn 簡(jiǎn)介的文章,scikit-learn 是 Python 最常用的通用機(jī)器學(xué)習(xí)庫(kù),其覆蓋了 K 近鄰算法:
下面的會(huì)更加深入、擴(kuò)展的一篇簡(jiǎn)介,包括了從著名的數(shù)據(jù)庫(kù)開(kāi)始完成一個(gè)項(xiàng)目:
下一篇關(guān)注于在 scikit-learn 上評(píng)估不同模型的策略,包括訓(xùn)練集/測(cè)試集的分割方法:
5. 第五步:Python 上實(shí)現(xiàn)機(jī)器學(xué)習(xí)的基本算法
在有了 scikit-learn 的基本知識(shí)后,我們可以進(jìn)一步探索那些更加通用和實(shí)用的算法。我們從非常出名的 K 均值聚類(lèi)(k-means clustering)算法開(kāi)始,它是一種非常簡(jiǎn)單和高效的方法,能很好地解決非監(jiān)督學(xué)習(xí)問(wèn)題:
接下來(lái)我們可以回到分類(lèi)問(wèn)題,并學(xué)習(xí)曾經(jīng)最流行的分類(lèi)算法:
在了解分類(lèi)問(wèn)題后,我們可以繼續(xù)看看連續(xù)型數(shù)值預(yù)測(cè):
我們也可以利用回歸的思想應(yīng)用到分類(lèi)問(wèn)題中,即 logistic 回歸:
6. 第六步:Python 上實(shí)現(xiàn)進(jìn)階機(jī)器學(xué)習(xí)算法
我們已經(jīng)熟悉了 scikit-learn,現(xiàn)在我們可以了解一下更高級(jí)的算法了。首先就是支持向量機(jī),它是一種依賴于將數(shù)據(jù)轉(zhuǎn)換映射到高維空間的非線性分類(lèi)器。
隨后,我們可以通過(guò) Kaggle Titanic 競(jìng)賽檢查學(xué)習(xí)作為集成分類(lèi)器的隨機(jī)森林:
降維算法經(jīng)常用于減少在問(wèn)題中所使用的變量。主成份分析法就是非監(jiān)督降維算法的一個(gè)特殊形式:
在進(jìn)入第七步之前,我們可以花一點(diǎn)時(shí)間考慮在相對(duì)較短的時(shí)間內(nèi)取得的一些進(jìn)展。
首先使用 Python 及其機(jī)器學(xué)習(xí)庫(kù),我們不僅已經(jīng)了解了一些最常見(jiàn)和知名的機(jī)器學(xué)習(xí)算法(k 近鄰、k 均值聚類(lèi)、支持向量機(jī)等),還研究了強(qiáng)大的集成技術(shù)(隨機(jī)森林)和一些額外的機(jī)器學(xué)習(xí)任務(wù)(降維算法和模型驗(yàn)證技術(shù))。除了一些基本的機(jī)器學(xué)習(xí)技巧,我們已經(jīng)開(kāi)始尋找一些有用的工具包。
我們會(huì)進(jìn)一步學(xué)習(xí)新的必要工具。
7. 第七步:Python 深度學(xué)習(xí)
神經(jīng)網(wǎng)絡(luò)包含很多層
深度學(xué)習(xí)無(wú)處不在。深度學(xué)習(xí)建立在幾十年前的神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上,但是最近的進(jìn)步始于幾年前,并極大地提高了深度神經(jīng)網(wǎng)絡(luò)的認(rèn)知能力,引起了人們的廣泛興趣。如果你對(duì)神經(jīng)網(wǎng)絡(luò)還不熟悉,KDnuggets 有很多文章詳細(xì)介紹了最近深度學(xué)習(xí)大量的創(chuàng)新、成就和贊許。
最后一步并不打算把所有類(lèi)型的深度學(xué)習(xí)評(píng)論一遍,而是在 2 個(gè)先進(jìn)的當(dāng)代 Python 深度學(xué)習(xí)庫(kù)中探究幾個(gè)簡(jiǎn)單的網(wǎng)絡(luò)實(shí)現(xiàn)。對(duì)于有興趣深挖深度學(xué)習(xí)的讀者,我建議從下面這些免費(fèi)的在線書(shū)籍開(kāi)始:
神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí),作者 Michael Nielsen:http://neuralnetworksanddeeplearning.com/
(1)Theano
鏈接:http://deeplearning.net/software/theano/
Theano 是我們講到的第一個(gè) Python 深度學(xué)習(xí)庫(kù)??纯?Theano 作者怎么說(shuō):
| Theano 是一個(gè) Python 庫(kù),它可以使你有效地定義、優(yōu)化和評(píng)估包含多維數(shù)組的數(shù)學(xué)表達(dá)式。 |
下面關(guān)于運(yùn)用 Theano 學(xué)習(xí)深度學(xué)習(xí)的入門(mén)教程有點(diǎn)長(zhǎng),但是足夠好,描述生動(dòng),評(píng)價(jià)很高:
(2)Caffe
鏈接:http://caffe.berkeleyvision.org/
另一個(gè)我們將測(cè)試驅(qū)動(dòng)的庫(kù)是 Caffe。再一次,讓我們從作者開(kāi)始:
| Caffe 是一個(gè)深度學(xué)習(xí)框架,由表達(dá)、速度和模塊性建構(gòu),Bwekeley 視覺(jué)與學(xué)習(xí)中心和社區(qū)工作者共同開(kāi)發(fā)了 Caf fe。 |
這個(gè)教程是本篇文章中最好的一個(gè)。我們已經(jīng)學(xué)習(xí)了上面幾個(gè)有趣的樣例,但沒(méi)有一個(gè)可與下面這個(gè)樣例相競(jìng)爭(zhēng),其可通過(guò) Caffe 實(shí)現(xiàn)谷歌的 DeepDream。這個(gè)相當(dāng)精彩!掌握教程之后,可以嘗試使你的處理器自如運(yùn)行,就當(dāng)作是娛樂(lè)。
我并沒(méi)有保證說(shuō)這會(huì)很快或容易,但是如果你投入了時(shí)間并完成了上面的 7 個(gè)步驟,你將在理解大量機(jī)器學(xué)習(xí)算法以及通過(guò)流行的庫(kù)(包括一些在目前深度學(xué)習(xí)研究領(lǐng)域最前沿的庫(kù))在 Python 中實(shí)現(xiàn)算法方面變得很擅長(zhǎng)。
二、進(jìn)階篇
機(jī)器學(xué)習(xí)算法
本篇是使用 Python 掌握機(jī)器學(xué)習(xí)的 7 個(gè)步驟系列文章的下篇,如果你已經(jīng)學(xué)習(xí)了該系列的上篇,那么應(yīng)該達(dá)到了令人滿意的學(xué)習(xí)速度和熟練技能;如果沒(méi)有的話,你也許應(yīng)該回顧一下上篇,具體花費(fèi)多少時(shí)間,取決于你當(dāng)前的理解水平。我保證這樣做是值得的??焖倩仡欀?,本篇文章會(huì)更明確地集中于幾個(gè)機(jī)器學(xué)習(xí)相關(guān)的任務(wù)集上。由于安全地跳過(guò)了一些基礎(chǔ)模塊——Python 基礎(chǔ)、機(jī)器學(xué)習(xí)基礎(chǔ)等等——我們可以直接進(jìn)入到不同的機(jī)器學(xué)習(xí)算法之中。這次我們可以根據(jù)功能更好地分類(lèi)教程。
第1步:機(jī)器學(xué)習(xí)基礎(chǔ)回顧&一個(gè)新視角
上篇中包括以下幾步:
1. Python 基礎(chǔ)技能
2. 機(jī)器學(xué)習(xí)基礎(chǔ)技能
3. Python 包概述
4. 運(yùn)用 Python 開(kāi)始機(jī)器學(xué)習(xí):介紹&模型評(píng)估
5. 關(guān)于 Python 的機(jī)器學(xué)習(xí)主題:k-均值聚類(lèi)、決策樹(shù)、線性回歸&邏輯回歸
6. 關(guān)于 Python 的高階機(jī)器學(xué)習(xí)主題:支持向量機(jī)、隨機(jī)森林、PCA 降維
7. Python 中的深度學(xué)習(xí)
如上所述,如果你正準(zhǔn)備從頭開(kāi)始,我建議你按順序讀完上篇。我也會(huì)列出所有適合新手的入門(mén)材料,安裝說(shuō)明包含在上篇文章中。
然而,如果你已經(jīng)讀過(guò),我會(huì)從下面最基礎(chǔ)的開(kāi)始:
如果你正在尋找學(xué)習(xí)機(jī)器學(xué)習(xí)基礎(chǔ)的替代或補(bǔ)充性方法,恰好我可以把正在看的 Shai Ben-David 的視頻講座和 Shai Shalev-Shwartz 的教科書(shū)推薦給你:
記住,這些介紹性資料并不需要全部看完才能開(kāi)始我寫(xiě)的系列文章。視頻講座、教科書(shū)及其他資源可在以下情況查閱:當(dāng)使用機(jī)器學(xué)習(xí)算法實(shí)現(xiàn)模型時(shí)或者當(dāng)合適的概念被實(shí)際應(yīng)用在后續(xù)步驟之中時(shí)。具體情況自己判斷。
第2步:更多的分類(lèi)
我們從新材料開(kāi)始,首先鞏固一下我們的分類(lèi)技術(shù)并引入一些額外的算法。雖然本篇文章的第一部分涵蓋決策樹(shù)、支持向量機(jī)、邏輯回歸以及合成分類(lèi)隨機(jī)森林,我們還是會(huì)添加 k-最近鄰、樸素貝葉斯分類(lèi)器和多層感知器。
Scikit-learn 分類(lèi)器
k-最近鄰(kNN)是一個(gè)簡(jiǎn)單分類(lèi)器和懶惰學(xué)習(xí)者的示例,其中所有計(jì)算都發(fā)生在分類(lèi)時(shí)間上(而不是提前在訓(xùn)練步驟期間發(fā)生)。kNN 是非參數(shù)的,通過(guò)比較數(shù)據(jù)實(shí)例和 k 最近實(shí)例來(lái)決定如何分類(lèi)。
樸素貝葉斯是基于貝葉斯定理的分類(lèi)器。它假定特征之間存在獨(dú)立性,并且一個(gè)類(lèi)中任何特定特征的存在與任何其它特征在同一類(lèi)中的存在無(wú)關(guān)。
多層感知器(MLP)是一個(gè)簡(jiǎn)單的前饋神經(jīng)網(wǎng)絡(luò),由多層節(jié)點(diǎn)組成,其中每個(gè)層與隨后的層完全連接。多層感知器在 Scikit-learn 版本 0.18 中作了介紹。
首先從 Scikit-learn 文檔中閱讀 MLP 分類(lèi)器的概述,然后使用教程練習(xí)實(shí)現(xiàn)。
第3步:更多聚類(lèi)
我們現(xiàn)在接著講聚類(lèi),一種無(wú)監(jiān)督學(xué)習(xí)形式。上篇中,我們討論了 k-means 算法; 我們?cè)诖私榻B DBSCAN 和期望最大化(EM)。
Scikit-learn聚類(lèi)算法
首先,閱讀這些介紹性文章; 第一個(gè)是 k 均值和 EM 聚類(lèi)技術(shù)的快速比較,是對(duì)新聚類(lèi)形式的一個(gè)很好的繼續(xù),第二個(gè)是對(duì) Scikit-learn 中可用的聚類(lèi)技術(shù)的概述:
期望最大化(EM)是概率聚類(lèi)算法,并因此涉及確定實(shí)例屬于特定聚類(lèi)的概率。EM 接近統(tǒng)計(jì)模型中參數(shù)的最大似然性或最大后驗(yàn)估計(jì)(Han、Kamber 和 Pei)。EM 過(guò)程從一組參數(shù)開(kāi)始迭代直到相對(duì)于 k 聚類(lèi)的聚類(lèi)最大化。
首先閱讀關(guān)于 EM 算法的教程。接下來(lái),看看相關(guān)的 Scikit-learn 文檔。最后,按照教程使用 Python 自己實(shí)現(xiàn) EM 聚類(lèi)。
如果高斯混合模型初看起來(lái)令人困惑,那么來(lái)自 Scikit-learn 文檔的這一相關(guān)部分應(yīng)該可以減輕任何多余的擔(dān)心:
高斯混合對(duì)象實(shí)現(xiàn)期望最大化(EM)算法以擬合高斯模型混合。
基于密度且具有噪聲的空間聚類(lèi)應(yīng)用(DBSCAN)通過(guò)將密集數(shù)據(jù)點(diǎn)分組在一起,并將低密度數(shù)據(jù)點(diǎn)指定為異常值來(lái)進(jìn)行操作。
首先從 Scikit-learn 的文檔中閱讀并遵循 DBSCAN 的示例實(shí)現(xiàn),然后按照簡(jiǎn)明的教程學(xué)習(xí):
第4步:更多的集成方法
上篇只涉及一個(gè)單一的集成方法:隨機(jī)森林(RF)。RF 作為一個(gè)頂級(jí)的分類(lèi)器,在過(guò)去幾年中取得了巨大的成功,但它肯定不是唯一的集成分類(lèi)器。我們將看看包裝、提升和投票。
給我一個(gè)提升
首先,閱讀這些集成學(xué)習(xí)器的概述,第一個(gè)是通用性的;第二個(gè)是它們與 Scikit-learn 有關(guān):
然后,在繼續(xù)使用新的集成方法之前,請(qǐng)通過(guò)一個(gè)新的教程快速學(xué)習(xí)隨機(jī)森林:
包裝、提升和投票都是不同形式的集成分類(lèi)器,全部涉及建構(gòu)多個(gè)模型; 然而,這些模型由什么算法構(gòu)建,模型使用的數(shù)據(jù),以及結(jié)果如何最終組合起來(lái),這些都會(huì)隨著方案而變化。
那么,為什么要組合模型?為了從一個(gè)特定角度處理這個(gè)問(wèn)題,這里是偏差-方差權(quán)衡的概述,具體涉及到提升,以下是 Scikit-learn 文檔:
現(xiàn)在你已經(jīng)閱讀了關(guān)于集成學(xué)習(xí)器的一些介紹性材料,并且對(duì)幾個(gè)特定的集成分類(lèi)器有了基本了解,下面介紹如何從 Machine Learning Mastery 中使用 Scikit-learn 在 Python 中實(shí)現(xiàn)集成分類(lèi)器:
第5步:梯度提升
下一步我們繼續(xù)學(xué)習(xí)集成分類(lèi)器,探討一個(gè)當(dāng)代最流行的機(jī)器學(xué)習(xí)算法。梯度提升最近在機(jī)器學(xué)習(xí)中產(chǎn)生了顯著的影響,成為了 Kaggle 競(jìng)賽中最受歡迎和成功的算法之一。
給我一個(gè)梯度提升
首先,閱讀梯度提升的概述:
接下來(lái),了解為什么梯度提升是 Kaggle 競(jìng)賽中「最制勝」的方法:
雖然 Scikit-learn 有自己的梯度提升實(shí)現(xiàn),我們將稍作改變,使用 XGBoost 庫(kù),我們提到過(guò)這是一個(gè)更快的實(shí)現(xiàn)。
以下鏈接提供了 XGBoost 庫(kù)的一些額外信息,以及梯度提升(出于必要):
現(xiàn)在,按照這個(gè)教程把所有匯聚起來(lái):
你還可以按照這些更簡(jiǎn)潔的示例進(jìn)行強(qiáng)化:
第6步:更多的降維
降維是通過(guò)使用過(guò)程來(lái)獲得一組主變量,將用于模型構(gòu)建的變量從其初始數(shù)減少到一個(gè)減少數(shù)。
有兩種主要形式的降維:
下面是一對(duì)常用的特征提取方法。
| 主成分分析(PCA)是一種統(tǒng)計(jì)步驟,它使用正交變換將可能相關(guān)變量的一組觀測(cè)值轉(zhuǎn)換為一組稱為主成分的線性不相關(guān)變量值。主成分的數(shù)量小于或等于原始變量的數(shù)量。這種變換以這樣的方式定義,即第一主成分具有最大可能的方差(即考慮數(shù)據(jù)中盡可能多的變率) |
以上定義來(lái)自 PCA 維基百科條目,如果感興趣可進(jìn)一步閱讀。但是,下面的概述/教程非常徹底:
| 線性判別分析(LDA)是 Fisher 線性判別的泛化,是統(tǒng)計(jì)學(xué)、模式識(shí)別和機(jī)器學(xué)習(xí)中使用的一種方法,用于發(fā)現(xiàn)線性組合特征或分離兩個(gè)或多個(gè)類(lèi)別的對(duì)象或事件的特征。所得到的組合可以用作線性分類(lèi)器,或者更常見(jiàn)地,用作后續(xù)分類(lèi)之前的降維。 |
LDA 與方差分析(ANOVA)和回歸分析密切相關(guān),它同樣嘗試將一個(gè)因變量表示為其他特征或測(cè)量的線性組合。然而,ANOVA 使用分類(lèi)獨(dú)立變量和連續(xù)因變量,而判別分析具有連續(xù)的獨(dú)立變量和分類(lèi)依賴變量(即類(lèi)標(biāo)簽)。
上面的定義也來(lái)自維基百科。下面是完整的閱讀:
你對(duì) PCA 和 LDA 對(duì)于降維的實(shí)際差異是否感到困惑?Sebastian Raschka 做了如下澄清:
| 線性判別分析(LDA)和主成分分析(PCA)都是通常用于降維的線性轉(zhuǎn)換技術(shù)。PCA 可以被描述為「無(wú)監(jiān)督」算法,因?yàn)樗负雎浴诡?lèi)標(biāo)簽,并且其目標(biāo)是找到使數(shù)據(jù)集中的方差最大化的方向(所謂的主成分)。與 PCA 相反,LDA 是「監(jiān)督的」并且計(jì)算表示使多個(gè)類(lèi)之間的間隔最大化的軸的方向(「線性判別式」)。 |
有關(guān)這方面的簡(jiǎn)要說(shuō)明,請(qǐng)閱讀以下內(nèi)容:
第 7 步:更多的深度學(xué)習(xí)
上篇中提供了一個(gè)學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)的入口。如果你的學(xué)習(xí)到目前比較順利并希望鞏固對(duì)神經(jīng)網(wǎng)絡(luò)的理解,并練習(xí)實(shí)現(xiàn)幾個(gè)常見(jiàn)的神經(jīng)網(wǎng)絡(luò)模型,那么請(qǐng)繼續(xù)往下看。
首先,看一些深度學(xué)習(xí)基礎(chǔ)材料:
接下來(lái),在 Google 的機(jī)器智能開(kāi)源軟件庫(kù) TensorFlow(一個(gè)有效的深度學(xué)習(xí)框架和現(xiàn)今幾乎是最好的神經(jīng)網(wǎng)絡(luò)工具)嘗試一些簡(jiǎn)明的概述/教程:
最后,直接從 TensorFlow 網(wǎng)站試用這些教程,它實(shí)現(xiàn)了一些最流行和常見(jiàn)的神經(jīng)網(wǎng)絡(luò)模型:
此外,目前一篇關(guān)于 7 個(gè)步驟掌握深度學(xué)習(xí)的文章正在寫(xiě)作之中,重點(diǎn)介紹使用位于 TensorFlow 頂部的高級(jí) API,以增模型實(shí)現(xiàn)的容易性和靈活性。我也將在完成后在這兒添加一個(gè)鏈接。
相關(guān)的:
本教程原文分為兩個(gè)部分,本文中將其進(jìn)行了整合,原文可參閱:http://suo.im/KUWgl 和 http://suo.im/96wD3。本教程的作者為 KDnuggets 副主編兼數(shù)據(jù)科學(xué)家 Matthew Mayo。
【本文是專(zhuān)欄機(jī)構(gòu)機(jī)器之心的原創(chuàng)譯文,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】
戳這里,看該作者更多好文

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流