導航:首頁 > 廢水知識 > 梯度提升分類器數量學習率

梯度提升分類器數量學習率

發布時間:2022-08-26 09:18:06

1. 各種遙感數據分類方法比較

常用的遙感數據的專題分類方法有多種,從分類判別決策方法的角度可以分為統計分類器、神經網路分類器、專家系統分類器等;從是否需要訓練數據方面,又可以分為監督分類器和非監督分類器。

一、統計分類方法

統計分類方法分為非監督分類方法和監督分類方法。非監督分類方法不需要通過選取已知類別的像元進行分類器訓練,而監督分類方法則需要選取一定數量的已知類別的像元對分類器進行訓練,以估計分類器中的參數。非監督分類方法不需要任何先驗知識,也不會因訓練樣本選取而引入認為誤差,但非監督分類得到的自然類別常常和研究感興趣的類別不匹配。相應地,監督分類一般需要預先定義分類類別,訓練數據的選取可能會缺少代表性,但也可能在訓練過程中發現嚴重的分類錯誤。

1.非監督分類器

非監督分類方法一般為聚類演算法。最常用的聚類非監督分類方法是 K-均值(K-Means Algorithm)聚類方法(Duda and Hart,1973)和迭代自組織數據分析演算法(ISODATA)。其演算法描述可見於一般的統計模式識別文獻中。

一般通過簡單的聚類方法得到的分類結果精度較低,因此很少單獨使用聚類方法進行遙感數據專題分類。但是,通過對遙感數據進行聚類分析,可以初步了解各類別的分布,獲取最大似然監督分類中各類別的先驗概率。聚類分析最終的類別的均值矢量和協方差矩陣可以用於最大似然分類過程(Schowengerdt,1997)。

2.監督分類器

監督分類器是遙感數據專題分類中最常用的一種分類器。和非監督分類器相比,監督分類器需要選取一定數量的訓練數據對分類器進行訓練,估計分類器中的關鍵參數,然後用訓練後的分類器將像元劃分到各類別。監督分類過程一般包括定義分類類別、選擇訓練數據、訓練分類器和最終像元分類四個步驟(Richards,1997)。每一步都對最終分類的不確定性有顯著影響。

監督分類器又分為參數分類器和非參數分類器兩種。參數分類器要求待分類數據滿足一定的概率分布,而非參數分類器對數據的概率分布沒有要求。

遙感數據分類中常用的分類器有最大似然分類器、最小距離分類器、馬氏距離分類器、K-最近鄰分類器(K-Nearest neighborhood classifier,K-NN)以及平行六面體分類器(parallelepiped classifier)。最大似然、最小距離和馬氏距離分類器在第三章已經詳細介紹。這里簡要介紹 K-NN 分類器和平行六面體分類器。

K-NN分類器是一種非參數分類器。該分類器的決策規則是:將像元劃分到在特徵空間中與其特徵矢量最近的訓練數據特徵矢量所代表的類別(Schowengerdt,1997)。當分類器中 K=1時,稱為1-NN分類器,這時以離待分類像元最近的訓練數據的類別作為該像元的類別;當 K >1 時,以待分類像元的 K 個最近的訓練數據中像元數量最多的類別作為該像元的類別,也可以計算待分類像元與其 K 個近鄰像元特徵矢量的歐氏距離的倒數作為權重,以權重值最大的訓練數據的類別作為待分類像元的類別。Hardin,(1994)對 K-NN分類器進行了深入的討論。

平行六面體分類方法是一個簡單的非參數分類演算法。該方法通過計算訓練數據各波段直方圖的上限和下限確定各類別像元亮度值的范圍。對每一類別來說,其每個波段的上下限一起就形成了一個多維的盒子(box)或平行六面體(parallelepiped)。因此 M 個類別就有M 個平行六面體。當待分類像元的亮度值落在某一類別的平行六面體內時,該像元就被劃分為該平行六面體代表的類別。平行六面體分類器可以用圖5-1中兩波段的遙感數據分類問題來表示。圖中的橢圓表示從訓練數據估計的各類別亮度值分布,矩形表示各類別的亮度值范圍。像元的亮度落在哪個類別的亮度范圍內,就被劃分為哪個類別。

圖5-1 平行六面體分類方法示意圖

3.統計分類器的評價

各種統計分類器在遙感數據分類中的表現各不相同,這既與分類演算法有關,又與數據的統計分布特徵、訓練樣本的選取等因素有關。

非監督聚類演算法對分類數據的統計特徵沒有要求,但由於非監督分類方法沒有考慮任何先驗知識,一般分類精度比較低。更多情況下,聚類分析被作為非監督分類前的一個探索性分析,用於了解分類數據中各類別的分布和統計特徵,為監督分類中類別定義、訓練數據的選取以及最終的分類過程提供先驗知識。在實際應用中,一般用監督分類方法進行遙感數據分類。

最大似然分類方法是遙感數據分類中最常用的分類方法。最大似然分類屬於參數分類方法。在有足夠多的訓練樣本、一定的類別先驗概率分布的知識,且數據接近正態分布的條件下,最大似然分類被認為是分類精度最高的分類方法。但是當訓練數據較少時,均值和協方差參數估計的偏差會嚴重影響分類精度。Swain and Davis(1978)認為,在N維光譜空間的最大似然分類中,每一類別的訓練數據樣本至少應該達到10×N個,在可能的條件下,最好能達到100×N以上。而且,在許多情況下,遙感數據的統計分布不滿足正態分布的假設,也難以確定各類別的先驗概率。

最小距離分類器可以認為是在不考慮協方差矩陣時的最大似然分類方法。當訓練樣本較少時,對均值的估計精度一般要高於對協方差矩陣的估計。因此,在有限的訓練樣本條件下,可以只估計訓練樣本的均值而不計算協方差矩陣。這樣最大似然演算法就退化為最小距離演算法。由於沒有考慮數據的協方差,類別的概率分布是對稱的,而且各類別的光譜特徵分布的方差被認為是相等的。很顯然,當有足夠訓練樣本保證協方差矩陣的精確估計時,最大似然分類結果精度要高於最小距離精度。然而,在訓練數據較少時,最小距離分類精度可能比最大似然分類精度高(Richards,1993)。而且最小距離演算法對數據概率分布特徵沒有要求。

馬氏距離分類器可以認為是在各類別的協方差矩陣相等時的最大似然分類。由於假定各類別的協方差矩陣相等,和最大似然方法相比,它丟失了各類別之間協方差矩陣的差異的信息,但和最小距離法相比較,它通過協方差矩陣保持了一定的方向靈敏性(Richards,1993)。因此,馬氏距離分類器可以認為是介於最大似然和最小距離分類器之間的一種分類器。與最大似然分類一樣,馬氏距離分類器要求數據服從正態分布。

K-NN分類器的一個主要問題是需要很大的訓練數據集以保證分類演算法收斂(Devijver and Kittler,1982)。K-NN分類器的另一個問題是,訓練樣本選取的誤差對分類結果有很大的影響(Cortijo and Blanca,1997)。同時,K-NN分類器的計算復雜性隨著最近鄰范圍的擴大而增加。但由於 K-NN分類器考慮了像元鄰域上的空間關系,和其他光譜分類器相比,分類結果中「椒鹽現象」較少。

平行六面體分類方法的優點在於簡單,運算速度快,且不依賴於任何概率分布要求。它的缺陷在於:首先,落在所有類別亮度值范圍之外的像元只能被分類為未知類別;其次,落在各類別亮度范圍重疊區域內的像元難以區分其類別(如圖5-1所示)。

各種統計分類方法的特點可以總結為表5-1。

二、神經網路分類器

神經網路用於遙感數據分類的最大優勢在於它平等地對待多源輸入數據的能力,即使這些輸入數據具有完全不同的統計分布,但是由於神經網路內部各層大量的神經元之間連接的權重是不透明的,因此用戶難以控制(Austin,Harding and Kanellopoulos et al.,1997)。

神經網路遙感數據分類被認為是遙感數據分類的熱點研究領域之一(Wilkinson,1996;Kimes,1998)。神經網路分類器也可分為監督分類器和非監督分類器兩種。由於神經網路分類器對分類數據的統計分布沒有任何要求,因此神經網路分類器屬於非參數分類器。

遙感數據分類中最常用的神經網路是多層感知器模型(multi-layer percep-tron,MLP)。該模型的網路結構如圖5-2所示。該網路包括三層:輸入層、隱層和輸出層。輸入層主要作為輸入數據和神經網路輸入界面,其本身沒有處理功能;隱層和輸出層的處理能力包含在各個結點中。輸入的結構一般為待分類數據的特徵矢量,一般情況下,為訓練像元的多光譜矢量,每個結點代表一個光譜波段。當然,輸入結點也可以為像元的空間上下文信息(如紋理)等,或多時段的光譜矢量(Paola and Schowengerdt,1995)。

表5-1 各種統計分類器比較

圖5-2 多層感知器神經網路結構

對於隱層和輸出層的結點來說,其處理過程是一個激勵函數(activation function)。假設激勵函數為f(S),對隱層結點來說,有:

遙感信息的不確定性研究

其中,pi為隱層結點的輸入;hj為隱層結點的輸出;w為聯接各層神經之間的權重。

對輸出層來說,有如下關系:

遙感信息的不確定性研究

其中,hj為輸出層的輸入;ok為輸出層的輸出。

激勵函數一般表達為:

遙感信息的不確定性研究

確定了網路結構後,就要對網路進行訓練,使網路具有根據新的輸入數據預測輸出結果的能力。最常用的是後向傳播訓練演算法(Back-Propagation)。這一演算法將訓練數據從輸入層進入網路,隨機產生各結點連接權重,按式(5-1)(5-2)和(5-3)中的公式進行計算,將網路輸出與預期的結果(訓練數據的類別)相比較並計算誤差。這個誤差被後向傳播的網路並用於調整結點間的連接權重。調整連接權重的方法一般為delta規則(Rumelhart,et al.,1986):

遙感信息的不確定性研究

其中,η為學習率(learning rate);δk為誤差變化率;α為動量參數。

將這樣的數據的前向和誤差後向傳播過程不斷迭代,直到網路誤差減小到預設的水平,網路訓練結束。這時就可以將待分類數據輸入神經網路進行分類。

