精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
分類器

分類器的作用:常規(guī)任務(wù)是利用給定的類別、已知的訓(xùn)練數(shù)據(jù)來學(xué)習(xí)分類規(guī)則和分類器,然后對未知數(shù)據(jù)進(jìn)行分類(或預(yù)測)。邏輯回歸(logistics)、SVM等常用于解決二分類問題,對于多分類問題(multi-class classification),比如識別手寫數(shù)字,它需要10個分類,同樣也可以用邏輯回歸或SVM,只是需要多個二分類來組成多分類,但這樣容易出錯且效率不高,常用的多分類方法有softmax。 

分類算法:劃分為了兩類

1.基于概率密度的方法和基于判別函數(shù)的方法。

  • 基于概率密度的分類算法通常借助于貝葉斯理論體系,采用潛在的類條件概率密度函數(shù)的知識進(jìn)行分類; 在基于概率密度的分類算法中,有著名的貝葉斯估計法、最大似然估計,這些算法屬于有參估計,需要預(yù)先假設(shè)類別的分布模型,然后使用訓(xùn)練數(shù)據(jù)來調(diào)整概率密度中的各個參數(shù)。另外,如 Parzen窗、Kn鄰近等方法屬于無參估計,此類方法可從訓(xùn)練樣本中直接估計出概率密度。 基于判別函數(shù)的分類方法使用訓(xùn)練數(shù)據(jù)估計分類邊界完成分類,無需計算概率密度函數(shù)。
  • 基于判別函數(shù)的方法則假設(shè)分類規(guī)則是由某種形式的判別函數(shù)表示,而訓(xùn)練樣本可用來表示計算函數(shù)中的參數(shù),并利用該判別函數(shù)直接對測試數(shù)據(jù)進(jìn)行分類。此類分類器中,有著名的感知器方法、最小平方誤差法、SVM法、神經(jīng)網(wǎng)絡(luò)方法以及徑向基(RBF)方法等。

2.根據(jù)監(jiān)督方式劃分分類算法,分類學(xué)習(xí)問題可分為三大類:有監(jiān)督分類、半監(jiān)督分類和無監(jiān)督分類。

  • 有監(jiān)督分類是指用來訓(xùn)練分類器的所有樣本都經(jīng)過了人工或其他方式的標(biāo)注,有很多著名的分類器算法都屬于有監(jiān)督的學(xué)習(xí)方式,如AdaBoost[51],SVM,神經(jīng)網(wǎng)絡(luò)算法以及感知器算法。
  • 無監(jiān)督分類是指所有的樣本均沒有經(jīng)過標(biāo)注,分類算法需利用樣本自身信息完成分類學(xué)習(xí)任務(wù),這種方法通常被稱為聚類,常用的聚類算法包括期望最大化(EM)算法和模糊C均值聚類算法等。
  • 半監(jiān)督分類指僅有一部分訓(xùn)練樣本具有類標(biāo)號,分類算法需要同時利用有標(biāo)號樣本和無標(biāo)號樣本學(xué)習(xí)分類,使用兩種樣本訓(xùn)練的結(jié)果比僅使用有標(biāo)注的樣本訓(xùn)練的效果更好。這類算法通常由有監(jiān)督學(xué)習(xí)算法改進(jìn)而成,如SemiBoost、流形正則化、半監(jiān)督SVM等。

Softmax分類

Softmax 函數(shù)的定義如下所示:

其中,Vi 是分類器前級輸出單元的輸出。i 表示類別索引,總的類別個數(shù)為 C。Si 表示的是當(dāng)前元素的指數(shù)與所有元素指數(shù)和的比值。Softmax 將多分類的輸出數(shù)值轉(zhuǎn)化為相對概率,更容易理解和比較。

使用softmax激勵函數(shù)作為輸出層的多層感知機(jī),卷積層和池化層每個的輸出代表高級特征,目的是用這些特征進(jìn)行分類。加入全連接層也是學(xué)習(xí)特征之間非線性組合的有效辦法。卷積層和池化層提取出來的特征很好,但是如果考慮這些特征之間的組合,就更好了。

Softmax函數(shù)把任意實值的向量轉(zhuǎn)變成元素取之0到1且和為1的向量。將多個神經(jīng)元的輸出,映射到(0,1)區(qū)間內(nèi),可以看成概率來理解,從而來進(jìn)行多分類。


 

logistic分類器

以Bernoulli(伯努利) 分布為模型建模的,顧名思義,邏輯分類,是一種二分類法,能將數(shù)據(jù)分成0和1兩類。logistic分類的流程比較簡單,主要有線性求和,sigmoid函數(shù)激活,計算誤差,修正參數(shù)這4個步驟。前兩部用于判斷,后兩步用于修正。

線性求和以及sigmoid函數(shù)

假設(shè)有一個n維的輸入列向量 x,也有一個n維的參數(shù)列向量h, 還有一個偏置量b, 那么就可以線性求和得到z

此時因為z的值域是[?∞,+∞] ,是無法根據(jù)z來判斷x 到底是屬于0還是1的。因此我們需要一個函數(shù),來將z的值映射到[0,1]之間, 這就是激活函數(shù)。激活函數(shù)有很多種,這里的激活函數(shù)是sigmoid函數(shù)。

sigmoid函數(shù)形狀為

可以看到它是介于0~1之間。那么在判斷的時候,首先對之前得到的z代入sigmoid函數(shù)

當(dāng) a 大于0.5的時候,我們判定x應(yīng)屬于1類,如果小于0.5,則屬于0類。這樣,就完成了判斷的工作 。

詳細(xì)過程:https://www.cnblogs.com/yinheyi/p/6131262.html

誤差計算以及參數(shù)修正

上面完成的判斷過程中用到了參數(shù)向量h和偏置量b。 可以說,h和b的值直接關(guān)系到logistic判斷的準(zhǔn)確性。那么這兩組參數(shù)是如何獲得的呢?這就涉及到了參數(shù)的修正。在最開始的時候,h中的值是隨機(jī)的,而b的值是0. 我們通過不斷的訓(xùn)練來使得h和b能夠盡可能的達(dá)到一個較優(yōu)的值。

那么如何訓(xùn)練呢?假設(shè)我們期望輸入x的判定是y,而實際得到的判定值是a,那么我們定義一個損失函數(shù)C(a,y),通過修正h和b的值來使得C最小化,這是一個優(yōu)化問題。在凸優(yōu)化問題中,可以通過

來直接算得h和b的最優(yōu)解。然而在某些情況下,例如數(shù)據(jù)規(guī)模很大,或者非凸優(yōu)化問題中,則不能這么做,而是用迭代的方法來得到局部最優(yōu)解。

其中 η 表示學(xué)習(xí)率。在這里,損失函數(shù)定為平方損失函數(shù),即

那么可以得到

這樣,就能夠得到每次迭代的參數(shù)更新公式為

將logistic擴(kuò)展到多分類

從之前可以看出,普通的logistic只能進(jìn)行二分類,即只能夠分為0或者1。那么如果這些樣本屬于多個類該怎么辦呢?人們想了很多辦法,例如一對多法,依次把某個類別的樣本歸為一類,其他剩余的樣本歸為另一類,這樣k個類需要構(gòu)建k個分類器。還有一對一法,在任意兩類樣本之間設(shè)計一個分類器,k個類需要k(k-1)/2個分類器。

在這里,我們將輸出由一個值更改為一個向量。例如有3個類,那么輸出就是一個長度為3 的列向量,對應(yīng)項的值為1,其他為0。即

分別表示第0,1,2個類。 也可以看成是原來若干個logistic分類器組合在一起。對應(yīng)的某個分類器只對該類輸出1,其他情況都輸出0.從這一點上來講,這個做法有點類似于一對多法。此時,由于輸出從一個數(shù)成為一個向量,之前的公式都要加以修改。首先,原來的y,a,z,b變成了列向量, 向量hh變成了矩陣W。這樣,判斷部分的公式變?yōu)?/p>

此時的 σ 函數(shù)表示對向量中的每一個元素單獨(dú)做運(yùn)算。即

得到的a向量中,其最大值所在的位置索引即為判斷出的分類。 參數(shù)修正部分的公式也是類似的,

注意有些向量之間是進(jìn)行點乘的。 

Boosting

顧名思義,是提升的意思。弱分類器轉(zhuǎn)化為強(qiáng)分類器---原理即三個臭皮匠,賽過諸葛亮一樣。把很多分類準(zhǔn)確率很低的分類器通過更新對數(shù)據(jù)的權(quán)重,集成起來形成一個分類效果好的分類器。

