【轉載】MLC(Multi-Label Classification) 多標籤分類

 

什麼是MLC?(Multi-label Classification)

MLC 多標籤分類。

  • 多類分類 & 多標籤分類 

多標籤分類,是一種有別於多類分類的算法,舉個例子:
        假設有類["酸", "甜", "苦", "辣", "香"],

多類分類就是 "這個水果點酸"(label="酸"),"這個菜看起來很香"(label="香");

多標籤分類則是"辣子雞雖然嚐起來很香,就是太辣了"(label=["辣", "香"]),"酸酸乳就是又酸又甜的"(labe=["酸","甜"])。

明顯可以發現,多類分類有且只有一個標籤,而多標籤分類可以有多個標籤(且不定)

  • 難點

(1)類標數量不確定,有些樣本可能只有一個類標,有些樣本的類標可能高達幾十甚至上百個。 

(2)類標之間相互依賴,例如包含藍天類標的樣本很大概率上包含白雲,如何解決類標之間的依賴性問題也是一大難點。

(3)多標籤的訓練集比較難以獲取。

 

如何解決MLC問題

   目前有很多關於多標籤的學習算法,依據解決問題的角度,這些算法可以分爲兩大類:一是基於問題轉化的方法,二是基於算法適用的方法。基於問題轉化的方法是轉化問題數據,使之使用現有算法;基於算法適用的方法是指針對某一特定的算法進行擴展,從而能夠處理多標記數據,改進算法,適用數據。

  說白了,基於問題轉化的方法,就是你把原來的數據換個角度組合一下,變成一個原來解決過的問題。

  基於算法適用的方法,就是你把現有的算法進行了改進,使之適合多標籤。

  • 基於問題轉化的方法

(1)   在傳統機器學習模型中可以使用分類器鏈,在這種情況下,第一個分類器只在輸入數據上進行訓練,然後每個分類器都在輸入空間和鏈上的所有之前的分類器上進行訓練。讓我們試着通過一個例子來理解這個問題。在下面給出的數據集裏,我們將X作爲輸入空間,而Y作爲標籤。在分類器鏈中,這個問題將被轉換成4個不同的標籤問題,就像下面所示。黃色部分是輸入空間,白色部分代表目標變量。

考慮多標籤的相關性時候可以將上一個輸出的標籤當成是下一個標籤分類器的輸入。

(2)將標籤統一來看(Label Powerset)

在這一點上,我們發現x1和x4有相同的標籤。同樣的,x3和x6有相同的標籤。因此,標籤powerset將這個問題轉換爲一個單一的多類問題,如下所示。

因此,標籤powerset給訓練集中的每一個可能的標籤組合提供了一個獨特的類。轉化爲單標籤後就可以使用SVM、textCNN、textRNN等分類算法訓練模型了。

感覺Label Powerset只適合標籤數少的數據,一旦標籤數目太多(假設有n個),使用Label Powerset後可能的數據集將分佈在[0,2n-1]空間內,數據會很稀疏。

  • 基於算法適用的方法

改編算法來直接執行多標籤分類,而不是將問題轉化爲不同的問題子集。

(1)在傳統機器學習模型中穿件的多標籤分類模型有:kNN多標籤版本MLkNN,SVM的多標籤版本Rank-SVM等。

(2)在深度學習中常常是修改多分類模型的輸出層,使其適用於多標籤的分類,Mark J. Berger[4]在輸出層對每一個標籤的輸出值使用sigmod函數進行2分類(標籤之間無關聯信息);Kurata在研究多標籤分類時仍然使用了經典的CNN結構(如圖2所示),不過在最後的全連接層的參數係數有些特別,也就是圖2.1中Hidden layer到output layer的係數是經過特別設置的。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章