除了多層感知器神經網路模型,其他結構的網路模型也被用於遙感數據分類。例如,Kohonen自組織網路被廣泛用於遙感數據的非監督聚類分析(Yoshida et al.,1994;Schaale et al.,1995);自適應共振理論(Adaptive Resonance Theory)網路(Silva,S and Caetano,M.1997)、模糊ART圖(Fuzzy ART Maps)(Fischer,M.M and Gopal,S,1997)、徑向基函數(駱劍承,1999)等也被用於遙感數據分類。

許多因素影響神經網路的遙感數據分類精度。Foody and Arora(1997)認為神經網路結構、遙感數據的維數以及訓練數據的大小是影響神經網路分類的重要因素。

神經網路結構,特別是網路的層數和各層神經元的數量是神經網路設計最關鍵的問題。網路結構不但影響分類精度,而且對網路訓練時間有直接影響(Kavzoglu and Mather,1999)。對用於遙感數據分類的神經網路來說,由於輸入層和輸出層的神經元數目分別由遙感數據的特徵維數和總的類別數決定的,因此網路結構的設計主要解決隱層的數目和隱層的神經元數目。一般過於復雜的網路結構在刻畫訓練數據方面較好,但分類精度較低,即「過度擬合」現象(over-fit)。而過於簡單的網路結構由於不能很好的學習訓練數據中的模式,因此分類精度低。

網路結構一般是通過實驗的方法來確定。Hirose等(1991)提出了一種方法。該方法從一個小的網路結構開始訓練,每次網路訓練陷入局部最優時,增加一個隱層神經元,然後再訓練,如此反復,直到網路訓練收斂。這種方法可能導致網路結構過於復雜。一種解決辦法是每當認為網路收斂時,減去最近一次加入的神經元,直到網路不再收斂,那麼最後一次收斂的網路被認為是最優結構。這種方法的缺點是非常耗時。「剪枝法」(pruning)是另一種確定神經網路結構的方法。和Hirose等(1991)的方法不同,「剪枝法」從一個很大的網路結構開始,然後逐步去掉認為多餘的神經元(Sietsma and Dow,1988)。從一個大的網路開始的優點是,網路學習速度快,對初始條件和學習參數不敏感。「剪枝」過程不斷重復,直到網路不再收斂時,最後一次收斂的網路被認為最優(Castellano,Fanelli and Pelillo,1997)。

神經網路訓練需要訓練數據樣本的多少隨不同的網路結構、類別的多少等因素變化。但是,基本要求是訓練數據能夠充分描述代表性的類別。Foody等(1995)認為訓練數據的大小對遙感分類精度有顯著影響,但和統計分類器相比,神經網路的訓練數據可以比較少。

分類變數的數據維對分類精度的影響是遙感數據分類中的普遍問題。許多研究表明,一般類別之間的可分性和最終的分類精度會隨著數據維數的增大而增高,達到某一點後,分類精度會隨數據維的繼續增大而降低(Shahshahani and Landgrebe,1994)。這就是有名的Hughes 現象。一般需要通過特徵選擇去掉信息相關性高的波段或通過主成分分析方法去掉冗餘信息。分類數據的維數對神經網路分類的精度同樣有明顯影響(Battiti,1994),但Hughes 現象沒有傳統統計分類器中嚴重(Foody and Arora,1997)。

Kanellopoulos(1997)通過長期的實踐認為一個有效的ANN模型應考慮以下幾點:合適的神經網路結構、優化學習演算法、輸入數據的預處理、避免振盪、採用混合分類方法。其中混合模型包括多種ANN模型的混合、ANN與傳統分類器的混合、ANN與知識處理器的混合等。

三、其他分類器

除了上述統計分類器和神經網路分類器,還有多種分類器被用於遙感圖像分類。例如模糊分類器,它是針對地面類別變化連續而沒有明顯邊界情況下的一種分類器。它通過模糊推理機制確定像元屬於每一個類別的模糊隸屬度。一般的模糊分類器有模糊C均值聚類法、監督模糊分類方法(Wang,1990)、混合像元模型(Foody and Cox,1994;Settle and Drake,1993)以及各種人工神經網路方法等(Kanellopoulos et al.,1992;Paola and Schowengerdt,1995)。由於模糊分類的結果是像元屬於每個類別的模糊隸屬度,因此也稱其為「軟分類器」,而將傳統的分類方法稱為「硬分類器」。

另一類是上下文分類器(contextual classifier),它是一種綜合考慮圖像光譜和空間特徵的分類器。一般的光譜分類器只是考慮像元的光譜特徵。但是,在遙感圖像中,相鄰的像元之間一般具有空間自相關性。空間自相關程度強的像元一般更可能屬於同一個類別。同時考慮像元的光譜特徵和空間特徵可以提高圖像分類精度,並可以減少分類結果中的「椒鹽現象」。當類別之間的光譜空間具有重疊時,這種現象會更明顯(Cortijo et al.,1995)。這種「椒鹽現象」可以通過分類的後處理濾波消除,也可以通過在分類過程中加入代表像元鄰域關系的信息解決。

在分類過程中可以通過不同方式加入上下文信息。一是在分類特徵中加入圖像紋理信息;另一種是圖像分割技術,包括區域增長/合並常用演算法(Ketting and Landgrebe,1976)、邊緣檢測方法、馬爾可夫隨機場方法。Rignot and Chellappa(1992)用馬爾可夫隨機場方法進行SAR圖像分類,取得了很好的效果,Paul Smits(1997)提出了保持邊緣細節的馬爾可夫隨機場方法,並用於SAR圖像的分類;Crawford(1998)將層次分類方法和馬爾可夫隨機場方法結合進行SAR圖像分類,得到了更高的精度;Cortijo(1997)用非參數光譜分類對遙感圖像分類,然後用ICM演算法對初始分類進行上下文校正。