它是一種框架算法,先從初始訓(xùn)練集訓(xùn)練出一個基學(xué)習(xí)器,再根據(jù)基學(xué)習(xí)器的表現(xiàn)對訓(xùn)練樣本分布進(jìn)行調(diào)整,使得先前基學(xué)習(xí)器做錯的訓(xùn)練樣本在后續(xù)受到更多的關(guān)注,然后基于調(diào)整后的樣本分布來訓(xùn)練下一個基學(xué)習(xí)器;如此重復(fù)進(jìn)行,直至基學(xué)習(xí)器數(shù)目達(dá)到事先指定的值T,最終將這T個基學(xué)習(xí)器進(jìn)行加權(quán)結(jié)合。

一般來說,找到弱學(xué)習(xí)算法要相對容易一些,然后通過反復(fù)學(xué)習(xí)得到一系列弱分類器,組合這些弱分類器得到一個強(qiáng)分類器。Boosting算法要涉及到兩個部分,加法模型和前向分步算法。加法模型就是說強(qiáng)分類器由一系列弱分類器線性相加而成。一般組合形式如下:

其中,h(x;am)是一個個的弱分類器,am是弱分類器學(xué)習(xí)到的最優(yōu)參數(shù),βm是弱學(xué)習(xí)在強(qiáng)分類器中所占比重,P是所有am和βm的組合,這些弱分類器線性相加組成強(qiáng)分類器。

前向分步就是說在訓(xùn)練過程中,下一輪迭代產(chǎn)生的分類器是在上一輪的基礎(chǔ)上訓(xùn)練得來的。也就是可以寫成這樣的形式:

由于采用的損失函數(shù)不同,Boosting算法有很多不同的類型,其中比較經(jīng)典的有AdaBoost,其損失函數(shù)為指數(shù)損失的。

Adaboost

Boosting有一個重大缺陷,即該算法要求事先知道弱分類算法分類正確率的下限,這在實際問題中很難做到。

Adaptive Boosting,自適應(yīng)增強(qiáng)。它的自適應(yīng)在于:前一個基本分類器分錯的樣本會得到加強(qiáng),加權(quán)后的全體樣本再次被用來訓(xùn)練下一個基本分類器。同時,在每一輪中加入一個新的弱分類器,直到達(dá)到某個預(yù)定的足夠小的錯誤率或達(dá)到預(yù)先指定的最大迭代次數(shù)。

Adaboost 迭代算法分為3步:

  1. 初始化訓(xùn)練數(shù)據(jù)的權(quán)值分布。如果有N個樣本,則每個訓(xùn)練樣本最開始時都被賦予相同的權(quán)值:1/N;
  2. 訓(xùn)練弱分類器。具體訓(xùn)練過程中,如果某個樣本點已經(jīng)被準(zhǔn)確地分類,那么在構(gòu)造下一個訓(xùn)練集中,它的權(quán)值就被降低;相反,如果某個樣本點沒有被準(zhǔn)確地分類,那么它的權(quán)值就得到提高。然后權(quán)值更新過的樣本集被用于訓(xùn)練下一個分類器,整個訓(xùn)練過程如此迭代地進(jìn)行下去;
  3. 將各個訓(xùn)練得到的弱分類器組合成強(qiáng)分類器。各個弱分類器的訓(xùn)練過程結(jié)束后,加大分類誤差率小的弱分類器的權(quán)重,使其在最終的分類函數(shù)中起著較大的決定作用,而降低分類誤差率大的弱分類器的權(quán)重,使其在最終的分類函數(shù)中起著較小的決定作用。換言之,誤差率低的弱分類器在最終分類器中占的權(quán)重較大,否則較小。

算法流程

給定一個訓(xùn)練數(shù)據(jù)集T={(x1,y1), (x2,y2)…(xN,yN)},其中實例

,而實例空間
,yi屬于標(biāo)記集合{-1,+1},Adaboost的目的就是從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)一系列弱分類器或基本分類器,然后將這些弱分類器組合成一個強(qiáng)分類器。

算法流程如下:

1.初始化訓(xùn)練數(shù)據(jù)的權(quán)值分布。每一個訓(xùn)練樣本最開始時都被賦予相同的權(quán)值:1/N。

2.進(jìn)行多輪迭代,用m = 1,2, ..., M表示迭代的第多少輪

