EL之AdaBoost:集成学习之AdaBoost算法的简介、应用、经典案例之详细攻略
EL之AdaBoost:集成學(xué)習(xí)之AdaBoost算法的簡(jiǎn)介、應(yīng)用、經(jīng)典案例之詳細(xì)攻略
?
目錄
AdaBoost算法的簡(jiǎn)介
1、理解AdaBoost算法
1.1、從前向逐步遞增角度來(lái)看理解AdaBoost:要找到最優(yōu)的f很難→每次遞增。
1.2、前向逐步遞增的損失函數(shù)—L2Boosting
2、AdaBoost M1算法證明過(guò)程
AdaBoost算法的經(jīng)典案例
1、預(yù)測(cè)馬疝病是否死亡的數(shù)據(jù)集
?
AdaBoost算法的簡(jiǎn)介
? ? ? ? Adaptive Boosting或稱(chēng)為AdaBoost,是多種學(xué)習(xí)算法的融合。Adaboost是一種迭代算法,其核心思想是針對(duì)同一個(gè)訓(xùn)練集訓(xùn)練不同的分類(lèi)器(弱分類(lèi)器),然后把這些弱分類(lèi)器集合起來(lái),構(gòu)成一個(gè)更強(qiáng)的最終分類(lèi)器(強(qiáng)分類(lèi)器)。
? ? ? ? 算法本身是通過(guò)改變數(shù)據(jù)分布來(lái)實(shí)現(xiàn)的,它根據(jù)每次訓(xùn)練集之中每個(gè)樣本的分類(lèi)是否正確,以及上次的總體分類(lèi)的準(zhǔn)確率,來(lái)確定每個(gè)樣本的權(quán)值。將修改過(guò)權(quán)值的新數(shù)據(jù)集送給下層分類(lèi)器進(jìn)行訓(xùn)練,最后將每次訓(xùn)練得到的分類(lèi)器融合起來(lái),作為最后的決策分類(lèi)器。使用adaboost分類(lèi)器可以排除一些不必要的訓(xùn)練數(shù)據(jù)特征,并放在關(guān)鍵的訓(xùn)練數(shù)據(jù)上面。
? ? ? ? AdaBoost是最常用的算法。它可用于回歸或者分類(lèi)算法。相比其他機(jī)器學(xué)習(xí)算法,它克服了過(guò)擬合的問(wèn)題,通常對(duì)異常值和噪聲數(shù)據(jù)敏感。為了創(chuàng)建一個(gè)強(qiáng)大的復(fù)合學(xué)習(xí)器,AdaBoost使用了多次迭代。因此,它又被稱(chēng)為“Adaptive Boosting”。通過(guò)迭代添加弱學(xué)習(xí)器,AdaBoost創(chuàng)建了一個(gè)強(qiáng)學(xué)習(xí)器。一個(gè)新的弱學(xué)習(xí)器加到實(shí)體上,并且調(diào)整加權(quán)向量,作為對(duì)前一輪中錯(cuò)誤分類(lèi)的樣例的回應(yīng)。得到的結(jié)果,是一個(gè)比弱分類(lèi)器有更高準(zhǔn)確性的分類(lèi)器。
? ? ? ? AdaBoost有助于將弱閾值的分類(lèi)器提升為強(qiáng)分類(lèi)器。上面的圖像描述了AdaBoost的執(zhí)行,只用了簡(jiǎn)單易于理解的代碼在一個(gè)文件中就實(shí)現(xiàn)了。這個(gè)函數(shù)包含一個(gè)弱分類(lèi)器和boosting組件。弱分類(lèi)器在一維的數(shù)據(jù)中嘗試去尋找最理想的閾值來(lái)將數(shù)據(jù)分離為兩類(lèi)。boosting組件迭代調(diào)用分類(lèi)器,經(jīng)過(guò)每一步分類(lèi),它改變了錯(cuò)誤分類(lèi)示例的權(quán)重。因此,創(chuàng)建了一個(gè)級(jí)聯(lián)的弱分類(lèi)器,它的行為就像一個(gè)強(qiáng)分類(lèi)器。
? ? ? ? 目前,對(duì)Adaboost算法的研究以及應(yīng)用大多集中于分類(lèi)問(wèn)題,同時(shí)近年也出現(xiàn)了一些在回歸問(wèn)題上的應(yīng)用。Adaboost系列主要解決了:兩類(lèi)問(wèn)題、多類(lèi)單標(biāo)簽問(wèn)題、多類(lèi)多標(biāo)簽問(wèn)題、大類(lèi)單標(biāo)簽問(wèn)題和回歸問(wèn)題。它用全部的訓(xùn)練樣本進(jìn)行學(xué)習(xí)。
以上主要參考:《2019中國(guó)人工智能發(fā)展報(bào)告》—清華大學(xué)中國(guó)工程院知識(shí)智能中心—201912
?
1、理解AdaBoost算法
1.1、從前向逐步遞增角度來(lái)看理解AdaBoost:要找到最優(yōu)的f很難→每次遞增。
1.2、前向逐步遞增的損失函數(shù)—L2Boosting
?
?
?
2、AdaBoost M1算法證明過(guò)程
(1)、證明過(guò)程
?
?
?
?
AdaBoost算法的經(jīng)典案例
相關(guān)文章:機(jī)器學(xué)習(xí)實(shí)戰(zhàn)之AdaBoost算法
1、預(yù)測(cè)馬疝病是否死亡的數(shù)據(jù)集
#自適應(yīng)加載數(shù)據(jù) def loadDataSet(filename):#創(chuàng)建數(shù)據(jù)集矩陣,標(biāo)簽向量dataMat=[];labelMat=[]#獲取特征數(shù)目(包括最后一類(lèi)標(biāo)簽)#readline():讀取文件的一行#readlines:讀取整個(gè)文件所有行numFeat=len(open(filename).readline().split('\t'))#打開(kāi)文件fr=open(filename)#遍歷文本每一行for line in fr.readlines():lineArr=[]curLine=line.strip().split('\t')for i in range(numFeat-1):lineArr.append(float(curLine[i]))#數(shù)據(jù)矩陣dataMat.append(lineArr)#標(biāo)簽向量labelMat.append(float(curLine[-1]))return dataMat,labelMat#自適應(yīng)加載數(shù)據(jù) def loadDataSet(filename):#創(chuàng)建數(shù)據(jù)集矩陣,標(biāo)簽向量dataMat=[];labelMat=[]#獲取特征數(shù)目(包括最后一類(lèi)標(biāo)簽)#readline():讀取文件的一行#readlines:讀取整個(gè)文件所有行numFeat=len(open(filename).readline().split('\t'))#打開(kāi)文件fr=open(filename)#遍歷文本每一行for line in fr.readlines():lineArr=[]curLine=line.strip().split('\t')for i in range(numFeat-1):lineArr.append(float(curLine[i]))#數(shù)據(jù)矩陣dataMat.append(lineArr)#標(biāo)簽向量labelMat.append(float(curLine[-1]))return dataMat,labelMat#訓(xùn)練和測(cè)試分類(lèi)器 def classify():#利用訓(xùn)練集訓(xùn)練分類(lèi)器datArr,labelArr=loadDataSet('horseColicTraining2.txt')#得到訓(xùn)練好的分類(lèi)器classifierArray=adaBoostTrainDS(datArr,labelArr,10)#利用測(cè)試集測(cè)試分類(lèi)器的分類(lèi)效果testArr,testLabelArr=loadDataSet('horseClicTest2.txt')prediction=adaClassify(testArr,classifierArray)#輸出錯(cuò)誤率num=shape(mat(labelArr))[1]errArr=mat(ones((num,1)))error=errArr[prediction!=mat(testLabelArr).T].sum()print("the errorRate is: %.2f",errorRate=float(error)/float((num)))?
?
?
?
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的EL之AdaBoost:集成学习之AdaBoost算法的简介、应用、经典案例之详细攻略的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 成功解决model_selection\
- 下一篇: 成功解决 .Quit() File CO