遷移學習算法之TrAdaBoost ——本質上是在用不同分布的訓練數據,訓練出一個分類器


遷移學習算法之TrAdaBoost

     TradaBoost算法由來已久,具體算法可以參考作者的原始文章,Boosting For Transfer Learning

1.問題定義

       傳統的機器學習的模型都是建立在訓練數據和測試數據服從相同的數據分布的基礎上。典型的比如有監督學習,我們可以在訓練數據上面訓練得到一個分類器,用於測試數據。但是在許多的情況下,這種同分布的假設並不滿足,有時候我們的訓練數據會過期,而重新去標注新的數據又是十分昂貴的。這個時候如果丟棄訓練數據又是十分可惜的,所以我們就想利用這些不同分布的訓練數據,訓練出一個分類器,在我們的測試數據上可以取得不錯的分類效果。

      定義問題模型如下:設為源樣例空間,為輔助樣例空間。源樣例空間也就是我們的目標空間,就是想要去分類的樣例空間。設Y={0,1}為類別空間,這里簡化了多分類問題為二分類問題討論,這樣我們的訓練數據也就是

測試數據:

  

其中測試數據是未標注的,我們可以將訓練數據划分為兩個數據集:   

                

       其中代表樣本數據x的真實所屬的類別,的區別在於和測試數據S是同分布的,和測試數據是不同分布的,現在的任務就是給定很少的源數據和大量的輔助數據訓練出一個分類器在測試數據S上的分類誤差最小。這里假設利用已有的數據不足以訓練出一個泛化能力很強的分類器。

2.TrAdaBoost算法

      我們利用AdaBoost算法的思想原理來解決這個問題,起初給訓練數據T中的每一個樣例都賦予一個權重,當一個源域中的樣本被錯誤的分類之后,我們認為這個樣本是很難分類的,於是乎可以加大這個樣本的權重,這樣在下一次的訓練中這個樣本所占的比重就更大了,這一點和基本的AdaBoost算法的思想是一樣的。如果輔助數據集中的一個樣本被錯誤的分類了,我們認為這個樣本對於目標數據是很不同的,我們就降低這個數據在樣本中所占的權重,降低這個樣本在分類器中所占的比重,下面給出TradaBoost算法的具體流程:

      

       可以看到,在每一輪的迭代中,如果一個輔助訓練數據被誤分類,那么這個數據可能和源訓練數據是矛盾的,那么我們就可以降低這個數據的權重。具體來說,就是給數據乘上一個,其中的值在0到1之間,所以在下一輪的迭代中,被誤分類的樣本就會比上一輪少影響分類模型一些,在若干次以后,輔助數據中符合源數據的那些數據會擁有更高的權重,而那些不符合源數據的權重會降低。極端的一個情況就是,輔助數據被全部忽略,訓練數據就是源數據Tb,這樣這時候的算法就成了AdaBoost算法了。在計算錯誤率的時候,當計算得到的錯誤率大於0.5的話,需要將其重置為0.5。

       可以看到,TrAdaBoost算法在源數據和輔助數據具有很多的相似性的時候可以取得很好效果,但是算法也有不足,當開始的時候輔助數據中的樣本如果噪聲比較多,迭代次數控制的不好,這樣都會加大訓練分類器的難度。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM