5.1 什么是機(jī)器學(xué)習(xí)
譯者:飛龍
協(xié)議:CC BY-NC-SA 4.0
譯文沒有得到原作者授權(quán),不保證與原文的意思嚴(yán)格一致。
在我們查看機(jī)器學(xué)習(xí)方法的各種細(xì)節(jié)之前,先了解什么是機(jī)器學(xué)習(xí),什么不是。機(jī)器學(xué)習(xí)通常被歸類為人工智能的一個(gè)子領(lǐng)域,但是我發(fā)現(xiàn)分類往往會(huì)首先產(chǎn)生誤導(dǎo)。機(jī)器學(xué)習(xí)的研究肯定來自于這一背景下的研究,但在機(jī)器學(xué)習(xí)方法的數(shù)據(jù)科學(xué)應(yīng)用中,將機(jī)器學(xué)習(xí)視為構(gòu)建數(shù)據(jù)模型的手段更有幫助。
從根本上講,機(jī)器學(xué)習(xí)涉及建立數(shù)學(xué)模型來幫助了解數(shù)據(jù)。當(dāng)我們給出這些模型的可調(diào)參數(shù),它們可以適應(yīng)于觀測數(shù)據(jù)時(shí),“學(xué)習(xí)”就開始了;以這種方式,該程序可以認(rèn)為是從數(shù)據(jù)中“學(xué)習(xí)”。一旦這些模型已經(jīng)適合以前看到的數(shù)據(jù),它們可以用于預(yù)測和理解新觀測的數(shù)據(jù)。這種數(shù)學(xué)的,基于模型的“學(xué)習(xí)”,類似于人類大腦展示的“學(xué)習(xí)”,我會(huì)向讀者提供更多的哲學(xué)的題外話。
了解機(jī)器學(xué)習(xí)中的問題設(shè)置,對于有效使用這些工具至關(guān)重要,因此我們從更廣泛的方法分類開始,這些方法會(huì)在這里討論。
機(jī)器學(xué)習(xí)的分類
最基本的層次,機(jī)器學(xué)習(xí)可以分為兩種主要類型:監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)。
監(jiān)督學(xué)習(xí)涉及以某種方式,對數(shù)據(jù)的測量特征,以及數(shù)據(jù)相關(guān)的一些標(biāo)簽之間的關(guān)系進(jìn)行建模;一旦確定了該模型,它可以用于給新的未知數(shù)據(jù)貼標(biāo)簽。這進(jìn)一步細(xì)分為分類任務(wù)和回歸任務(wù):在分類中,標(biāo)簽是離散類別,而在回歸中,標(biāo)簽是連續(xù)數(shù)量。我們將在下一節(jié)中看到兩種類型的監(jiān)督學(xué)習(xí)的例子。
無監(jiān)督的學(xué)習(xí)涉及到對數(shù)據(jù)集的特征進(jìn)行建模,而不參考任何標(biāo)簽,并且通常被描述為“讓數(shù)據(jù)集本身說話”。這些模型包括例如聚類和降維的任務(wù)。聚類算法識(shí)別不同的數(shù)據(jù)分組,而降維算法搜索數(shù)據(jù)的更簡潔表示。我們將在下一節(jié)中看到兩種類型的無監(jiān)督學(xué)習(xí)的例子。
此外,還有所謂的半監(jiān)督學(xué)習(xí)方法,屬于監(jiān)督學(xué)習(xí)與無監(jiān)督學(xué)習(xí)之間。當(dāng)只有不完整的標(biāo)簽可用時(shí),半監(jiān)督學(xué)習(xí)方法通??常是有用的。
機(jī)器學(xué)習(xí)應(yīng)用的定性實(shí)例
為了使這些概念更具體,讓我們來看看機(jī)器學(xué)習(xí)任務(wù)的一些非常簡單的例子。 這些例子的目的是,給出本章將要介紹的機(jī)器學(xué)習(xí)任務(wù)類型的直觀,非定量的概述。 在后面的章節(jié)中,我們將對特定模型及其使用方式進(jìn)行更深入的研究。 有關(guān)更多技術(shù)方面的預(yù)覽,你可以在附錄:圖形代碼中,找到生成以下圖形的 Python 源代碼。
分類:預(yù)測離散標(biāo)簽
我們將首先看一個(gè)簡單的分類任務(wù),其中給出了一組標(biāo)記點(diǎn),并希望使用它們對一些未標(biāo)記的點(diǎn)進(jìn)行分類。
想象一下,我們有一些數(shù)據(jù),如下圖所示:

這里我們擁有二維數(shù)據(jù):也就是說,每個(gè)點(diǎn)都有兩個(gè)特征,由平面上的點(diǎn)的(x,y)位置表示。另外,我們每個(gè)點(diǎn)都有兩個(gè)類標(biāo)簽之一,這里用點(diǎn)的顏色表示。根據(jù)這些功能和標(biāo)簽,我們想創(chuàng)建一個(gè)模型,讓我們來決定,一個(gè)新的點(diǎn)應(yīng)該被標(biāo)記為“藍(lán)色”還是“紅色”。
許多可能的模型可以用于這樣的分類任務(wù),但是在這里我們將使用一個(gè)非常簡單的模型。我們將假設(shè),通過繪制直線,穿過它們之間的平面,兩個(gè)分組可以分隔,使得線的每一側(cè)的點(diǎn)落在同一組中。這里的模型是語句“分隔分類的直線”的定量版本,而模型參數(shù)是特定數(shù)字,描述我們數(shù)據(jù)的該行的位置和方向。這些模型參數(shù)的最優(yōu)值從數(shù)據(jù)中學(xué)習(xí)(這是機(jī)器學(xué)習(xí)中的“學(xué)習(xí)”),這通常稱為訓(xùn)練模型。
下圖顯示了該數(shù)據(jù)的訓(xùn)練模型的可視化表示:

現(xiàn)在這個(gè)模型已經(jīng)訓(xùn)練完畢,它可以推廣到新的,未標(biāo)記的數(shù)據(jù)。 換句話說,我們可以拿一組新的數(shù)據(jù),通過它繪制這個(gè)模型的直線,并根據(jù)這個(gè)模型為新的點(diǎn)分配標(biāo)簽。 這個(gè)階段通常稱為預(yù)測。 見下圖:

這是機(jī)器學(xué)習(xí)中分類任務(wù)的基本思想,其中“分類”表示數(shù)據(jù)具有離散的分類標(biāo)簽。乍一看,這可能看起來相當(dāng)微不足道:簡單地看看這些數(shù)據(jù),并畫出這樣的分隔線來完成這個(gè)分類,是比較容易的。然而,機(jī)器學(xué)習(xí)方法的好處是,它可以在更多維度上推廣到更大的數(shù)據(jù)集。
例如,這類似于垃圾郵件自動(dòng)檢測任務(wù);在這種情況下,我們可能會(huì)使用以下特征和標(biāo)簽:
- 特征 1,特征 2,以及其它。--> 重要單詞和短語的正則化數(shù)量 ("Viagra","Nigerian prince",以及其它。)
- 標(biāo)簽 --> "spam"(垃圾)或者 "not spam"(不是垃圾)
對于訓(xùn)練集,這些標(biāo)簽可能通過小型代表性電子郵件樣本的個(gè)別檢查來確定。對于剩余的電子郵件,標(biāo)簽將使用模型確定。對于使用足夠良好構(gòu)造的特征(通常為數(shù)千或數(shù)百萬個(gè)單詞或短語)來適當(dāng)訓(xùn)練的分類算法,這種類型的方法可以是非常有效的。我們將在樸素貝葉斯分類中看到這種基于文本的分類的例子。
我們將更詳細(xì)地討論的,一些重要的分類算法,是高斯樸素貝葉斯(見樸素貝葉斯分類),支持向量機(jī)(參見支持向量機(jī))和隨機(jī)森林分類(參見決策樹和隨機(jī)森林)。
回歸:預(yù)測連續(xù)標(biāo)簽
與分類算法的離散標(biāo)簽相反,我們接下來看一個(gè)簡單的回歸任務(wù),其中標(biāo)簽是連續(xù)數(shù)量。
考慮下圖所示的數(shù)據(jù),其中包含一組點(diǎn),每個(gè)點(diǎn)都有一個(gè)連續(xù)的標(biāo)簽:

與分類示例一樣,我們擁有二維數(shù)據(jù):即,兩個(gè)特征描述每個(gè)數(shù)據(jù)點(diǎn)。每個(gè)點(diǎn)的顏色表示該點(diǎn)的連續(xù)標(biāo)簽。
許多可能的回歸模型可以用于這種類型的數(shù)據(jù),但是在這里我們將使用簡單的線性回歸來預(yù)測點(diǎn)數(shù)。 這個(gè)簡單的線性回歸模型假定,如果我們將標(biāo)簽視為第三個(gè)空間維度,我們可以將數(shù)據(jù)擬合為平面。 這是二維數(shù)據(jù)的線性擬合問題的高階推廣。

請注意,這里的特征 1 和 2 的平面與之前的二維圖相同;然而,在這種情況下,我們已經(jīng)通過顏色和 Z 軸位置來表示標(biāo)簽。 從這個(gè)觀點(diǎn)來看,似乎合理的是,這種通過三維數(shù)據(jù)的擬合平面,允許我們預(yù)測任何一組輸入?yún)?shù)的預(yù)期標(biāo)簽。 返回到二維投影,當(dāng)我們擬合這樣的平面時(shí),我們得到如下圖所示的結(jié)果:

這個(gè)擬合平面告訴了我們,我們需要什么來預(yù)測新的點(diǎn)的標(biāo)簽。視覺上,我們在這幅圖中,找到了展示的結(jié)果:

與分類示例一樣,在數(shù)量很少的維度上,這似乎是微不足道的。 但是這些方法的強(qiáng)大之處在于,在數(shù)據(jù)具有許多特征的的情況下,它們可以被直接應(yīng)用和評估。
例如,這類似于計(jì)算通過望遠(yuǎn)鏡觀察到的星系距離的任務(wù) - 在這種情況下,我們可能會(huì)使用以下特征和標(biāo)簽:
特征 1,特征 2,以及其它 --> 每個(gè)星系的亮度,位于幾個(gè)波長或顏色之一
標(biāo)簽:星系的距離或者紅移
這幾個(gè)星系的距離可以通過一組獨(dú)立的(通常更昂貴的)觀測來確定。 然后可以使用合適的回歸模型估計(jì)剩余星系的距離,而不需要在整個(gè)集合中使用更昂貴的觀測。 在天文界,這被稱為“測光紅移”問題。
我們將討論的一些重要的回歸算法是線性回歸(參見線性回歸),支持向量機(jī)(參見支持向量機(jī))和隨機(jī)森林回歸(參見決策樹和隨機(jī)森林)。
聚類:在未標(biāo)記的數(shù)據(jù)上推斷標(biāo)簽
我們剛剛看過的分類和回歸圖解,是監(jiān)督學(xué)習(xí)算法的例子,其中我們正在嘗試構(gòu)建一個(gè)模型,預(yù)測新數(shù)據(jù)的標(biāo)簽。 無監(jiān)督的學(xué)習(xí)涉及不參照任何已知標(biāo)簽來描述數(shù)據(jù)的模型。
無監(jiān)督學(xué)習(xí)的一個(gè)常見情況是“聚類”,其中數(shù)據(jù)被自動(dòng)分配給一些數(shù)量的離散分組。 例如,我們可能有一些二維數(shù)據(jù),如下圖所示:

通過眼睛,很明顯,這些點(diǎn)中的每一個(gè)都是不同組的一部分。 給定該輸入,聚類模型將使用數(shù)據(jù)的內(nèi)在結(jié)構(gòu)來確定哪些點(diǎn)是相關(guān)的。 使用非??焖俸椭庇^的 k-means 算法(參見 K 均值聚類),我們發(fā)現(xiàn)如下圖所示的簇:

k-means 適合由 k 個(gè)簇中心組成的模型; 假設(shè)最優(yōu)中心是將每個(gè)點(diǎn)與其指定中心的距離最小化的中心。 再次,這可能看起來像是二維的微不足道的練習(xí),但隨著數(shù)據(jù)變得越來越復(fù)雜,可以使用這種聚類算法從數(shù)據(jù)集中提取有用的信息。
我們將在 K-Means 聚類中更深入地討論 k-means 算法。 其他重要的聚類算法包括高斯混合模型(參見高斯混合模型)和譜聚類(參見 Scikit-Learn 的聚類文檔)。
降維:推斷未標(biāo)記數(shù)據(jù)的結(jié)構(gòu)
降維是無監(jiān)督算法的另一個(gè)例子,其中標(biāo)簽或其他信息是從數(shù)據(jù)集本身的結(jié)構(gòu)推斷的。 降維比我們以前看到的示例有點(diǎn)更加抽象,但通常它試圖提取一些數(shù)據(jù)的低維表示,以某種方式保留完整數(shù)據(jù)集的相關(guān)質(zhì)量。 不同的降維以不同的方式測量這些相關(guān)的質(zhì)量,我們將在流形學(xué)習(xí)中看到。
作為一個(gè)例子,請考慮下圖所示的數(shù)據(jù):

視覺上,這個(gè)數(shù)據(jù)中有一些結(jié)構(gòu)是清楚的:它是從一維直線上繪制的,這個(gè)直線在這個(gè)二維空間內(nèi)是螺旋排列的。 在某種意義上,您可以說這個(gè)數(shù)據(jù)是“本質(zhì)上”是一維的,盡管這個(gè)一維數(shù)據(jù)嵌入在更高維的空間中。 在這種情況下,合適的降維模型對這種非線性嵌入式結(jié)構(gòu)是敏感的,并能夠拉取出這種低維度表示。
下圖顯示了 Isomap 算法的結(jié)果的可視化,Isomap 算法是一個(gè)專門為此的流形學(xué)習(xí)算法:

請注意,顏色(表示提取的一維潛在變量)沿著螺旋線均勻變化,這表明該算法實(shí)際上檢測到了我們眼睛看到的結(jié)構(gòu)。 與前面的例子一樣,在更高維度的情況下,降維算法的力量變得更加清晰。 例如,我們可能希望可視化具有 100 或 1,000 個(gè)特征的數(shù)據(jù)集中的重要關(guān)系。 可視化 1,000 維數(shù)據(jù)是一個(gè)挑戰(zhàn),一種方法,我們可以使它更易于管理,是使用降維技術(shù)將數(shù)據(jù)減少到二維或三維。
我們將討論的一些重要的降維算法是主成分分析(參見主成分分析)以及各種流形學(xué)習(xí)算法,包括 Isomap 和局部線性嵌入(參見流形學(xué)習(xí))。
總結(jié)
在這里,我們看到了一些機(jī)器學(xué)習(xí)方法的基本類型的簡單例子。不用說,我們已經(jīng)看到了一些重要的實(shí)際細(xì)節(jié),但是我希望這一節(jié)足以給你一個(gè)基本的想法,關(guān)于機(jī)器學(xué)習(xí)方法可以解決什么類型的問題。
總之,我們看到這些:
監(jiān)督學(xué)習(xí):可以根據(jù)標(biāo)記的訓(xùn)練數(shù)據(jù)預(yù)測標(biāo)簽的模型
- 分類:將標(biāo)簽預(yù)測為兩個(gè)或多個(gè)離散類別的模型
- 回歸:預(yù)測連續(xù)標(biāo)簽的模型
無監(jiān)督學(xué)習(xí):識(shí)別未標(biāo)記數(shù)據(jù)中的結(jié)構(gòu)的模型
- 聚類:在數(shù)據(jù)中檢測和識(shí)別不同分組的模型
- 降維:在較高維數(shù)據(jù)中檢測和識(shí)別低維結(jié)構(gòu)的模型
在以下部分中,我們將進(jìn)一步深入分析這些類別,并且可以看到一些更有趣的例子,說明這些概念用于哪些方面。
上述討論中的所有數(shù)據(jù)都是基于實(shí)際的機(jī)器學(xué)習(xí)計(jì)算而生成的;后面的代碼可以在附錄:圖形代碼中找到。