機(jī)器學(xué)習(xí)正在改變世界。谷歌使用機(jī)器學(xué)習(xí)向用戶推薦搜索結(jié)果?.NETflix 使用它來推薦電影供您觀看。Facebook 使用機(jī)器學(xué)習(xí)來推薦您可能認(rèn)識的人。
機(jī)器學(xué)習(xí)從未如此重要。同時,理解機(jī)器學(xué)習(xí)也很困難。該領(lǐng)域充滿了行話。并且不同的機(jī)器學(xué)習(xí)算法的數(shù)量每年都在增長。
本文將向您介紹機(jī)器學(xué)習(xí)領(lǐng)域的基本概念。更具體地說,我們將討論今天最重要的 9 種機(jī)器學(xué)習(xí)算法背后的基本概念。
推薦系統(tǒng)
什么是推薦系統(tǒng)?
推薦系統(tǒng)用于在數(shù)據(jù)集中找到相似的條目。
也許最常見的真實(shí)世界推薦示例存在于 Netflix 內(nèi)部。更具體地說,其視頻流服務(wù)將根據(jù)您已經(jīng)觀看的內(nèi)容推薦推薦的電影和電視節(jié)目。
另一個推薦系統(tǒng)是 Facebook 的“您可能認(rèn)識的人”功能,它根據(jù)您現(xiàn)有的朋友列表為您推薦可能的朋友。完全開發(fā)和部署的推薦系統(tǒng)非常復(fù)雜。它們也非常耗費(fèi)資源。
推薦系統(tǒng)和線性代數(shù)
成熟的推薦系統(tǒng)需要深厚的線性代數(shù)背景才能從頭開始構(gòu)建。
因此,如果您以前從未學(xué)習(xí)過線性代數(shù),則本節(jié)中可能會有一些您不理解的概念。
不過不用擔(dān)心—scikit-learn Python/ target=_blank class=infotextkey>Python 庫讓構(gòu)建推薦系統(tǒng)變得非常容易。S0 你不需要太多的線性代數(shù)背景來構(gòu)建現(xiàn)實(shí)世界的推薦系統(tǒng)。
推薦系統(tǒng)如何工作?
推薦系統(tǒng)主要有兩種類型:
基于內(nèi)容的推薦系統(tǒng)
協(xié)同過濾推薦系統(tǒng)
基于內(nèi)容的推薦系統(tǒng)根據(jù)項目與您已經(jīng)使用過的項目的相似性為您提供建議。它們的行為與您期望推薦系統(tǒng)的行為完全相同。
協(xié)同過濾推薦系統(tǒng)基于用戶與項目交互的知識產(chǎn)生推薦。換句話說,他們利用群眾的智慧。(因此在其名稱中使用了“群體協(xié)作”一詞。)
在現(xiàn)實(shí)世界中,協(xié)同過濾推薦系統(tǒng)比基于內(nèi)容的系統(tǒng)更常見。這主要是因為它們通常會提供更好的結(jié)果。一些從業(yè)者還發(fā)現(xiàn)協(xié)同過濾推薦系統(tǒng)更容易理解。
協(xié)同過濾推薦系統(tǒng)還具有基于內(nèi)容的系統(tǒng)所缺少的獨(dú)特功能。也就是說,他們有能力自己學(xué)習(xí)特征。
這意味著他們甚至可以根據(jù)您甚至沒有告訴他們考慮的屬性開始識別項目之間的相似性。
協(xié)同過濾中有兩個子類別:
基于記憶的協(xié)同過濾
基于模型的協(xié)同過濾
您無需了解這兩種類型的協(xié)同過濾推薦系統(tǒng)之間的區(qū)別即可在機(jī)器學(xué)習(xí)中取得成功。認(rèn)識到存在多種類型就足夠了。
部分總結(jié)
以下是我們在本教程中討論的關(guān)于推薦系統(tǒng)的內(nèi)容的簡要總結(jié):
現(xiàn)實(shí)世界中的推薦系統(tǒng)示例
不同類型的推薦系統(tǒng),以及協(xié)同過濾系統(tǒng)如何比基于內(nèi)容的推薦系統(tǒng)更常用
推薦系統(tǒng)與線性代數(shù)的關(guān)系
線性回歸
線性回歸y用于根據(jù)另一組值的值來預(yù)測某些x值。
線性回歸的歷史
線性回歸由Francis Galton在 1800 年代創(chuàng)建。
高爾頓是一位研究父母與孩子之間關(guān)系的科學(xué)家。更具體地說,高爾頓正在調(diào)查父親的身高和兒子的身高之間的關(guān)系。
高爾頓的第一個發(fā)現(xiàn)是兒子的身高往往與父親大致相同。這并不奇怪。
后來,高爾頓發(fā)現(xiàn)了更有趣的事情。兒子的身高往往比他自己的父親更接近所有人的平均身高 。
高爾頓給這種現(xiàn)象起了一個名字:回歸。具體來說,他說“父親的兒子的身高趨向于回歸(或趨向)平均(平均)身高”。這導(dǎo)致了統(tǒng)計和機(jī)器學(xué)習(xí)的整個領(lǐng)域,稱為回歸。
線性回歸的數(shù)學(xué)
在創(chuàng)建回歸模型時,我們要做的就是繪制一條盡可能接近數(shù)據(jù)集中每個點(diǎn)的線。
這方面的典型例子是線性回歸的“最小二乘法”,它只計算一條直線在上下方向的接近度。
這是一個示例來幫助說明這一點(diǎn):
最小二乘回歸背后的數(shù)學(xué)示例
當(dāng)您創(chuàng)建回歸模型時,您的最終產(chǎn)品是一個方程,您可以使用它來預(yù)測 x 值的 y 值,而無需事先實(shí)際知道 y 值。
邏輯回歸
邏輯回歸類似于線性回歸,只是它不是計算數(shù)值y,而是估計數(shù)據(jù)點(diǎn)屬于哪個類別。
什么是邏輯回歸?
邏輯回歸是一種用于解決分類問題的機(jī)器學(xué)習(xí)模型。
以下是機(jī)器學(xué)習(xí)分類問題的一些示例:
垃圾郵件(垃圾郵件還是非垃圾郵件?)
汽車保險索賠(注銷或維修?)
疾病診斷
每個分類問題都有兩個類別,這使它們成為二元分類問題的示例。
邏輯回歸非常適合解決二元分類問題—我們只需為不同的類別分別分配0和的值1。
為什么我們需要邏輯回歸?
因為您不能使用線性回歸模型進(jìn)行二元分類預(yù)測。它不會導(dǎo)致很好的擬合,因為您試圖通過只有兩個可能值的數(shù)據(jù)集擬合一條直線。
這張圖片可以幫助你理解為什么線性回歸模型不適合二元分類問題:
線性回歸分類
在該圖像中,y-axis表示腫瘤為惡性的概率。相反,該值1-y表示腫瘤不是惡性的概率。如您所見,線性回歸模型在預(yù)測數(shù)據(jù)集中大多數(shù)觀察的概率方面做得很差。
這就是邏輯回歸模型有用的原因。它們對最佳擬合線有一個彎曲,這使它們更適合預(yù)測分類數(shù)據(jù)。
這是一個使用相同訓(xùn)練數(shù)據(jù)將線性回歸模型與邏輯回歸模型進(jìn)行比較的示例:
邏輯回歸模型的曲線有彎曲的原因是因為它不是使用線性方程計算的。相反,邏輯回歸模型是使用 Sigmoid 函數(shù)(也稱為邏輯函數(shù),因為它用于邏輯回歸)構(gòu)建的。
您無需記住Sigmoid 函數(shù)即可在機(jī)器學(xué)習(xí)中取得成功。話雖如此,對它的外觀有所了解是很有用的。
Sigmoid 函數(shù)值得理解的主要特點(diǎn)是:無論你傳入什么值,它總是會產(chǎn)生一個介于 0 和 1 之間的輸出。
使用邏輯回歸模型進(jìn)行預(yù)測
要使用線性回歸模型進(jìn)行預(yù)測,通常需要指定一個截止點(diǎn)。這個截止點(diǎn)通常是0.5。
讓我們使用我們早期圖像中的癌癥診斷示例來查看實(shí)踐中的這一原理。如果邏輯回歸模型輸出的值低于 0.5,則數(shù)據(jù)點(diǎn)被歸類為非惡性腫瘤。同樣,如果 Sigmoid 函數(shù)輸出的值高于 0.5,則腫瘤將被歸類為惡性。
混淆矩陣可用作比較機(jī)器學(xué)習(xí)中的真陽性、真陰性、假陽性和假陰性的工具。
混淆矩陣在用于衡量邏輯回歸模型的性能時特別有用。以下是我們?nèi)绾问褂没煜仃嚨氖纠?/section>
在此圖中,TN 代表“真陰性”,F(xiàn)N 代表“假陰性”。
混淆矩陣可用于評估您的模型在混淆矩陣的特定象限中是否特別弱。例如,它可能有異常多的誤報。
它在某些應(yīng)用程序中也很有幫助,以確保您的模型在混淆矩陣的特別危險區(qū)域中表現(xiàn)良好。例如,在這個癌癥示例中,您需要非常確定您的模型沒有很高的假陰性率,因為這表明某人患有您錯誤地歸類為非惡性的惡性腫瘤。
部分總結(jié)
在本節(jié)中,您首次接觸了邏輯回歸機(jī)器學(xué)習(xí)模型。
以下是您對邏輯回歸所學(xué)知識的簡要總結(jié):
-
-
邏輯函數(shù)(也稱為 Sigmoid 函數(shù))始終輸出介于 0 和 1 之間的值
-
如何使用邏輯回歸機(jī)器學(xué)習(xí)模型使用截止點(diǎn)進(jìn)行預(yù)測
-
K-最近鄰
K-最近鄰算法可以幫助您解決兩個以上類別的分類問題。
K近鄰算法是一種基于簡單原理的分類算法。其實(shí)原理很簡單,最好通過例子來理解。
想象一下,您有足球運(yùn)動員和籃球運(yùn)動員的身高和體重數(shù)據(jù)。K-最近鄰算法可用于預(yù)測新運(yùn)動員是足球運(yùn)動員還是籃球運(yùn)動員。
為此,K-最近鄰算法識別K最接近新觀測值的數(shù)據(jù)點(diǎn)。
在此圖像中,足球運(yùn)動員被標(biāo)記為藍(lán)色數(shù)據(jù)點(diǎn),籃球運(yùn)動員被標(biāo)記為橙色點(diǎn)。我們試圖分類的數(shù)據(jù)點(diǎn)被標(biāo)記為綠色。
由于新數(shù)據(jù)點(diǎn)的大多數(shù)(3 個中的 2 個)數(shù)據(jù)點(diǎn)是藍(lán)色足球運(yùn)動員,因此 K-最近鄰算法將預(yù)測新數(shù)據(jù)點(diǎn)也是一名足球運(yùn)動員。
構(gòu)建 K-最近鄰算法的步驟
計算新數(shù)據(jù)點(diǎn)到數(shù)據(jù)集中所有其他點(diǎn)的歐幾里得距離x
按距離遞增的順序?qū)?shù)據(jù)集中的點(diǎn)進(jìn)行排序x
K使用與大多數(shù)最接近的數(shù)據(jù)點(diǎn)相同的類別進(jìn)行預(yù)測x
K 在 K-最近鄰算法中的重要性
雖然從一開始可能并不明顯,但K在 K 近鄰算法中更改 的值將改變新點(diǎn)分配到的類別。
更具體地說,具有非常低的K值將導(dǎo)致您的模型完美地預(yù)測您的訓(xùn)練數(shù)據(jù)并且很差地預(yù)測您的測試數(shù)據(jù)。同樣,值太高K會使您的模型變得不必要地復(fù)雜。
為了結(jié)束對 K 近鄰算法的介紹,我想簡要討論使用該模型的一些優(yōu)缺點(diǎn)。
以下是 K-最近鄰算法的一些主要優(yōu)點(diǎn):
在新的訓(xùn)練數(shù)據(jù)上訓(xùn)練模型是微不足道的
向數(shù)據(jù)集中添加更多數(shù)據(jù)很容易
該模型只接受兩個參數(shù):K以及您想使用的距離度量(通常是歐幾里得距離)
進(jìn)行預(yù)測的計算成本很高,因為您需要對整個數(shù)據(jù)集進(jìn)行排序
以下是您剛剛了解的 k 近鄰算法的簡要總結(jié):
-
K-最近鄰算法可以解決的分類問題(足球運(yùn)動員與籃球運(yùn)動員)示例
-
K-最近鄰如何使用相鄰數(shù)據(jù)點(diǎn)的歐幾里得距離來預(yù)測新數(shù)據(jù)點(diǎn)屬于哪個類別
-
-
決策樹和隨機(jī)森林
更具體地說,決策樹是機(jī)器學(xué)習(xí)模型,用于通過逐個循環(huán)遍歷數(shù)據(jù)集中的每個特征來進(jìn)行預(yù)測。隨機(jī)森林是決策樹的集合,它使用數(shù)據(jù)集中特征的隨機(jī)順序。
在我們深入研究機(jī)器學(xué)習(xí)中樹方法的理論基礎(chǔ)之前,從一個例子開始會很有幫助。
想象一下,你每周一都打籃球。而且,你總是邀請同一個朋友來和你一起玩。
是否來的決定取決于許多因素,如天氣、溫度、風(fēng)和疲勞。您開始注意到這些功能,并開始跟蹤它們以及您朋友是否玩的決定。
您可以使用這些數(shù)據(jù)來預(yù)測您的朋友是否會來打籃球。您可以使用的一種技術(shù)是決策樹。下面是這個決策樹的樣子:
Nodes: 樹根據(jù)某些屬性的值分裂的位置
Edges: 分裂到下一個節(jié)點(diǎn)的結(jié)果
您可以在上圖中看到 和的outlook節(jié)點(diǎn)。這些屬性中的每一個的每個潛在價值都有一個優(yōu)勢。humiditywindy
以下是您在繼續(xù)之前應(yīng)該了解的另外兩個決策樹術(shù)語:
Root: 執(zhí)行第一次拆分的節(jié)點(diǎn)
Leaves: 預(yù)測最終結(jié)果的終端節(jié)點(diǎn)
您現(xiàn)在對什么是決策樹有了基本的了解。我們將在下一節(jié)學(xué)習(xí)如何從頭開始構(gòu)建決策樹。
構(gòu)建決策樹比您想象的要難。這是因為決定將數(shù)據(jù)拆分到哪些特征(這是屬于熵和信息增益領(lǐng)域的主題)是一個數(shù)學(xué)上復(fù)雜的問題。
為了解決這個問題,機(jī)器學(xué)習(xí)從業(yè)者通常使用許多決策樹,使用隨機(jī)選擇的特征樣本作為分割。換句話說,在每次拆分時為每棵樹選擇一個新的隨機(jī)特征樣本。這種技術(shù)稱為隨機(jī)森林。
通常,從業(yè)者通常選擇特征隨機(jī)樣本的大小(表示為m)作為數(shù)據(jù)集中總特征數(shù)的平方根(表示為p)。簡而言之,m是 的平方根p,然后從 中隨機(jī)選擇一個特定的特征m。
如果現(xiàn)在這不完全有意義,請不要擔(dān)心。當(dāng)你最終建立你的第一個隨機(jī)森林模型時會更清楚。
使用隨機(jī)森林的好處
想象一下,您正在使用具有一個非常強(qiáng)大功能的數(shù)據(jù)集。換句話說,數(shù)據(jù)集有一個特征比數(shù)據(jù)集中的其他特征更能預(yù)測最終結(jié)果。
如果您手動構(gòu)建決策樹,那么使用此功能作為決策樹的頂部拆分是有意義的。這意味著您將擁有多個預(yù)測高度相關(guān)的樹。
我們希望避免這種情況,因為取高度相關(guān)變量的平均值不會顯著減少方差。通過為隨機(jī)森林中的每棵樹隨機(jī)選擇特征,這些樹變得去相關(guān)并且結(jié)果模型的方差減少了。這種去相關(guān)是使用隨機(jī)森林而不是手工決策樹的主要優(yōu)勢
部分總結(jié)
以下是您在本文中學(xué)到的有關(guān)決策樹和隨機(jī)森林的簡要總結(jié):
決策樹的元素:nodes、edges、roots和leaves
隨機(jī)抽取決策樹特征樣本如何讓我們建立隨機(jī)森林
為什么使用隨機(jī)森林去相關(guān)變量有助于減少最終模型的方差
支持向量機(jī)
支持向量機(jī)是分類算法(盡管從技術(shù)上講,它們也可用于解決回歸問題),通過切分類別之間的最大差距將數(shù)據(jù)集劃分為類別。稍后將通過可視化使這個概念更加清晰。
支持向量機(jī)(或簡稱 SVM)是有監(jiān)督的機(jī)器學(xué)習(xí)模型,具有分析數(shù)據(jù)和識別模式的相關(guān)學(xué)習(xí)算法。
支持向量機(jī)可用于分類問題和回歸問題。在本文中,我們將專門研究使用支持向量機(jī)解決分類問題。
給定一組訓(xùn)練示例——每個訓(xùn)練示例都被標(biāo)記為屬于兩個類別之一——支持向量機(jī)訓(xùn)練算法構(gòu)建一個模型。該模型將新示例分配到兩個類別之一。這使得支持向量機(jī)成為非概率二元線性分類器。
更具體地說,SVM 模型將數(shù)據(jù)點(diǎn)映射為空間中的點(diǎn)并劃分單獨(dú)的類別,以便將它們劃分為盡可能寬的開放間隙。新數(shù)據(jù)點(diǎn)被預(yù)測屬于基于它們屬于差距的哪一側(cè)的類別。這是一個可視化示例,可以幫助您理解支持向量機(jī)背后的直覺:
如您所見,如果一個新的數(shù)據(jù)點(diǎn)落在綠線的左側(cè),它將被標(biāo)記為紅色類別。同樣,如果一個新數(shù)據(jù)點(diǎn)落在綠線的右側(cè),它將被標(biāo)記為屬于藍(lán)色類別。
這條綠線稱為超平面,它是支持向量機(jī)算法的重要詞匯。
在該圖中,超平面被標(biāo)記為最優(yōu)超平面。支持向量機(jī)理論將最優(yōu)超平面定義為使每個類別中最接近的數(shù)據(jù)點(diǎn)之間的邊距最大化的超平面。
如您所見,邊緣線實(shí)際上觸及三個數(shù)據(jù)點(diǎn)——兩個來自紅色類別,一個來自藍(lán)色類別。這些接觸邊緣線的數(shù)據(jù)點(diǎn)稱為支持向量,并且是支持向量機(jī)得名的地方。
部分總結(jié)
以下是您剛剛了解的支持向量機(jī)的簡要總結(jié):
支持向量機(jī)是監(jiān)督機(jī)器學(xué)習(xí)算法的一個例子
支持向量機(jī)如何使用超平面對數(shù)據(jù)點(diǎn)進(jìn)行分類,從而最大化數(shù)據(jù)集中類別之間的邊距
在支持向量機(jī)中接觸邊緣線的數(shù)據(jù)點(diǎn)稱為支持向量。這些數(shù)據(jù)點(diǎn)是支持向量機(jī)名稱的來源。
K-Means 聚類
K-means 聚類是一種機(jī)器學(xué)習(xí)算法,可讓您識別數(shù)據(jù)集中的相似數(shù)據(jù)段。
K-means 聚類是一種無監(jiān)督機(jī)器學(xué)習(xí)算法。
這意味著它會接收未標(biāo)記的數(shù)據(jù),并將嘗試在您的數(shù)據(jù)中將類似的觀察聚類分組在一起。
K-means 聚類算法對于解決實(shí)際問題非常有用。以下是此機(jī)器學(xué)習(xí)模型的一些用例:
亞馬遜、UPS 或 FedEx 等公司的配送路線優(yōu)化
識別城市內(nèi)的犯罪中心并做出反應(yīng)
預(yù)測和預(yù)防網(wǎng)絡(luò)犯罪
K 均值聚類算法的主要目標(biāo)是將數(shù)據(jù)集劃分為不同的組,以使每組內(nèi)的觀察結(jié)果彼此相似。
我們將在本教程的下一部分探討 K-means 聚類背后的數(shù)學(xué)。
K-Means 聚類算法如何工作?
運(yùn)行 K-means 聚類算法的第一步是選擇您希望將數(shù)據(jù)劃分到的聚類數(shù)量。該聚類數(shù)是K算法名稱中引用的值。
在 K-means 聚類算法中選擇K值是一個重要的選擇。K我們將在本文后面更多地討論如何選擇合適的值。
接下來,您必須將數(shù)據(jù)集中的每個點(diǎn)隨機(jī)分配給一個隨機(jī)集群。這給出了我們的初始分配,然后您運(yùn)行以下迭代,直到集群停止更改:
通過獲取該集群內(nèi)點(diǎn)的平均向量來計算每個集群的質(zhì)心
將每個數(shù)據(jù)點(diǎn)重新分配給具有最近質(zhì)心的集群
這是一個動畫,它在實(shí)踐中如何用于K值為 的K-means 聚類算法3。您可以看到由黑色+字符表示的每個簇的質(zhì)心。K 均值聚類算法的可視化
如您所見,此迭代一直持續(xù)到集群停止更改——這意味著不再將數(shù)據(jù)點(diǎn)分配給新集群。
為 K-means 聚類算法選擇一個合適的K值實(shí)際上是相當(dāng)困難的。K選擇“最佳”值沒有“正確”答案。
機(jī)器學(xué)習(xí)從業(yè)者經(jīng)常使用的一種方法稱為肘法。
要使用肘部方法,您需要做的第一件事是為一組值的 K 均值聚類算法計算平方誤差之和 (SSE) K。K 均值聚類算法中的 SSE 定義為聚類中每個數(shù)據(jù)點(diǎn)與該聚類質(zhì)心之間的平方距離之和。
接下來,您將要針對這些不同的K值生成 SSE 圖。您將看到誤差隨著K值的增加而減小。
這是有道理的——您在數(shù)據(jù)集中創(chuàng)建的類別越多,每個數(shù)據(jù)點(diǎn)就越有可能靠近其特定集群的中心。
話雖如此,肘法背后的想法是選擇一個值,K在該值上 SSE 會突然減緩其下跌速度。elbow這種突然的下降在圖中產(chǎn)生了一個。
例如,這里是 SSE 對K. 在這種情況下,肘部方法建議使用K大約 的值6。
K 均值聚類算法的可視化
重要的6是,這只是對使用價值的估計K。K-means 聚類算法中從來沒有“最佳”K值。與機(jī)器學(xué)習(xí)領(lǐng)域的許多事情一樣,這是一個高度依賴于情況的決定。
部分總結(jié)
以下是您在本文中學(xué)到的內(nèi)容的簡要總結(jié):
K-means 聚類算法能夠解決的無監(jiān)督機(jī)器學(xué)習(xí)問題示例
如何使用肘法K在 K-means 聚類模型中選擇合適的值
主成分分析
主成分分析用于將多特征數(shù)據(jù)集轉(zhuǎn)換為具有較少特征的轉(zhuǎn)換數(shù)據(jù)集,其中每個新特征都是預(yù)先存在的特征的線性組合。這個轉(zhuǎn)換后的數(shù)據(jù)集旨在更簡單地解釋原始數(shù)據(jù)集的大部分方差。
什么是主成分分析?
主成分分析是一種機(jī)器學(xué)習(xí)技術(shù),用于檢查變量集之間的相互關(guān)系。
換句話說,主成分分析研究變量集以識別這些變量的基本結(jié)構(gòu)。
基于此描述,您可能會認(rèn)為主成分分析與線性回歸非常相似。
事實(shí)并非如此。事實(shí)上,這兩種技術(shù)有一些重要的區(qū)別。
線性回歸與主成分分析的區(qū)別
線性回歸通過數(shù)據(jù)集確定最佳擬合線。主成分分析確定了幾條最適合數(shù)據(jù)集的正交線。
如果您不熟悉術(shù)語正交,它僅表示這些線彼此成直角(90 度) - 就像地圖上的北、東、南和西一樣。
讓我們考慮一個示例來幫助您更好地理解這一點(diǎn)。
在此圖像中,x 軸主成分示例了數(shù)據(jù)集中 73% 的方差。y 軸主成分解釋了數(shù)據(jù)集中約 23% 的方差。
這意味著數(shù)據(jù)集中仍有 4% 的方差無法解釋。您可以通過在分析中添加更多主成分來進(jìn)一步減少此數(shù)字。