![]() 今天和大家分享一下機(jī)器學(xué)習(xí)中常見的六種分類算法:K近鄰、決策樹、樸素貝葉斯、邏輯回歸、支持向量機(jī)、隨機(jī)森林、AdaBoost、GBDT、XGBoost。 下面,介紹了各個(gè)算法的概念及特點(diǎn)。
01 K 近鄰(KNN)k-近鄰算法(K-Nearest neighbors,KNN),它采用測(cè)量不同特征值之間的距離方法進(jìn)行分類,即是給定一個(gè)訓(xùn)練數(shù)據(jù)集,對(duì)新的輸入實(shí)例,在訓(xùn)練數(shù)據(jù)集中找到與該實(shí)例最鄰近的K個(gè)實(shí)例(也就是上面所說的K個(gè)鄰居), 這K個(gè)實(shí)例的多數(shù)屬于某個(gè)類,就把該輸入實(shí)例分類到這個(gè)類中。 KNN 是一種基本分類與回歸方法,其基本做法是:給定測(cè)試實(shí)例,基于某種距離度量找出訓(xùn)練集中與其最靠近的k個(gè)實(shí)例點(diǎn),然后基于這k個(gè)最近鄰的信息來進(jìn)行預(yù)測(cè)。 通常,在分類任務(wù)中可使用“投票法”,即選擇這k個(gè)實(shí)例中出現(xiàn)最多的標(biāo)記類別作為預(yù)測(cè)結(jié)果;在回歸任務(wù)中可使用“平均法”,即將這k個(gè)實(shí)例的實(shí)值輸出標(biāo)記的平均值作為預(yù)測(cè)結(jié)果;還可基于距離遠(yuǎn)近進(jìn)行加權(quán)平均或加權(quán)投票,距離越近的實(shí)例權(quán)重越大。 k近鄰法不具有顯式的學(xué)習(xí)過程,事實(shí)上,它是懶惰學(xué)習(xí)(lazy learning)的著名代表,此類學(xué)習(xí)技術(shù)在訓(xùn)練階段僅僅是把樣本保存起來,訓(xùn)練時(shí)間開銷為零,待收到測(cè)試樣本后再進(jìn)行處理。 k近鄰法的三要素:距離度量、k值的選擇及分類決策規(guī)則是k近鄰法的三個(gè)基本要素。 kNN 算法特點(diǎn): 優(yōu)點(diǎn):精度高、對(duì)異常值不敏感、無數(shù)據(jù)輸入假定 缺點(diǎn):計(jì)算復(fù)雜度高、空間復(fù)雜度高 適用數(shù)據(jù)范圍:數(shù)值型和標(biāo)稱型 02 決策樹決策樹(Decision Trees)是一種非參監(jiān)督學(xué)習(xí)方法,即沒有固定的參數(shù),對(duì)數(shù)據(jù)進(jìn)行分類或回歸學(xué)習(xí)。決策樹的目標(biāo)是從已知數(shù)據(jù)中學(xué)習(xí)得到一套規(guī)則,能夠通過簡單的規(guī)則判斷,對(duì)未知數(shù)據(jù)進(jìn)行預(yù)測(cè)。 決策樹是一種基本的分類與回歸方法。在分類問題中,表示基于特征對(duì)實(shí)例進(jìn)行分類的過程,可以認(rèn)為是 if-then 的集合,也可以認(rèn)為是定義在特征空間與類空間上的條件概率分布。 決策樹通常有三個(gè)步驟:特征選擇、決策樹的生成、決策樹的修剪。 用決策樹分類:從根節(jié)點(diǎn)開始,對(duì)實(shí)例的某一特征進(jìn)行測(cè)試,根據(jù)測(cè)試結(jié)果將實(shí)例分配到其子節(jié)點(diǎn),此時(shí)每個(gè)子節(jié)點(diǎn)對(duì)應(yīng)著該特征的一個(gè)取值,如此遞歸的對(duì)實(shí)例進(jìn)行測(cè)試并分配,直到到達(dá)葉節(jié)點(diǎn),最后將實(shí)例分到葉節(jié)點(diǎn)的類中。 決策樹學(xué)習(xí)的目標(biāo):根據(jù)給定的訓(xùn)練數(shù)據(jù)集構(gòu)建一個(gè)決策樹模型,使它能夠?qū)?shí)例進(jìn)行正確的分類。 決策樹學(xué)習(xí)的本質(zhì):從訓(xùn)練集中歸納出一組分類規(guī)則,或者說是由訓(xùn)練數(shù)據(jù)集估計(jì)條件概率模型。 決策樹學(xué)習(xí)的損失函數(shù):正則化的極大似然函數(shù)。 決策樹學(xué)習(xí)的測(cè)試:最小化損失函數(shù)。 決策樹原理和問答猜測(cè)結(jié)果游戲相似,根據(jù)一系列數(shù)據(jù),然后給出游戲的答案。 決策樹算法特點(diǎn): 優(yōu)點(diǎn):計(jì)算復(fù)雜度不高,輸出結(jié)果易于理解,對(duì)中間值的缺失不敏感,可以處理不相關(guān)特征數(shù)據(jù)。 缺點(diǎn):可能會(huì)產(chǎn)生過度匹配問題。 適用數(shù)據(jù)類型:數(shù)值型和標(biāo)稱型 03 樸素貝葉斯樸素貝葉斯(Naive Bayesian)是基于貝葉斯定理和特征條件獨(dú)立假設(shè)的分類方法,它通過特征計(jì)算分類的概率,選取概率大的情況進(jìn)行分類。 樸素貝葉斯是經(jīng)典的機(jī)器學(xué)習(xí)算法之一,也是為數(shù)不多的基于概率論的分類算法。對(duì)于大多數(shù)的分類算法,在所有的機(jī)器學(xué)習(xí)分類算法中,樸素貝葉斯和其他絕大多數(shù)的分類算法都不同。比如決策樹,KNN,邏輯回歸,支持向量機(jī)等,他們都是判別方法,也就是直接學(xué)習(xí)出特征輸出Y和特征X之間的關(guān)系,要么是決策函數(shù),要么是條件分布。但是樸素貝葉斯卻是生成方法,該算法原理簡單,也易于實(shí)現(xiàn)。 樸素貝葉斯。 在scikit-learn中,一共有3個(gè)樸素貝葉斯的分類算法類。分別是GaussianNB,MultinomialNB和BernoulliNB。其中GaussianNB就是先驗(yàn)為高斯分布的樸素貝葉斯,MultinomialNB就是先驗(yàn)為多項(xiàng)式分布的樸素貝葉斯,而BernoulliNB就是先驗(yàn)為伯努利分布的樸素貝葉斯。 樸素貝葉斯算法特點(diǎn): 優(yōu)點(diǎn):在數(shù)據(jù)較少的情況下依然有效,可以處理多類別問題。 缺點(diǎn):對(duì)于輸入數(shù)據(jù)的準(zhǔn)備方式較為敏感。 適用數(shù)據(jù)類型:標(biāo)稱型數(shù)據(jù) 04 邏輯回歸邏輯(Logistic) 回歸是一種統(tǒng)計(jì)方法,用于根據(jù)先前的觀察結(jié)果預(yù)測(cè)因變量的結(jié)果。它是一種回歸分析,是解決二分類問題的常用算法。 邏輯回歸算法特點(diǎn): 優(yōu)點(diǎn):計(jì)算代價(jià)不高,易于理解和實(shí)現(xiàn) 缺點(diǎn):容易欠擬合,分類精度可能不高(這里是使用構(gòu)造數(shù)據(jù),效果較佳,并且運(yùn)行多次,結(jié)果可能不一樣) 05 支持向量機(jī)(SVM)支持向量機(jī)(簡稱SVM)英文為Support Vector Machine。它是一 種監(jiān)督式學(xué)習(xí)的方法,它廣泛的應(yīng)用于統(tǒng)計(jì)分類以及回歸分析中。支持向量機(jī)(Support Vector Machine)是一種十分常見的分類器,核心思路是通過構(gòu)造分割面將數(shù)據(jù)進(jìn)行分離。 SVM 是一類按監(jiān)督學(xué)習(xí)方式對(duì)數(shù)據(jù)進(jìn)行二元分類的廣義線性分類器,其決策邊界是對(duì)學(xué)習(xí)樣本求解的最大邊距超平面,可以將問題化為一個(gè)求解凸二次規(guī)劃的問題。與邏輯回歸和神經(jīng)網(wǎng)絡(luò)相比,支持向量機(jī),在學(xué)習(xí)復(fù)雜的非線性方程時(shí)提供了一種更為清晰,更加強(qiáng)大的方式。 具體來說就是在線性可分時(shí),在原空間尋找兩類樣本的最優(yōu)分類超平面。在線性不可分時(shí),加入松弛變量并通過使用非線性映射將低維度輸入空間的樣本映射到高維度空間使其變?yōu)榫€性可分,這樣就可以在該特征空間中尋找最優(yōu)分類超平面。 SVM使用準(zhǔn)則:n 為特征數(shù), m 為訓(xùn)練樣本數(shù)。
SVM 算法特點(diǎn): 優(yōu)點(diǎn):計(jì)算代價(jià)不高,易于理解和實(shí)現(xiàn) 缺點(diǎn):容易欠擬合,分類精度可能不高 適用數(shù)據(jù)類型:數(shù)值型和標(biāo)稱型數(shù)據(jù) 06 隨機(jī)森林隨機(jī)森林是一個(gè)包含多個(gè)決策樹的分類器, 并且其輸出的類別是由個(gè)別樹輸出的類別的眾數(shù)而定。隨機(jī)森林解決決策樹泛化能力弱的特點(diǎn)。 隨機(jī)森林算法特點(diǎn): 優(yōu)點(diǎn):
缺點(diǎn):
07 AdaBoost算法 提升方法是從弱學(xué)習(xí)算法出發(fā),反復(fù)學(xué)習(xí),得到一系列的弱分類器(即基本分類器),然后組合這些弱分類器,構(gòu)成一個(gè)強(qiáng)分類器,大多數(shù)的提升方法都是改變訓(xùn)練數(shù)據(jù)集的概率分布(訓(xùn)練數(shù)據(jù)的權(quán)值分布),針對(duì)不同的訓(xùn)練數(shù)據(jù)分布調(diào)用弱學(xué)習(xí)算法學(xué)習(xí)一系列的弱分類器。 AdaBoost算法特點(diǎn): 優(yōu)點(diǎn): 1. 分類精度高; 2. 可以使用各種方法構(gòu)建子分類器,Adaboost算法提供的是框架; 3. 簡單,且不用做特征篩選; 4. 不會(huì)造成overfitting。 缺點(diǎn): 1. 對(duì)分類錯(cuò)誤的樣本多次被分錯(cuò)而多次加權(quán)后,導(dǎo)致權(quán)重過大,影響分類器的選擇,造成退化問題;(需改進(jìn)權(quán)值更新方式) 2. 數(shù)據(jù)不平衡問題導(dǎo)致分類精度的急劇下降; 3. 算法訓(xùn)練耗時(shí),拓展困難; 4. 存在過擬合,穩(wěn)健性不強(qiáng)等問題。 08 GBDT GBDT的基本結(jié)構(gòu)是決策樹組成的森林,學(xué)習(xí)方式是梯度提升。 GBDT 算法特點(diǎn): 優(yōu)點(diǎn): 1) 可以靈活處理各種類型的數(shù)據(jù),包括連續(xù)值和離散值。 2) 在相對(duì)少的調(diào)參時(shí)間情況下,預(yù)測(cè)的準(zhǔn)確率也可以比較高。這個(gè)是相對(duì)SVM來說的。 3)使用一些健壯的損失函數(shù),對(duì)異常值的穩(wěn)健性非常強(qiáng)。比如 Huber損失函數(shù)和Quantile損失函數(shù)。 缺點(diǎn): 1) 由于弱學(xué)習(xí)器之間存在依賴關(guān)系,難以并行訓(xùn)練數(shù)據(jù)。不過可以通過自采樣的SGBT來達(dá)到部分并行。 09 XGBoost算法 極端梯度提升(eXtreme Gradient Boosting,XGBoost)。XGBoost是陳天奇等人開發(fā)的一個(gè)開源機(jī)器學(xué)習(xí)項(xiàng)目,高效地實(shí)現(xiàn)了GBDT算法并進(jìn)行了算法和工程上的許多改進(jìn),被廣泛應(yīng)用在Kaggle競賽及其他許多機(jī)器學(xué)習(xí)競賽中并取得了不錯(cuò)的成績。 它是大規(guī)模并行boosted tree的工具,它是目前最快最好的開源boosted tree工具包。XGBoost 所應(yīng)用的算法就是 GBDT(gradient boosting decision tree)的改進(jìn),既可以用于分類也可以用于回歸問題中。與GBDT最大的區(qū)別是xgboost通過對(duì)目標(biāo)函數(shù)做二階泰勒展開,從而求出下一步要擬合的樹的葉子節(jié)點(diǎn)權(quán)重(需要先確定樹的結(jié)構(gòu)),從而根據(jù)損失函數(shù)求出每一次分裂節(jié)點(diǎn)的損失減小的大小,從而根據(jù)分裂損失選擇合適的屬性進(jìn)行分裂。 1.XGBoost與GBDT相比,其優(yōu)勢(shì): 將樹模型的復(fù)雜度加入到正則項(xiàng)中,來避免過擬合,因此泛化性能會(huì)優(yōu)于GBDT。 損失函數(shù)用泰勒展開式展開,同時(shí)用到了一階和二階導(dǎo)數(shù),可以加快優(yōu)化速度。 GBDT只支持CART作為基學(xué)習(xí)器,XGBoost還支持線性分類器作為基學(xué)習(xí)器。 引進(jìn)了特征子采樣,像隨機(jī)森林那樣,既能避免過擬合,又能減少計(jì)算。 在尋找最優(yōu)分割點(diǎn)時(shí),考慮到傳統(tǒng)的貪心算法效率較低,實(shí)現(xiàn)了一種近似貪心算法,用來加速和減少內(nèi)存小號(hào),除此之外,還考慮了稀疏數(shù)據(jù)集合缺失值的處理。 XGBoost支持并行處理。XGBoost的并行不是模型生成的并行,而是在特征上的并行,將特征排序后以block的形式存儲(chǔ)在內(nèi)存中,在后面迭代重復(fù)使用這個(gè)結(jié)構(gòu)。這個(gè)block也使得并行化成為了可能,其次在節(jié)點(diǎn)分裂時(shí),計(jì)算每個(gè)特征的增益,最終選擇增益最大的那個(gè)特征去做分割,那么各個(gè)特征的增益計(jì)算就可以開多線程進(jìn)行。 2.與lightGBM相比的不足點(diǎn): XGBoosting采用預(yù)排序,在迭代之前,對(duì)結(jié)點(diǎn)的特征做預(yù)排序,遍歷選擇最優(yōu)分割點(diǎn),數(shù)據(jù)量大時(shí),貪心法耗時(shí),LightGBM方法采用histogram算法,占用的內(nèi)存低,數(shù)據(jù)分割的復(fù)雜度更低。 XGBoosting采用level-wise生成決策樹,同時(shí)分裂同一層的葉子,從而進(jìn)行多線程優(yōu)化,不容易過擬合,但很多葉子節(jié)點(diǎn)的分裂增益較低,沒必要進(jìn)行更進(jìn)一步的分裂,這就帶來了不必要的開銷;LightGBM采用深度優(yōu)化,leaf-wise生長策略,每次從當(dāng)前葉子中選擇增益最大的結(jié)點(diǎn)進(jìn)行分裂,循環(huán)迭代,但會(huì)生長出更深的決策樹,產(chǎn)生過擬合,因此引入了一個(gè)閾值進(jìn)行限制,防止過擬合。 ![]() 如何決定選擇哪種分類算法下面有一個(gè)列表,可以幫助您了解應(yīng)該使用哪些分類算法來解決業(yè)務(wù)問題。
|
|