2. 基於R語言的梯度推進演算法介紹

基於R語言的梯度推進演算法介紹

通常來說,我們可以從兩個方面來提高一個預測模型的准確性:完善特徵工程(feature engineering)或是直接使用Boosting演算法。通過大量數據科學競賽的試煉,我們可以發現人們更鍾愛於Boosting演算法,這是因為和其他方法相比,它在產生類似的結果時往往更加節約時間。

Boosting演算法有很多種,比如梯度推進(Gradient Boosting)、XGBoost、AdaBoost、Gentle Boost等等。每一種演算法都有自己不同的理論基礎,通過對它們進行運用,演算法之間細微的差別也能夠被我們所察覺。如果你是一個新手,那麼太好了,從現在開始,你可以用大約一周的時間來了解和學習這些知識。

在本文中,筆者將會向你介紹梯度推進演算法的基本概念及其復雜性,此外,文中還分享了一個關於如何在R語言中對該演算法進行實現的例子。

快問快答

每當談及Boosting演算法,下列兩個概念便會頻繁的出現:Bagging和Boosting。那麼,這兩個概念是什麼,它們之間究竟有什麼區別呢?讓我們快速簡要地在這里解釋一下:

Bagging:對數據進行隨機抽樣、建立學習演算法並且通過簡單平均來得到最終概率結論的一種方法。

Boosting:與Bagging類似,但在樣本選擇方面顯得更為聰明一些——在演算法進行過程中,對難以進行分類的觀測值賦予了越來越大的權重。

我們知道你可能會在這方面產生疑問:什麼叫做越來越大?我怎麼知道我應該給一個被錯分的觀測值額外增加多少的權重呢?請保持冷靜,我們將在接下來的章節里為你解答。

從一個簡單的例子出發

假設你有一個初始的預測模型M需要進行准確度的提高,你知道這個模型目前的准確度為80%(通過任何形式度量),那麼接下來你應該怎麼做呢?

有一個方法是,我們可以通過一組新的輸入變數來構建一個全新的模型,然後對它們進行集成學習。但是,筆者在此要提出一個更簡單的建議,如下所示:

Y= M(x) + error

如果我們能夠觀測到誤差項並非白雜訊,而是與我們的模型輸出(Y)有著相同的相關性,那麼我們為什麼不通過這個誤差項來對模型的准確度進行提升呢?比方說:

error = G(x) + error2

或許,你會發現模型的准確率提高到了一個更高的數字,比如84%。那麼下一步讓我們對error2進行回歸。

error2 = H(x) + error3

然後我們將上述式子組合起來:

Y = M(x) + G(x) + H(x) + error3

這樣的結果可能會讓模型的准確度更進一步,超過84%。如果我們能像這樣為三個學習演算法找到一個最佳權重分配,

Y = alpha * M(x) + beta * G(x) + gamma * H(x) + error4

那麼,我們可能就構建了一個更好的模型。

上面所述的便是Boosting演算法的一個基本原則,當我初次接觸到這一理論時,我的腦海中很快地冒出了這兩個小問題:

1.我們如何判斷回歸/分類方程中的誤差項是不是白雜訊?如果無法判斷,我們怎麼能用這種演算法呢?

2.如果這種演算法真的這么強大,我們是不是可以做到接近100%的模型准確度?

接下來,我們將會對這些問題進行解答,但是需要明確的是,Boosting演算法的目標對象通常都是一些弱演算法,而這些弱演算法都不具備只保留白雜訊的能力;其次,Boosting有可能導致過度擬合,所以我們必須在合適的點上停止這個演算法。

試著想像一個分類問題

請看下圖:

從最左側的圖開始看,那條垂直的線表示我們運用演算法所構建的分類器,可以發現在這幅圖中有3/10的觀測值的分類情況是錯誤的。接著,我們給予那三個被誤分的「+」型的觀測值更高的權重,使得它們在構建分類器時的地位非常重要。這樣一來,垂直線就直接移動到了接近圖形右邊界的位置。反復這樣的過程之後,我們在通過合適的權重組合將所有的模型進行合並。

演算法的理論基礎

我們該如何分配觀測值的權重呢?

通常來說,我們從一個均勻分布假設出發,我們把它稱為D1,在這里,n個觀測值分別被分配了1/n的權重。

步驟1:假設一個α(t);

步驟2:得到弱分類器h(t);

步驟3:更新總體分布,

其中,

步驟4:再次運用新的總體分布去得到下一個分類器;

覺得步驟3中的數學很可怕嗎?讓我們來一起擊破這種恐懼。首先,我們簡單看一下指數里的參數,α表示一種學習率,y是實際的回應值(+1或-1),而h(x)則是分類器所預測的類別。簡單來說,如果分類器預測錯了,這個指數的冪就變成了1 *α, 反之則是-1*α。也就是說,如果某觀測值在上一次預測中被預測錯誤,那麼它對應的權重可能會增加。那麼,接下來該做什麼呢?

步驟5:不斷重復步驟1-步驟4,直到無法發現任何可以改進的地方;

