如果你剛剛進(jìn)入數(shù)據(jù)科學(xué)領(lǐng)域,不如從這些算法開始吧
本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)。
機(jī)器學(xué)習(xí)是數(shù)據(jù)科學(xué)領(lǐng)域最重要的子領(lǐng)域之一。1959年,IBM研究人員ArthurSamuel首次使用了機(jī)器學(xué)習(xí)這一術(shù)語(yǔ)。從此以后,機(jī)器學(xué)習(xí)領(lǐng)域引發(fā)了很多人的極大興趣。
當(dāng)你開始數(shù)據(jù)科學(xué)之旅時(shí),遇到的第一個(gè)子領(lǐng)域可能就是機(jī)器學(xué)習(xí)。機(jī)器學(xué)習(xí)是用于描述計(jì)算機(jī)算法集合的名稱,這些算法在運(yùn)行過(guò)程中通過(guò)收集信息不斷進(jìn)行學(xué)習(xí)和改進(jìn)。
機(jī)器學(xué)習(xí)算法都是基于某些數(shù)據(jù)的。最初,該算法通過(guò)一些“訓(xùn)練數(shù)據(jù)”來(lái)建立解決特定問(wèn)題的直覺。一旦算法通過(guò)了學(xué)習(xí)階段,就可以通過(guò)已獲得知識(shí)解決基于不同數(shù)據(jù)集的相似問(wèn)題。
一般而言,機(jī)器學(xué)習(xí)算法分為4類:
- 監(jiān)督算法:在運(yùn)行過(guò)程中需要開發(fā)人員的監(jiān)督。為此,開發(fā)人員可以標(biāo)記訓(xùn)練數(shù)據(jù)并為要遵循的算法設(shè)置嚴(yán)格的規(guī)則和界限。
- 無(wú)監(jiān)督算法:開發(fā)人員不直接控制的算法。在這種情況下,算法的期望結(jié)果是未知的,需要由算法定義。
- 半監(jiān)督算法:該算法結(jié)合了監(jiān)督算法和非監(jiān)督算法的各個(gè)方面。例如,初始化算法時(shí),并非所有訓(xùn)練數(shù)據(jù)都將被標(biāo)記,并且不提供一部分規(guī)則。
- 強(qiáng)化算法:此種類型算法使用了一種稱為探索/開發(fā)的技術(shù)。技術(shù)內(nèi)容很簡(jiǎn)單;機(jī)器執(zhí)行一個(gè)動(dòng)作,觀察結(jié)果,然后在執(zhí)行下一個(gè)動(dòng)作時(shí)考慮這些結(jié)果,依此類推。
以上每種算法都有特定目標(biāo)。例如,監(jiān)督學(xué)習(xí)旨在擴(kuò)展訓(xùn)練數(shù)據(jù)的范圍,并據(jù)此預(yù)測(cè)未來(lái)或新數(shù)據(jù)。另一方面,無(wú)監(jiān)督算法用于組織和篩選數(shù)據(jù)以使其有意義。
每個(gè)類別都有各種旨在執(zhí)行特定任務(wù)的特定算法。本文將介紹每個(gè)數(shù)據(jù)科學(xué)家都必須了解的5種基本算法,內(nèi)容涵蓋機(jī)器學(xué)習(xí)的基礎(chǔ)知識(shí)。
1. 回歸
回歸算法是監(jiān)督算法,用于查找不同變量之間的可能關(guān)系,以了解自變量對(duì)因變量的影響程度??梢詫⒒貧w分析視為一個(gè)方程,例如,假設(shè)有方程y = 2x + z,y是因變量,則x,z是自變量?;貧w分析就是找出x和z在多大程度上影響y的值。
相同的邏輯適用于更高級(jí)和更復(fù)雜的問(wèn)題。對(duì)于各種問(wèn)題,回歸算法的類型也有很多。最常用的前五名可能是:
- 線性回歸:最簡(jiǎn)單的回歸技術(shù)使用線性方法來(lái)描述因變量(預(yù)測(cè)值)和自變量(用于預(yù)測(cè)的值)之間的關(guān)系。
- Logistic回歸:這種類型的回歸用于二進(jìn)制因變量,被廣泛用于分析分類數(shù)據(jù)。
- 嶺回歸:當(dāng)回歸模型變得過(guò)于復(fù)雜時(shí),嶺回歸會(huì)校正模型系數(shù)的大小。
- Lasso回歸:Lasso(最小絕對(duì)收縮選擇器運(yùn)算符)回歸用于選擇變量并對(duì)其正則化。
- 多項(xiàng)式回歸:這種類型的算法用于擬合非線性數(shù)據(jù)。使用時(shí)最好的預(yù)測(cè)不是直線,而是一條試圖擬合所有數(shù)據(jù)點(diǎn)的曲線。
2. 分類
機(jī)器學(xué)習(xí)中的分類是基于預(yù)分類的訓(xùn)練數(shù)據(jù)集將項(xiàng)歸類的過(guò)程。分類被認(rèn)為是監(jiān)督學(xué)習(xí)算法的一種。這些算法利用訓(xùn)練數(shù)據(jù)的分類結(jié)果,計(jì)算出新的項(xiàng)落入已定義類別之一的概率。分類算法的一個(gè)著名示例是將傳入的電子郵件分為垃圾郵件或非垃圾郵件。
分類算法有多種類型,最常用的有:
- K近鄰:KNN是一種使用訓(xùn)練數(shù)據(jù)集來(lái)查找某些數(shù)據(jù)集中的k個(gè)最接近數(shù)據(jù)點(diǎn)的算法。
- 決策樹:可將其視為流程圖,將每個(gè)數(shù)據(jù)點(diǎn)一次分為兩類,然后再分為兩類,依此類推。
- 樸素貝葉斯:此算法使用條件概率規(guī)則計(jì)算項(xiàng)屬于特定類別的概率。
- 支持向量機(jī)(SVM):在此算法中,根據(jù)數(shù)據(jù)的極性程度對(duì)數(shù)據(jù)進(jìn)行分類,這可能超出X / Y預(yù)測(cè)范圍。
圖源:Google
3. 集成
集成算法通過(guò)將兩個(gè)或多個(gè)其他機(jī)器學(xué)習(xí)算法的預(yù)測(cè)結(jié)合來(lái)得到更準(zhǔn)確的結(jié)果。可以通過(guò)投票或平均結(jié)果來(lái)組合結(jié)果。投票通常在分類過(guò)程中使用,而平均則在回歸過(guò)程中使用。
集成算法有3種基本類型:Bagging、Boosting、以及Stacking。
- Bagging:在Bagging中,算法在大小相同的不同訓(xùn)練集上并行運(yùn)行,然后使用相同的數(shù)據(jù)集測(cè)試所有算法,并投票確定總體結(jié)果。
- Boosting:在Boosting的情況下,算法按順序運(yùn)行,然后使用加權(quán)投票選擇總體結(jié)果。
- Stacking:顧名思義,Stacking包含兩個(gè)層次,初級(jí)學(xué)習(xí)器是算法的組合,次級(jí)學(xué)習(xí)器是基于基礎(chǔ)層次結(jié)果的元算法。
4. 聚類
聚類算法是一組用于對(duì)數(shù)據(jù)點(diǎn)進(jìn)行分組的無(wú)監(jiān)督算法 同一聚類中的點(diǎn)比不同聚類中的點(diǎn)彼此之間更相似。聚類算法有4種類型:
- 基于質(zhì)心的聚類:此聚類算法根據(jù)初始條件和異常值將數(shù)據(jù)組織到類中。基于質(zhì)心的聚類算法中用的最多的就是k均值。
- 基于密度的聚類:在這種聚類類型中,該算法將高密度區(qū)域連接到聚類中以創(chuàng)建任意形狀的分布。
- 基于分布的聚類:此聚類算法假定數(shù)據(jù)由概率分布組成,然后將數(shù)據(jù)聚類為該分布的各種版本。
- 層次聚類:此算法創(chuàng)建了一個(gè)層次數(shù)據(jù)簇的樹,可以通過(guò)在正確的級(jí)別上切割樹來(lái)改變簇的數(shù)量。
5. 關(guān)聯(lián)
關(guān)聯(lián)算法是無(wú)監(jiān)督算法,用于發(fā)現(xiàn)某些項(xiàng)在特定數(shù)據(jù)集中一起出現(xiàn)的概率,主要用于購(gòu)物籃分析。最常用的關(guān)聯(lián)算法是Apriori。Apriori算法是交易數(shù)據(jù)庫(kù)中常用的挖掘算法。Apriori用于挖掘頻繁項(xiàng)集,并從那些項(xiàng)集生成一些關(guān)聯(lián)規(guī)則。
例如,如果一個(gè)人購(gòu)買牛奶和面包,那么他也可能會(huì)買一些雞蛋。這可以從各個(gè)顧客的先前購(gòu)買記錄得出。然后算法算出這些項(xiàng)被一起購(gòu)買的頻繁程度,根據(jù)針對(duì)該置信度的特定閾值來(lái)形成關(guān)聯(lián)規(guī)則。
圖源:Google
機(jī)器學(xué)習(xí)是數(shù)據(jù)科學(xué)中最著名、研究最深入的子領(lǐng)域之一。人們也一直在開發(fā)新的機(jī)器學(xué)習(xí)算法,以達(dá)到更高的準(zhǔn)確性和更快的執(zhí)行速度。無(wú)論采用哪種算法,通常都可以將其歸為以下四類之一:有監(jiān)督、無(wú)監(jiān)督、半監(jiān)督和增強(qiáng)算法。每個(gè)算法的用途都不一樣。
這些算法經(jīng)過(guò)了深入研究和廣泛使用,你只需要了解如何使用它,而不是如何實(shí)現(xiàn)它。大多數(shù)著名的Python機(jī)器學(xué)習(xí)模塊(例如ScikitLearn)都包含大多數(shù)(如果不是全部)這些算法的預(yù)定義版本。
了解其原理后,趕緊掌握用法并開始用起來(lái)吧。