a.使用具有權(quán)值分布Dm的訓(xùn)練數(shù)據(jù)集學(xué)習(xí),得到基本分類器(選取讓誤差率最低的閾值來設(shè)計基本分類器):

  b.計算Gm(x)在訓(xùn)練數(shù)據(jù)集上的分類誤差率

   由上述式子可知,Gm(x)在訓(xùn)練數(shù)據(jù)集上的誤差率em就是被Gm(x)誤分類樣本的權(quán)值之和。

  c.計算Gm(x)的系數(shù),am表示Gm(x)在最終分類器中的重要程度(目的:得到基本分類器在最終分類器中所占的權(quán)重):        

   由上述式子可知,em≤1/2時,am≥0,am隨em減小而增大,分類誤差率越小的基本分類器在最終分類器中的作用越大。

  d.更新訓(xùn)練數(shù)據(jù)集的權(quán)值分布(目的:得到樣本的新的權(quán)值分布),用于下一輪迭代。

                  

  使得被基本分類器Gm(x)誤分類樣本的權(quán)值增大,而被正確分類樣本的權(quán)值減小,重點關(guān)注或聚焦于那些較難分的樣本上。

    其中,Zm是規(guī)范化因子,使得Dm+1成為一個概率分布:

                                                          

3.組合各個弱分類器

從而得到最終分類器,如下: 

實例

有如下的訓(xùn)練樣本,我們需要構(gòu)建強(qiáng)分類器對其進(jìn)行分類。x是特征,y是標(biāo)簽。

令權(quán)值分布D1=(w1,1,w1,2,…,w1,10)

并假設(shè)一開始的權(quán)值分布是均勻分布:w1,i=0.1,i=1,2,…,10w1,i=0.1,i=1,2,…,10

現(xiàn)在開始訓(xùn)練第一個弱分類器。發(fā)現(xiàn)閾值取2.5時分類誤差率最低,得到弱分類器為:

當(dāng)然,也可用別的弱分類器,只要誤差率最低即可。這里為了方便,用了分段函數(shù)。得到了分類誤差率e1=0.3。

第二步計算G1(x)在強(qiáng)分類器中的系數(shù)

第三步更新樣本的權(quán)值分布,用于下一輪迭代訓(xùn)練。由公式:

得到新的權(quán)值分布,從各0.1變成了:

可以看出,被分類正確的樣本權(quán)值減小了,被錯誤分類的樣本權(quán)值提高了。

第四步得到第一輪迭代的強(qiáng)分類器:

以此類推,經(jīng)過第二輪……第N輪,迭代多次直至得到最終的強(qiáng)分類器。迭代范圍可以自己定義,比如限定收斂閾值,分類誤差率小于某一個值就停止迭代,比如限定迭代次數(shù),迭代1000次停止。這里數(shù)據(jù)簡單,在第3輪迭代時,得到強(qiáng)分類器:

的分類誤差率為0,結(jié)束迭代。

F(x)=sign(F3(x))就是最終的強(qiáng)分類器。

SVM

借鑒博客:https://blog.csdn.net/mm_bit/article/details/46988925

  • 線性核SVM:一般應(yīng)用于多分類,分類的結(jié)果(如3分類)最后會給出(約等于)1、2、3的值代表第1、2、3類
  • 非線性核SVM:一般應(yīng)用于二分類問題上

support vector machines,支持向量機(jī),是一個二分類的分類模型(經(jīng)改造后也可用于多分類,但比較復(fù)雜)。分類的思想是,給定給一個包含正例和反例的樣本集合,其目的是尋找一個超平面來對樣本根據(jù)正例和反例進(jìn)行分割,尋找一個超平面,使得離超平面比較近的點能有更大的間距。也就是我們不考慮所有的點都必須遠(yuǎn)離超平面,我們關(guān)心求得的超平面能夠讓所有點中離它最近的點具有最大間距。

優(yōu)點:

在解決小樣本、非線性及高維模式識別中表現(xiàn)出許多特有的優(yōu)勢,并能夠推廣應(yīng)用到函數(shù)擬合等其他機(jī)器學(xué)習(xí)問題中。

如下面3個圖,分類圖1中的兩類球,很簡單,用一根棍子即可;但圖2中一條直線貌似不能完成分類的任務(wù),可以想象就像武俠片的大俠一樣,拍下桌子,球飛到空中。然后,大俠抓起一張紙,插到了兩種球的中間,如圖2右邊的部分;從直觀的角度看這些球像是被一條曲線分開了,如圖3。其中這些球叫做【data】,棍子叫做【classifier】, 最大間隙trick叫做【optimization】, 拍桌子叫做【kernelling】,那張紙叫做【hyperplane】。

 

如果一個線性函數(shù)能夠?qū)颖就耆_的分開,就稱這些數(shù)據(jù)是線性可分的,否則稱為非線性可分的。線性函數(shù)在一維空間里就是一個點,在二維空間里就是一條直線,三維空間里就是一個平面,如果不關(guān)注空間的維數(shù),這種線性函數(shù)叫做超平面(Hyper Plane)。在樣本空間中,劃分超平面可通過如下線性方程來描述:

                                                              