步驟6:對所有在上面步驟中出現過的分類器或是學習演算法進行加權平均,權重如下所示:

案例練習

最近我參加了由Analytics Vidhya組織的在線hackathon活動。為了使變數變換變得容易,在complete_data中我們合並了測試集與訓練集中的所有數據。我們將數據導入,並且進行抽樣和分類。

library(caret)rm(list=ls())setwd("C:Usersts93856DesktopAV")library(Metrics)complete <- read.csv("complete_data.csv", stringsAsFactors = TRUE)train <- complete[complete$Train == 1,]score <- complete[complete$Train != 1,]set.seed(999)ind <- sample(2, nrow(train), replace=T, prob=c(0.60,0.40))trainData<-train[ind==1,]testData <- train[ind==2,]set.seed(999)ind1 <- sample(2, nrow(testData), replace=T, prob=c(0.50,0.50))trainData_ens1<-testData[ind1==1,]testData_ens1 <- testData[ind1==2,]table(testData_ens1$Disbursed)[2]/nrow(testData_ens1)#Response Rate of 9.052%

接下來,就是構建一個梯度推進模型(Gradient Boosting Model)所要做的:

fitControl <- trainControl(method = "repeatedcv", number = 4, repeats = 4)trainData$outcome1 <- ifelse(trainData$Disbursed == 1, "Yes","No")set.seed(33)gbmFit1 <- train(as.factor(outcome1) ~ ., data = trainData[,-26], method = "gbm", trControl = fitControl,verbose = FALSE)gbm_dev <- predict(gbmFit1, trainData,type= "prob")[,2]gbm_ITV1 <- predict(gbmFit1, trainData_ens1,type= "prob")[,2]gbm_ITV2 <- predict(gbmFit1, testData_ens1,type= "prob")[,2]auc(trainData$Disbursed,gbm_dev)auc(trainData_ens1$Disbursed,gbm_ITV1)auc(testData_ens1$Disbursed,gbm_ITV2)

在上述案例中,運行代碼後所看到的所有AUC值將會非常接近0.84。我們隨時歡迎你對這段代碼進行進一步的完善。在這個領域,梯度推進模型(GBM)是最為廣泛運用的方法,在未來的文章里,我們可能會對GXBoost等一些更加快捷的Boosting演算法進行介紹。

結束語

筆者曾不止一次見識過Boosting演算法的迅捷與高效,在Kaggle或是其他平台的競賽中,它的得分能力從未令人失望,當然了,也許這要取決於你能夠把特徵工程(feature engineering)做得多好了。

以上是小編為大家分享的關於基於R語言的梯度推進演算法介紹的相關內容,更多信息可以關注環球青藤分享更多干貨

3. 機器學習一般常用的演算法有哪些

機器學習是人工智慧的核心技術,是學習人工智慧必不可少的環節。機器學習中有很多演算法,能夠解決很多以前難以企的問題,機器學習中涉及到的演算法有不少,下面小編就給大家普及一下這些演算法。

一、線性回歸

一般來說,線性回歸是統計學和機器學習中最知名和最易理解的演算法之一。這一演算法中我們可以用來預測建模,而預測建模主要關注最小化模型誤差或者盡可能作出最准確的預測,以可解釋性為代價。我們將借用、重用包括統計學在內的很多不同領域的演算法,並將其用於這些目的。當然我們可以使用不同的技術從數據中學習線性回歸模型,例如用於普通最小二乘法和梯度下降優化的線性代數解。就目前而言,線性回歸已經存在了200多年,並得到了廣泛研究。使用這種技術的一些經驗是盡可能去除非常相似(相關)的變數,並去除噪音。這是一種快速、簡單的技術。

二、Logistic 回歸

它是解決二分類問題的首選方法。Logistic 回歸與線性回歸相似,目標都是找到每個輸入變數的權重,即系數值。與線性回歸不同的是,Logistic 回歸對輸出的預測使用被稱為 logistic 函數的非線性函數進行變換。logistic 函數看起來像一個大的S,並且可以將任何值轉換到0到1的區間內。這非常實用,因為我們可以規定logistic函數的輸出值是0和1並預測類別值。像線性回歸一樣,Logistic 回歸在刪除與輸出變數無關的屬性以及非常相似的屬性時效果更好。它是一個快速的學習模型,並且對於二分類問題非常有效。

三、線性判別分析(LDA)

在前面我們介紹的Logistic 回歸是一種分類演算法,傳統上,它僅限於只有兩類的分類問題。而LDA的表示非常簡單直接。它由數據的統計屬性構成,對每個類別進行計算。單個輸入變數的 LDA包括兩個,第一就是每個類別的平均值,第二就是所有類別的方差。而在線性判別分析,進行預測的方法是計算每個類別的判別值並對具備最大值的類別進行預測。該技術假設數據呈高斯分布,因此最好預先從數據中刪除異常值。這是處理分類預測建模問題的一種簡單而強大的方法。

四、決策樹

決策樹是預測建模機器學習的一種重要演算法。決策樹模型的表示是一個二叉樹。這是演算法和數據結構中的二叉樹,沒什麼特別的。每個節點代表一個單獨的輸入變數x和該變數上的一個分割點。而決策樹的葉節點包含一個用於預測的輸出變數y。通過遍歷該樹的分割點,直到到達一個葉節點並輸出該節點的類別值就可以作出預測。當然決策樹的有點就是決策樹學習速度和預測速度都很快。它們還可以解決大量問題,並且不需要對數據做特別准備。

五、樸素貝葉斯

其實樸素貝葉斯是一個簡單但是很強大的預測建模演算法。而這個模型由兩種概率組成,這兩種概率都可以直接從訓練數據中計算出來。第一種就是每個類別的概率,第二種就是給定每個 x 的值,每個類別的條件概率。一旦計算出來,概率模型可用於使用貝葉斯定理對新數據進行預測。當我們的數據是實值時,通常假設一個高斯分布,這樣我們可以簡單的估計這些概率。而樸素貝葉斯之所以是樸素的,是因為它假設每個輸入變數是獨立的。這是一個強大的假設,真實的數據並非如此,但是,該技術在大量復雜問題上非常有用。所以說,樸素貝葉斯是一個十分實用的功能。

六、K近鄰演算法

K近鄰演算法簡稱KNN演算法,KNN 演算法非常簡單且有效。KNN的模型表示是整個訓練數據集。KNN演算法在整個訓練集中搜索K個最相似實例(近鄰)並匯總這K個實例的輸出變數,以預測新數據點。對於回歸問題,這可能是平均輸出變數,對於分類問題,這可能是眾數類別值。而其中的訣竅在於如何確定數據實例間的相似性。如果屬性的度量單位相同,那麼最簡單的技術是使用歐幾里得距離,我們可以根據每個輸入變數之間的差值直接計算出來其數值。當然,KNN需要大量內存或空間來存儲所有數據,但是只有在需要預測時才執行計算。我們還可以隨時更新和管理訓練實例,以保持預測的准確性。

七、Boosting 和 AdaBoost

首先,Boosting 是一種集成技術,它試圖集成一些弱分類器來創建一個強分類器。這通過從訓練數據中構建一個模型,然後創建第二個模型來嘗試糾正第一個模型的錯誤來完成。一直添加模型直到能夠完美預測訓練集,或添加的模型數量已經達到最大數量。而AdaBoost 是第一個為二分類開發的真正成功的 boosting 演算法。這是理解 boosting 的最佳起點。現代 boosting 方法建立在 AdaBoost 之上,最顯著的是隨機梯度提升。當然,AdaBoost 與短決策樹一起使用。在第一個決策樹創建之後,利用每個訓練實例上樹的性能來衡量下一個決策樹應該對每個訓練實例付出多少注意力。難以預測的訓練數據被分配更多權重,而容易預測的數據分配的權重較少。依次創建模型,每一個模型在訓練實例上更新權重,影響序列中下一個決策樹的學習。在所有決策樹建立之後,對新數據進行預測,並且通過每個決策樹在訓練數據上的精確度評估其性能。所以說,由於在糾正演算法錯誤上投入了太多注意力,所以具備已刪除異常值的干凈數據十分重要。

八、學習向量量化演算法(簡稱 LVQ)

學習向量量化也是機器學習其中的一個演算法。可能大家不知道的是,K近鄰演算法的一個缺點是我們需要遍歷整個訓練數據集。學習向量量化演算法(簡稱 LVQ)是一種人工神經網路演算法,它允許你選擇訓練實例的數量,並精確地學習這些實例應該是什麼樣的。而學習向量量化的表示是碼本向量的集合。這些是在開始時隨機選擇的,並逐漸調整以在學習演算法的多次迭代中最好地總結訓練數據集。在學習之後,碼本向量可用於預測。最相似的近鄰通過計算每個碼本向量和新數據實例之間的距離找到。然後返回最佳匹配單元的類別值或作為預測。如果大家重新調整數據,使其具有相同的范圍,就可以獲得最佳結果。當然,如果大家發現KNN在大家數據集上達到很好的結果,請嘗試用LVQ減少存儲整個訓練數據集的內存要求

4. 機器學習GBDT和XGBoosts有何區別

首先來了解一下boosting思想,每次訓練單個弱分類器時,都將上一次分錯的數據權重提高一點再進行當前單個弱分類器的學習,這樣往後執行,訓練出來的單個弱分類器就會越在意那些容易分錯的點,最終通過加權求和的方式組合成一個最終的學習器,gradent boosting 是boosting的一種,每一次構建單個學習器時,是在之前建立的模型的損失函數的梯度下降方向, GB與Adaboost的區別在於:
AdaBoost是通過提升錯分數據點的權重來定位模型的不足。
Gradient Boosting是通過算梯度(gradient)來定位模型的不足。
主要思想是,每一次建立單個學習器時,是在之前建立的模型的損失函數的梯度下降方向,損失函數越大,說明模型越容易出錯,如果我們的模型能夠讓損失函數持續的下降,則說明我們的模型在不停的改進,而最好的方式就是讓損失函數在其梯度方向上下降。
GBDT=GB+DT(decision tree),即基分類器為決策樹時,這里的決策樹是回歸樹。
Xgboost 是GB演算法的高效實現,其中基分類器除了可以使CART也可以是線性分類器。
幾大區別:
傳統GBDT以CART作為基分類器,xgboost還支持線性分類器,這個時候xgboost相當於帶L1和L2正則化項的邏輯斯帝回歸或者線性回歸
傳統GBDT在優化時只用到了一階導數,而xgboost對代價函數進行了二階泰勒展開,用到了一階和二階導數
xgboost加入了正則項,防止過擬合
shrinkage,相當於學習率,在每完成一次迭代後,會乘上這個系數,削減每棵樹的影響
列抽樣,借鑒隨機森林的做法,支持列抽樣,不僅能降低過擬合,還能減少計算。

5. 梯度下降中的線性搜索計算學習率是怎麼理解

梯度下降法是一個最優化演算法,通常也稱為最速下降法。最速下降法是求解無約束優化問題最簡單和最古老的方法之一,雖然現在已經不具有實用性,但是許多有效演算法都是以它為基礎進行改進和修正而得到的。最速下降法是用負梯度方向為搜索方向的,最速下降法越接近目標值,步長越小,前進越慢。
梯度下降法可以用於求解非線性方程組。
顧名思義,梯度下降法的計算過程就是沿梯度下降的方向求解極小值(也可以沿梯度上升方向求解極大值)。

表示梯度方向上的搜索步長。梯度方向我們可以通過對函數求導得到,步長的確定比較麻煩,太大了的話可能會發散,太小收斂速度又太慢。一般確定步長的方法是由線性搜索演算法來確定,即把下一個點的坐標看做是ak+1的函數,然後求滿足f(ak+1)的最小值即可。
因為一般情況下,梯度向量為0的話說明是到了一個極值點,此時梯度的幅值也為0.而採用梯度下降演算法進行最優化求解時,演算法迭代的終止條件是梯度向量的幅值接近0即可,可以設置個非常小的常數閾值。

6. 人工神經網路演算法的學習率有什麼作用

1、神經網路的結構(例如2輸入3隱節點1輸出)建好後,一般就要求神經網路里的權值和閾值。現在一般求解權值和閾值,都是採用梯度下降之類的搜索演算法(梯度下降法、牛頓法、列文伯格-馬跨特法、狗腿法等等)。

2、這些演算法會先初始化一個解,在這個解的基礎上,確定一個搜索方向和一個移動步長(各種法算確定方向和步長的方法不同,也就使各種演算法適用於解決不同的問題),使初始解根據這個方向和步長移動後,能使目標函數的輸出(在神經網路中就是預測誤差)下降。

3、然後將它更新為新的解,再繼續尋找下一步的移動方向的步長,這樣不斷的迭代下去,目標函數(神經網路中的預測誤差)也不斷下降,最終就能找到一個解,使得目標函數(預測誤差)比較小。

4、而在尋解過程中,步長太大,就會搜索得不仔細,可能跨過了優秀的解,而步長太小,又會使尋解過程進行得太慢。因此,步長設置適當非常重要。

5、學習率對原步長(在梯度下降法中就是梯度的長度)作調整,如果學習率lr = 0.1,那麼梯度下降法中每次調整的步長就是0.1*梯度,

6、而在matlab神經網路工具箱里的lr,代表的是初始學習率。因為matlab工具箱為了在尋解不同階段更智能的選擇合適的步長,使用的是可變學習率,它會根據上一次解的調整對目標函數帶來的效果來對學習率作調整,再根據學習率決定步長。

7. caffe訓練網路的時候學習率應該怎麼設置

1、會更新,finetune的過程相當於繼續訓練,跟直接訓練的區別是初始化的時候:
a. 直接訓練是按照網路定義指定的方式初始化(如高斯隨機初始化)
b. finetune是用你已經有的參數文件來初始化(就是之前訓練好的caffemodel)
2、嗯,這個問題有兩種情況:比如有4個全連接層A->B->C->D
a. 你希望C層的參數不會改變,C前面的AB層的參數也不會改變,這種情況也就是D層的梯度不往前反向傳播到D層的輸入blob(也就是C層的輸出blob 沒有得到梯度),你可以通過設置D層的propagate_down為false來做到。
propagate_down的數量與輸入blob的數量相同,假如你某個層有2個輸入blob,那麼你應該在該layer的Param裡面寫上兩行:
propagate_down : 0 # 第1個輸入blob不會得到反向傳播的梯度
propagate_down : 0 # 第2個輸入blob不會得到反向傳播的梯度
這樣的話,你這個layer的梯度就不會反向傳播啦,前面的所有layer的參數也就不會改變了
b. 你希望C層的參數不會改變,但是C前面的AB層的參數會改變,這種情況,只是固定了C層的參數,C層得到的梯度依然會反向傳播給前面的B層。只需要將對應的參數blob的學習率調整為0:
你在layer裡面加上param { lr_mult: 0 }就可以了,比如全連接層裡面:
layer {
type: "InnerProct"
param { # 對應第1個參數blob的配置,也就是全連接層的參數矩陣的配置
lr_mult: 0 # 學習率為0,其他參數可以看caffe.proto裡面的ParamSpec這個類型
}
param { # 對應第2個參數blob的配置,也就是全連接層的偏置項的配置
lr_mult: 0 # 學習率為0
}
}
不知道這樣說你能不能理解

8. 分類器的選擇

如果訓練集很小,那麼高偏差/低方差分類器(如樸素貝葉斯分類器)要優於低偏差/高方差分類器(如k近鄰分類器),因為後者容易過擬合。然而,隨著訓練集的增大,低偏差/高方差分類器將開始勝出(它們具有較低的漸近誤差),因為高偏差分類器不足以提供准確的模型。

你也可以認為這是生成模型與判別模型的區別。

一些特定演算法的優點

樸素貝葉斯的優點:超級簡單,你只是在做一串計算。如果樸素貝葉斯(NB)條件獨立性假設成立,相比於邏輯回歸這類的判別模型,樸素貝葉斯分類器將收斂得更快,所以你只需要較小的訓練集。而且,即使NB假設不成立,樸素貝葉斯分類器在實踐方面仍然表現很好。如果想得到簡單快捷的執行效果,這將是個好的選擇。它的主要缺點是,不能學習特徵之間的相互作用(比如,它不能學習出:雖然你喜歡布拉德·皮特和湯姆·克魯斯的電影,但卻不喜歡他們一起合作的電影)。

邏輯回歸的優點:有許多正則化模型的方法,你不需要像在樸素貝葉斯分類器中那樣擔心特徵間的相互關聯性。與決策樹和支撐向量機不同,你還可以有一個很好的概率解釋,並能容易地更新模型來吸收新數據(使用一個在線梯度下降方法)。如果你想要一個概率框架(比如,簡單地調整分類閾值,說出什麼時候是不太確定的,或者獲得置信區間),或你期望未來接收更多想要快速並入模型中的訓練數據,就選擇邏輯回歸。

決策樹的優點:易於說明和解釋(對某些人來說—我不確定自己是否屬於這個陣營)。它們可以很容易地處理特徵間的相互作用,並且是非參數化的,所以你不用擔心異常值或者數據是否線性可分(比如,決策樹可以很容易地某特徵x的低端是類A,中間是類B,然後高端又是類A的情況)。一個缺點是,不支持在線學習,所以當有新樣本時,你將不得不重建決策樹。另一個缺點是,容易過擬合,但這也正是諸如隨機森林(或提高樹)之類的集成方法的切入點。另外,隨機森林往往是很多分類問題的贏家(我相信通常略優於支持向量機),它們快速並且可擴展,同時你不須擔心要像支持向量機那樣調一堆參數,所以它們最近似乎相當受歡迎。

SVMs的優點:高准確率,為過擬合提供了好的理論保證,並且即使你的數據在基礎特徵空間線性不可分,只要選定一個恰當的核函數,它們仍然能夠取得很好的分類效果。它們在超高維空間是常態的文本分類問題中尤其受歡迎。然而,它們內存消耗大,難於解釋,運行和調參也有些煩人,因此,我認為隨機森林正漸漸開始偷走它的「王冠」。

然而…

盡管如此,回憶一下,更好的數據往往打敗更好的演算法,設計好的特徵大有裨益。並且,如果你有一個龐大數據集,這時你使用哪種分類演算法在分類性能方面可能並不要緊(所以,要基於速度和易用性選擇演算法)。

重申我上面說的,如果你真的關心准確率,一定要嘗試各種各樣的分類器,並通過交叉驗證選擇最好的一個。或者,從Netflix Prize(和Middle Earth)中吸取教訓,只使用了一個集成方法進行選擇。

9. 機器學習演算法中GBDT和XGBOOST的區別有哪些

嘗試回答一下
首先xgboost是Gradient Boosting的一種高效系統實現,並不是一種單一演算法。xgboost裡面的基學習器除了用tree(gbtree),也可用線性分類器(gblinear)。而GBDT則特指梯度提升決策樹演算法。
xgboost相對於普通gbm的實現,可能具有以下的一些優勢:

顯式地將樹模型的復雜度作為正則項加在優化目標
公式推導里用到了二階導數信息,而普通的GBDT只用到一階
允許使用column(feature) sampling來防止過擬合,借鑒了Random Forest的思想,sklearn里的gbm好像也有類似實現。
4.實現了一種分裂節點尋找的近似演算法,用於加速和減小內存消耗。
5.節點分裂演算法能自動利用特徵的稀疏性。
6.data事先排好序並以block的形式存儲,利於並行計算
7.cache-aware, out-of-core computation,這個我不太懂。。
8.支持分布式計算可以運行在MPI,YARN上,得益於底層支持容錯的分布式通信框架rabit。

閱讀全文

與梯度提升分類器數量學習率相關的資料

熱點內容
污水處理廠污泥含銅 瀏覽:396
降低膜蒸餾溫度極化 瀏覽:353
反滲透電導高6 瀏覽:217
陰陽離子交換膜耐酸鹼性 瀏覽:283
凈水器安裝網上怎麼找活動 瀏覽:284
反滲透cod是測的什麼 瀏覽:4
黔西污水流出來打什麼電話 瀏覽:602
ro膜對bod去除率 瀏覽:75
回乳用黨參 瀏覽:58
純水處理專利怎麼寫 瀏覽:577
油煙凈化器怎麼測量效率 瀏覽:326
機油濾芯中間螺紋孔大小怎麼算 瀏覽:117
成都純水處理廠家 瀏覽:470
噴淋塔的廢水怎麼處理 瀏覽:731
廢水處理污泥特點 瀏覽:813
廣州污水提升器多少錢報價 瀏覽:405
怎麼拒絕推銷凈水器的還能讓他不高興 瀏覽:600
宣城污水泵多少錢 瀏覽:668
酚醛樹脂塗膜液 瀏覽:661
工業水處理設備怎麼換樹脂 瀏覽:782