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