自我學習 (self-training)

自我訓練就是通過一系列的步驟,用已有的有標籤的數據(labelled data),去對剩下的還未標記的數據打標籤。從而使得訓練數據(training data)更多。具體步驟如下:

  1. 初始化有標籤數據和無標籤數據
  2. 重複:a) 用有標籤的數據去訓練一個模型

b) 用這個模型來對沒有標籤的數據做預測

c) 只選取最有把握的預測結果來標記數據(unlabelled data)

d) 把新標記好的數據加入到原來的標記好的數據集中,同時把他們從原來的數據集中刪除

  1. 直到數據集不發生變化

注意不發生變化的可能性有兩種,一種是所有的數據最終都被打了標籤,另一種是該模型找不到「有把握」的預測結果了。

下面以KNN (K-Nearest Neighbour) 為例:每一次都只找一個最有把握的預測結果。三角形表示為未做標記的數據集。圓形和正方形就是2類數據。

協同學習 (co-training)

和自我學習一樣,協同學習的目的也是為了用現有的有標籤的數據去標記其他數據。具體步驟如下:假設現在有數據集,每組數據有2個特徵(feature): x1 和 x2。我們把其中有標籤的那部分數據集稱為L (表示為[x1,x2,y]),沒有標籤的數據集稱為U (表示為[x1,x2])。

  1. 初始化數據,把L 分為L1 ([x1,y]) 和L2 ([x2,y])。這裡注意,L 是一個數據集,裡麪包涵了很多數據,我就順便提醒一下。
  2. 重複:a) 分別用L1和L2訓練出一個模型 F1和F2

b) 分別用模型F1和F2去預測U (給U打標籤),同樣這裡也是隻選出最有把握的一些結果。

c) 把F1預測的結果放入L2,把F2預測的結果放入L1 (交叉放置)

d) 更新L 和 U

3. 直到數據集不發生變化 (和自我學習一樣)

推薦閱讀:

相關文章