1. 程式人生 > >半監督學習之self-training

半監督學習之self-training

一,半監督學習

  半監督學習是一種介於監督式學習和無監督學習之間的學習正規化,我們都知道,在監督式學習中,樣本的類別標籤都是已知的,學習的目的找到樣本的特徵與類別標籤之間的聯絡。一般來講訓練樣本的數量越多,訓練得到的分類器的分類精度也會越高。但是在很多現實問題當中,一方面由於人工標記樣本的成本十分高昂,導致了有標籤的樣本十分稀少。而另一方面,無標籤的樣本很容易被收集到,其數量往往是有標籤樣本的上百倍。半監督學習(這裡僅針對半監督分類)就是要利用大量的無標籤樣本和少量的有標籤樣本來訓練分類器,解決有標籤樣本不足這個難題。

二,self-training

self-training可能是最早被提出來的半監督學習方法,最早可以追溯到Scudder(1965)。self-training相比其它的半監督學習方法的優勢在於簡單以及不需要任何假設。這裡寫圖片描述


上面是self-training的演算法流程圖,簡單解釋一下:
1,將初始的有標籤資料集作為初始的訓練集(Xtrain,ytrain)=(Xl,yl),根據訓練集訓練得到一個初始分類器Cint
2,利用Cint對無標籤資料集Xu中的樣本進行分類,選出最有把握的樣本(Xconf,yconf)
3,從Xu中去掉(Xconf,yconf)
4,將(Xconf,yconf)加入到有標籤資料集中,(Xtrain,ytrain)(Xl,yl)(Xconf,yconf)
5,根據新的訓練集訓練新的分類器,重複步驟2到5直到滿足停止條件(例如所有無標籤樣本都被標記完了)
最後得到的分類器就是最終的分類器。