『壹』 如何用OpenCV自帶的adaboost程序訓練並檢測目標
每個Haar特徵對應看一個弱分類器,但並不是任伺一個Haar特徵都能較好的描述人臉灰度分布的某一特點,如何從大量的Haar特徵中挑選出最優的Haar特徵並製作成分類器用於人臉檢測,這是AdaBoost演算法訓練過程所要解決的關鍵問題。
Paul Viola和Michael Jones於2001年將Adaboost演算法應用於人臉檢測中,其基本思想是針對不同的訓練集訓練同一個分類器(弱分類器),然後把這些不同訓練集上的得到的分類器聯合起來,構成一個最終的強分類器。Adaboost 演算法中不同的訓練集是通過調整每個樣本對應的權重來實現的。開始時,每個樣本對應的權重是相同的,對於h1 分類錯誤的樣本,加大其對應的權重; 而對於分類正確的樣本, 降低其權重, 這樣分錯的樣本就被突出出來,從而得到一個新的樣本分布 U2 。在新的樣本分布下,再次對弱分類器進行訓練,得到弱分類器 h2 。依次類推,經過 T 次循環,得到 T 個弱分類器,把這 T 個弱分類器按一定的權重疊加(boost)起來,得到最終想要的強分類器。
訓練系統總體框架,由「 訓練部分」和 「 補充部分」構成。依據系統框架,本文的訓練系統可分為以下幾個模塊:
(1)以樣本集為輸入,在給定的矩形特徵原型下,計算並獲得矩形特徵集;
(2)以特徵集為輸入,根據給定的弱學習演算法,確定閩值,將特徵與弱分類器一一對應,獲得弱分類器集;
(3)以弱分類器集為輸入, 在訓練檢出率和誤判率限制下, 使用A d a B o o s t 演算法
挑選最優的弱分類器構成強分類器;
(4)以強分類器集為輸入,將其組合為級聯分類器;
(5)以非人臉圖片集為輸入,組合強分類器為臨時的級聯分類器,篩選並補充
非人臉樣本。
訓練樣本的選擇:
訓練樣本要求是面部特寫圖像,圖1是一簇訓練樣本,大小被歸一化為24×24像素,其中正訓練樣本要求是面部特寫圖像,但是人臉形態千差萬別,所以訓練樣本選取過程中要考慮到樣本的多樣性。負訓練樣本,大小被歸一化為24×24像素,其中各樣本不完全相同,分別具有一定的代表性。
訓練過程分為3個步驟:首先需要提取Haar特徵;然後將Haar特徵轉化成對應的弱分類器;最後從大量的弱分類器中迭代選擇出最優弱分類器。
(1)提取Haar特徵
常用的Haar特徵有4種,如圖2所示。當然也可以在這4種特徵的基礎上設計出更多、更復雜的特徵。以大小為24X24像素的訓練樣本為例,上述4種特徵的總個數超過了160000個。這樣龐大的數字給後續的迭代訓練工作帶來了龐大的計算量,直接導致AdaBoost演算法訓練過程極為費時,這恰恰是演算法需要改進的關鍵問題之一o
(2)生成弱分類器
每一個Haar特徵都對應著一個弱分類器,每一個弱分類器都是根據它所對應的Haar特徵的參數來定義的。利用上述Haar特徵的位置信息,對訓練樣本進行統計就可以得到對應的特徵參數。AdaBoost演算法中所訓練的弱分類器是任何分類器,包括決策樹,神經網路,隱馬爾科夫模型,如果弱分類器是線性神經網路,那麼AdaBoost演算法每次將構造多層感知器的一個節點。
(3)採用AdaBoost演算法選取優化的弱分類器
AdaBoost演算法訓練過程就是挑選最優弱分類器,並賦予權重過程,圖3是AdaBoost演算法訓練示意圖。
用OpenCV自帶的adaboost程序訓練分類器:(原文在此,本文稍作修改)
新手FAQ
一篇類似的文章
重要!可能遇到的問題:
1.如果跑到某一個分類器時,幾個小時也沒有反應,而且顯示不出訓練百分比,這是因為你的負樣本數量太少,或者負樣本的尺寸太小,所有的負樣本在這個分類器都被reject了,程序進入不了下一個循環,果斷放棄吧。解決方法:負樣本盡量要大一些,比如我的正樣本是40*15,共300個,負樣本是640*480,共500個。
2.讀取樣本時報錯:Negative or too large argument of CvAlloc function,網上說這個錯誤是因為opencv規定單幅iplimage的內存分配不能超過10000,可是我的每個負樣本都不會超過這個大小,具體原因不明。後來我把負樣本的數量減少,尺寸加大,這個問題就解決了。
3.訓練的過程可能經常出錯,耐心下來不要著急,我在訓練MRI分類器的時候失敗了無數次。失敗的時候有兩件事可以做,第一,調整正負樣本的數量,再試。第二,調整負樣本的大小,祝大家好運。
一、簡介
目標檢測方法最初由Paul Viola [Viola01]提出,並由Rainer Lienhart [Lienhart02]對這一方法進行了改善。該方法的基本步驟為: 首先,利用樣本(大約幾百幅樣本圖片)的 harr 特徵進行分類器訓練,得到一個級聯的boosted分類器。分類器中的"級聯"是指最終的分類器是由幾個簡單分類器級聯組成。在圖像檢測中,被檢窗口依次通過每一級分類器, 這樣在前面幾層的檢測中大部分的候選區域就被排除了,全部通過每一級分類器檢測的區域即為目標區域。
分類器訓練完以後,就可以應用於輸入圖像中的感興趣區域的檢測。檢測到目標區域分類器輸出為1,否則輸出為0。為了檢測整副圖像,可以在圖像中移動搜索窗口,檢測每一個位置來確定可能的目標。 為了搜索不同大小的目標物體,分類器被設計為可以進行尺寸改變,這樣比改變待檢圖像的尺寸大小更為有效。所以,為了在圖像中檢測未知大小的目標物體,掃描程序通常需要用不同比例大小的搜索窗口對圖片進行幾次掃描。
目前支持這種分類器的boosting技術有四種: Discrete Adaboost, Real Adaboost, Gentle Adaboost and Logitboost。"boosted" 即指級聯分類器的每一層都可以從中選取一個boosting演算法(權重投票),並利用基礎分類器的自我訓練得到。
根據上面的分析,目標檢測分為三個步驟:
1、 樣本的創建
2、 訓練分類器
3、 利用訓練好的分類器進行目標檢測。
『貳』 如何在Boosting演算法中使用SVM
其實現在能夠找到的,關於SVM的中文資料已經不少了,不過個人覺得,每個人的理解都不太一樣,所以還是決定寫一寫,一些雷同的地方肯定是不可避免的,不過還是希望能夠寫出一點與別人不一樣的地方吧。另外本文准備不談太多的數學(因為很多文章都談過了),盡量簡單地給出結論,就像題目一樣-機器學習中的演算法(之前叫做機器學習中的數學),所以本系列的內容將更偏重應用一些。如果想看更詳細的數學解釋,可以看看參考文獻中的資料。
一、線性分類器:
首先給出一個非常非常簡單的分類問題(線性可分),我們要用一條直線,將下圖中黑色的點和白色的點分開,很顯然,圖上的這條直線就是我們要求的直線之一(可以有無數條這樣的直線)
假如說,我們令黑色的點 = -1, 白色的點 = +1,直線f(x) = w.x + b,這兒的x、w是向量,其實寫成這種形式也是等價的f(x) = w1x1 + w2x2 … + wnxn + b, 當向量x的維度=2的時候,f(x) 表示二維空間中的一條直線, 當x的維度=3的時候,f(x) 表示3維空間中的一個平面,當x的維度=n > 3的時候,表示n維空間中的n-1維超平面。這些都是比較基礎的內容,如果不太清楚,可能需要復習一下微積分、線性代數的內容。
剛剛說了,我們令黑色白色兩類的點分別為+1, -1,所以當有一個新的點x需要預測屬於哪個分類的時候,我們用sgn(f(x)),就可以預測了,sgn表示符號函數,當f(x) > 0的時候,sgn(f(x)) = +1, 當f(x) < 0的時候sgn(f(x)) = –1。
但是,我們怎樣才能取得一個最優的劃分直線f(x)呢?下圖的直線表示幾條可能的f(x)
一個很直觀的感受是,讓這條直線到給定樣本中最近的點最遠,這句話讀起來比較拗口,下面給出幾個圖,來說明一下:
第一種分法:
第二種分法:
這兩種分法哪種更好呢?從直觀上來說,就是分割的間隙越大越好,把兩個類別的點分得越開越好。就像我們平時判斷一個人是男還是女,就是很難出現分錯的情況,這就是男、女兩個類別之間的間隙非常的大導致的,讓我們可以更准確的進行分類。在SVM中,稱為Maximum Marginal,是SVM的一個理論基礎之一。選擇使得間隙最大的函數作為分割平面是由很多道理的,比如說從概率的角度上來說,就是使得置信度最小的點置信度最大(聽起來很拗口),從實踐的角度來說,這樣的效果非常好,等等。這里就不展開講,作為一個結論就ok了,:)
上圖被紅色和藍色的線圈出來的點就是所謂的支持向量(support vector)。
上圖就是一個對之前說的類別中的間隙的一個描述。Classifier Boundary就是f(x),紅色和藍色的線(plus plane與minus plane)就是support vector所在的面,紅色、藍色線之間的間隙就是我們要最大化的分類間的間隙。
這里直接給出M的式子:(從高中的解析幾何就可以很容易的得到了,也可以參考後面Moore的ppt)
『叄』 如何理解機器學習演算法在大數據裡面的應用
現在深度學習在機器學習領域是一個很熱的概念,不過經過各種媒體的轉載播報,這個概念也逐漸變得有些神話的感覺:例如,人們可能認為,深度學習是一種能夠模擬出人腦的神經結構的機器學習方式,從而能夠讓計算機具有人一樣的智慧;而這樣一種技術在將來無疑是前景無限的。那麼深度學習本質上又是一種什麼樣的技術呢?
深度學習是什麼
深度學習是機器學習領域中對模式(聲音、圖像等等)進行建模的一種方法,它也是一種基於統計的概率模型。在對各種模式進行建模之後,便可以對各種模式進行識別了,例如待建模的模式是聲音的話,那麼這種識別便可以理解為語音識別。而類比來理解,如果說將機器學習演算法類比為排序演算法,那麼深度學習演算法便是眾多排序演算法當中的一種(例如冒泡排序),這種演算法在某些應用場景中,會具有一定的優勢。
深度學習的「深度」體現在哪裡
論及深度學習中的「深度」一詞,人們從感性上可能會認為,深度學習相對於傳統的機器學習演算法,能夠做更多的事情,是一種更為「高深」的演算法。而事實可能並非我們想像的那樣,因為從演算法輸入輸出的角度考慮,深度學習演算法與傳統的有監督機器學習演算法的輸入輸出都是類似的,無論是最簡單的Logistic Regression,還是到後來的SVM、boosting等演算法,它們能夠做的事情都是類似的。正如無論使用什麼樣的排序演算法,它們的輸入和預期的輸出都是類似的,區別在於各種演算法在不同環境下的性能不同。
那麼深度學習的「深度」本質上又指的是什麼呢?深度學習的學名又叫深層神經網路(Deep Neural Networks ),是從很久以前的人工神經網路(Artificial Neural Networks)模型發展而來。這種模型一般採用計算機科學中的圖模型來直觀的表達,而深度學習的「深度」便指的是圖模型的層數以及每一層的節點數量,相對於之前的神經網路而言,有了很大程度的提升。
深度學習也有許多種不同的實現形式,根據解決問題、應用領域甚至論文作者取名創意的不同,它也有不同的名字:例如卷積神經網路(Convolutional Neural
『肆』 Bagging與Boosting最大的不同在哪裡它們對模型性能最大的貢獻在哪裡
兩種不同的集成演算法,Bagging採用重復取樣:boostrap 每個個體分類器所採用的訓練樣本都是從訓練集中按等概率抽取的,因此Bagging的各子網能夠很好的覆蓋訓練樣本空間,從而有著良好的穩定性。
而Boosting注重分類錯誤的樣本,將個體子網分類錯誤的訓練樣本的權重提高,降低分類錯誤的樣本權重,並依據修改後的樣本權重來生成新的訓練樣本空間並用來訓練下一個個體分類器。然而,由於Boosting演算法可能會將雜訊樣本或分類邊界樣本的權重過分累積,因此Boosting很不穩定,但其在通常情況下,其泛化能力是最理想的集成演算法之一。
你得自己去查文獻,別來這問,這沒人做學術的,我也是偶爾看到你的提問。
『伍』 如何使用OpenCV中的AdBoost演算法訓練分類器
OpenCV訓練分類器
一、簡介
目標檢測方法最初由Paul Viola [Viola01]提出,並由Rainer Lienhart [Lienhart02]對這一方法進行了改善。
該方法的基本步驟為:
首先,利用樣本(大約幾百幅樣本圖片)的 harr 特徵進行分類器訓練,得到一個級聯的boosted分類器。
分類器中的"級聯"是指最終的分類器是由幾個簡單分類器級聯組成。在圖像檢測中,被檢窗口依次通過每一級分類器, 這樣在前面幾層的檢測中大部分的候選區域就被排除了,全部通過每一級分類器檢測的區域即為目標區域。
分類器訓練完以後,就可以應用於輸入圖像中的感興趣區域(與訓練樣本相同的尺寸)的檢測。檢測到目標區域(汽車或人臉)分類器輸出為1,否則輸出為0。為了檢測整副圖像,可以在圖像中移動搜索窗口,檢測每一個位置來確定可能的目標。為了搜索不同大小的目標物體,分類器被設計為可以進行尺寸改變,這樣比改變待檢圖像的尺寸大小更為有效。所以,為了在圖像中檢測未知大小的目標物體,掃描程序通常需要用不同比例大小的搜索窗口對圖片進行幾次掃描。
目前支持這種分類器的boosting技術有四種:
Discrete Adaboost, Real Adaboost, Gentle Adaboost and Logitboost。
"boosted" 即指級聯分類器的每一層都可以從中選取一個boosting演算法(權重投票),並利用基礎分類器的自我訓練得到。
根據上面的分析,目標檢測分為三個步驟:
1、 樣本的創建
2、 訓練分類器
3、 利用訓練好的分類器進行目標檢測。
二、樣本創建
訓練樣本分為正例樣本和反例樣本,其中正例樣本是指待檢目標樣本(例如人臉或汽車等),反例樣本指其它任意圖片,所有的樣本圖片都被歸一化為同樣的尺寸大小(例如,20x20)。
負樣本
負樣本可以來自於任意的圖片,但這些圖片不能包含目標特徵。負樣本由背景描述文件來描述。背景描述文件是一個文本文件,每一行包含了一個負樣本圖片的文件名(基於描述文件的相對路徑)。該文件必須手工創建。
e.g: 負樣本描述文件的一個例子:
假定目錄結構如下:
/img
img1.jpg
img2.jpg
bg.txt
則背景描述文件bg.txt的內容為:
img/img1.jpg
img/img2.jpg
正樣本
正樣本由程序craatesample程序來創建。該程序的源代碼由OpenCV給出,並且在bin目錄下包含了這個可執行的程序。
正樣本可以由單個的目標圖片或者一系列的事先標記好的圖片來創建。
Createsamples程序的命令行參數:
命令行參數:
-vec
訓練好的正樣本的輸出文件名。
-img
源目標圖片(例如:一個公司圖標)
-bg
背景描述文件。
-num
要產生的正樣本的數量,和正樣本圖片數目相同。
-bgcolor
背景色(假定當前圖片為灰度圖)。背景色制定了透明色。對於壓縮圖片,顏色方差量由bgthresh參數來指定。則在bgcolor-bgthresh和bgcolor+bgthresh中間的像素被認為是透明的。
-bgthresh
-inv
如果指定,顏色會反色
-randinv
如果指定,顏色會任意反色
-maxidev
背景色最大的偏離度。
-maxangel
-maxangle,
-maxzangle
最大旋轉角度,以弧度為單位。
-show
如果指定,每個樣本會被顯示出來,按下"esc"會關閉這一開關,即不顯示樣本圖片,而創建過程繼續。這是個有用的debug選項。
-w
輸出樣本的寬度(以像素為單位)
-h《sample_height》
輸出樣本的高度,以像素為單位。
註:正樣本也可以從一個預先標記好的圖像集合中獲取。這個集合由一個文本文件來描述,類似於背景描述文件。每一個文本行對應一個圖片。每行的第一個元素是圖片文件名,第二個元素是對象實體的個數。後面緊跟著的是與之匹配的矩形框(x, y, 寬度,高度)。
『陸』 boosting演算法 怎麼運用在分類器中
boosting演算法 怎麼運用在分類器中
細解釋下,boosting中最基本的是adaboost,你要是弄清楚這個演算法其他主要原理都差不多,只是實現手段或者說採用的數學公式不同。它是這樣的:先對所有樣本輔以一個抽樣權重(一般開始的時候權重都一樣即認為均勻分布),在此樣本上訓練一個分類器對樣本分類,這樣可以得到這個分類器的誤差率,我們根據它的誤差率賦以一個權重,大體是誤差越大權重就越小,針對這次分錯的樣本我們增大它的抽樣權重,這樣訓練的下一個分類器就會側重這些分錯的樣本,然後有根據它的誤差率又計算權重,就這樣依次迭代,最後我們得到的強分類器就是多個弱分類器的加權和。我們可以看出性能好的分類器權重大一些,這就體現了boosting的精髓。
春雨絲絲潤萬物 紅梅點點綉千山 春意盎然
『柒』 matlab中Boosting演算法的代碼是什麼
先看這個結構裡面的這些函數都是干什麼用的,prob,概率。[1:keep],這里應該能大概看出來keep是整數,1:keep等價於1:1:keep,比如1:10,就是1,2,3,4,5,6,7,8,9,10。步長為1,從1到keep.右上角的',這個符號,表示轉置,比如1:10,是一個1行10列的矩陣,通過轉置變成10行一列。其中,sum([1:keep]),表示對這個矩陣(從1到keep求和),但是這個語句prob=flipud([1:keep]'/sum([1:keep]));裡面總覺得缺少了一個.。prob=flipud([1:keep]'./sum([1:keep]));這樣看來應該才能運行,我沒嘗試,在commandwindow裡面直接做是可以的,但是在腳本文件裡面做,可能會報錯。這個和矩陣運算有關,暫且放在這里。然後到外部,這樣我們知道了在第一行flipud()函數體裡面,實際上是在用1到keep的每一個數,除以1到keep的和值,得到一個長度為keep的矩陣。值得注意的是,這個矩陣的和值為1,在下面會用到這一點。然後flipud()函數的作用,是把矩陣倒置,比如[1,3,4,5],使用flipud()之後變成[5,4,3,1]。注意,這個操作和sort()函數不同,這個只是把以前的順序倒置,並不排序。從這里大概可以看出來,其實這個keep的值,等於chromosomes,染色體數量。這樣,對於不同的染色體,配對概率就不一樣了。從這里可以看出來,染色體配對概率應該是第一條最高,然後依次遞減。然後計算或然率,cumsum(),進行累加求和,比如matlab中給出的例子,我們用[1,2,3]也可以寫作1:3,來說,cumsum之後的結果是[1,3,6],也就是從第一個開始加和,一直加到這一項。這一點,非常類似高斯函數積分的感覺。用來計算概率cumulativedistribution。然後odd變數,把0加在了cumsum結果的前面,比如剛剛的例子[0cumsum([1,2,3])],就變成了[0,1,3,6]。注意這個地方他又轉置了一次,因為在第一行計算prob的時候,他把一個行向量,轉換成了列向量,然後現在要把0加在頭上,所以在進行cumsun()運算的時候,又把結果從列向量轉換成了行向量。僅從這兩行代碼裡面,就大概只能看出這個意思了。不過簡單一說,現在看不出來這個遺傳演算法的核心是什麼樣的,一般的神經網路裡面只有連鎖交換定律的應用,一般沒有基因分離定律的應用。看這個樣子,這是分離出來然後自由配對的做法,應該是比較高端的東西吧。
『捌』 機器學習一般常用的演算法有哪些
機器學習是人工智慧的核心技術,是學習人工智慧必不可少的環節。機器學習中有很多演算法,能夠解決很多以前難以企的問題,機器學習中涉及到的演算法有不少,下面小編就給大家普及一下這些演算法。
一、線性回歸
一般來說,線性回歸是統計學和機器學習中最知名和最易理解的演算法之一。這一演算法中我們可以用來預測建模,而預測建模主要關注最小化模型誤差或者盡可能作出最准確的預測,以可解釋性為代價。我們將借用、重用包括統計學在內的很多不同領域的演算法,並將其用於這些目的。當然我們可以使用不同的技術從數據中學習線性回歸模型,例如用於普通最小二乘法和梯度下降優化的線性代數解。就目前而言,線性回歸已經存在了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減少存儲整個訓練數據集的內存要求