假設(shè)它已經(jīng)完成了對樣本的分隔,且兩種樣本的標(biāo)簽分別是{+1,-1},那么對于一個分類器來說,g(x)>0和個g(x)<0就可以分別代表兩個不同的類別,+1和-1。

但光是分開是不夠的,SVM的核心思想是盡最大努力使分開的兩個類別有最大間隔,這樣才使得分隔具有更高的可信度。而且對于未知的新樣本才有很好的分類預(yù)測能力(在機(jī)器學(xué)習(xí)中叫泛化能力),SVM讓間隔最大的辦法是:讓離分隔面最近的數(shù)據(jù)點具有最大的距離。為了描述離分隔超平面最近的數(shù)據(jù)點,需要找到兩個和這個超平面平行和距離相等的超平面:

                                                    H1: y = wTx + b=+1 和 H2: y = wTx + b=-1

在這兩個超平面上的樣本點也就是理論上離分隔超平面最近的點,是它們的存在決定了H1和H2的位置,支撐起了分界線,它們就是所謂的支持向量,這就是支持向量機(jī)的由來。

由兩個超平面就可以定義上面提到的間隔(margin)了,二維情況下 ax+by=c1和ax+by=c兩條平行線的距離公式為:

可以推出H1和H2兩個超平面的間隔為2/||w||,即現(xiàn)在的目的是要最大化這個間隔。所以support vector machine又叫Maximum margin hyper plane classifier(最大間隔超平面分類器),等價于最小化||w||,為了之后的求導(dǎo)和計算方便,進(jìn)一步等價于最小化  

假設(shè)超平面能將樣本正確分類,則可令:

 

兩個式子綜合一下有:

 

這就是目標(biāo)函數(shù)的約束條件。現(xiàn)在這個問題就變成了一個最優(yōu)化問題:

而且這是一個凸二次規(guī)劃問題,一般的解決方法有兩種1是用現(xiàn)成的優(yōu)化工具包直接求解,2是使用Lagrange Duality找到一種更有效的方法求解。

 實例

svm的輸入是一組向量以及每個向量對應(yīng)的分類:
label,一般是-1或1,表示種類;
index:value, 向量值,如 1:0.78, 2:1, 3:-0.52, 4:-0.35, 5:0.56, 一般用一個一維數(shù)組表示
數(shù)據(jù)準(zhǔn)備成上述格式,隨機(jī)分成2份,一份用來訓(xùn)練模型,一份用來測試模型的準(zhǔn)確性,以便根據(jù)測試結(jié)果調(diào)整訓(xùn)練參數(shù)。在線性不可分的情況下,使用RBF核效果比較好,現(xiàn)在很多軟件可以自動完成這個對比、選擇過程。

比如用svm進(jìn)行垃圾郵件識別,大概步驟如下:
對郵件進(jìn)行打標(biāo),垃圾郵件標(biāo)為1,非垃圾郵件標(biāo)為-1。對郵件內(nèi)容進(jìn)行分詞,對每個詞計算特征權(quán)重,然后通過歸一化轉(zhuǎn)化成-1到1之間的值,選擇一個svm實現(xiàn)lib或軟件,將準(zhǔn)備好的這些向量和label帶入訓(xùn)練,調(diào)整參數(shù)得到效果滿足要求的模型。

 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Adaboost 算法的原理與推導(dǎo)(讀書筆記)
機(jī)器學(xué)習(xí)經(jīng)典算法詳解及Python實現(xiàn)
機(jī)器學(xué)習(xí)面試干貨精講
9一些SVM知識
支持向量機(jī)及其應(yīng)用
從集成方法到神經(jīng)網(wǎng)絡(luò):自動駕駛技術(shù)中的機(jī)器學(xué)習(xí)算法有哪些?
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服

主站蜘蛛池模板: 岳西县| 右玉县| 资源县| 宜宾县| 江山市| 阳信县| 临沂市| 偃师市| 武强县| 宁武县| 崇礼县| 清苑县| 邮箱| 彰化县| 海宁市| 抚顺县| 龙江县| 奉化市| 巴彦县| 安新县| 姚安县| 十堰市| 湖口县| 昌邑市| 双辽市| 新竹县| 靖西县| 穆棱市| 米泉市| 山丹县| 金乡县| 靖江市| 平利县| 鹰潭市| 丹寨县| 石台县| 高陵县| 万安县| 重庆市| 通榆县| 宁乡县|