大致上,解決multilabel的方法有兩種
大致上,解決multilabel的方法有兩種
1)轉化問題。把問題轉化為一個或多個單目標分類問題,或是回歸問題。
2)算法適應。修改學習算法使得能直接處理multilabel的數據。
結論是PT3效果很好,PT4較好也應用比較廣泛,PT6由於數據不平衡(如果標籤密度太小會導致大量的-1)。
另外,以下幾個問題是需要關注和進一步研究的
Dimensionality Reduction 降維
Label Dependence 標註依賴
Active learning 主動學習
Multi-instance multi-label learning (MIML) 多實例多標籤
Multi-view learning. 多視角
Multi-task learning (MTL) 多任務
Hierarchical multi-label classification (HMC) 多層多標籤
1、multilabel classification的用途
多標籤分類問題很常見, 比如一部電影可以同時被分為動作片和犯罪片, 一則新聞可以同時屬於政治和法律,還有生物學中的基因功能預測問題, 場景識別問題,疾病診斷等。
2. 單標籤分類
在傳統的單標籤分類中,訓練集中的每一個樣本只有一個相關的標籤 l ,這個標籤來自於一個不重合的標籤集合L,|L| > 1.當|L|=2 時,這就是一個二分類問題,或文本和網頁數據的過濾(filtering)問題。當|L| > 2 時是多分類問題。
3、多標籤分類問題的定義
簡單的說就是同一個實例,可以有多個標籤, 或者被分為多個類。和多分類的區別是, 多分類中每個實例只有一個標籤。下面是幾個形式化的定義。
用代表樣本空間,= 為有限標籤集合, 我們假設中的樣本實例和的一個子集相關,這個子集稱作相關標籤集。同時補集被認為與x不相關。相關標籤集L用向量標識,其中。用表示可能的標籤集。
一個多標籤分類器h是一個映射,對每一個實例分配一個分配一個標籤子集。因此分類器h的輸出是一個向量。
4、與多標籤分類相關/相似的問題
一個同屬於監督學習並和多標籤分類很相關的問題就是排序問題(ranking)。排序任務是對一個標籤集排序,使得排在前面的標籤與相應實例更相關。
在特定分類問題中,標籤屬於一個層次結構(hierarchical structure)。當數據集標籤屬於一個層次結構的時候,我們這個任務為層次分類,如果一個樣本與層次結構的多個節點相關, 那麼這個任務就被稱為層次多標籤分類。
多實例學習(multiple-instance learning)是監督學習的一個變種,用的比較少 ,就不說了。
5. 多標籤分類的方法
方法基本上分為兩種,一種是將問題轉化為傳統的分類問題,二是調整現有的算法來適應多標籤的分類
常用的轉化方法有好幾種,比如對每個實例確定或隨機的分配一個標籤,或只保留只有一個標籤的訓練樣本,然後用傳統的多分類方法去訓練。這種方法會導致訓練樣本的損失,所以不推薦使用。還可以將訓練樣本按每個標籤構造一個訓練集,每個樣本屬於或不屬於這個標籤,對每個標籤單獨訓練一個分類器,然後將多個分類器的結果合成。還有將每個多標籤單獨看做一個新標籤,在一個更多的標籤集上做多分類。當多標籤樣本比較少時,這個方法就比較受限。還有對每個有多個標籤的樣本,複製該樣本,每個樣本具有不同的標籤,加入訓練集後使用覆蓋(coverage based)分類法。
調整的算法也比較多,比如通過調整boost kNN SVM等實現多分類,這些調整通常也會用到上面的轉換。其中調整kNN實現的多標籤分類可以加入先驗概率,並能對輸出標籤排序。基於SVM的算法中,有人在訓練集中加入了|L|個二分類的訓練結果,然後再進行一次分類,這個方法考慮到了不同標籤之間的依賴,也是應用棧(Stacking 多個分類器的疊加)的一個特殊情況。還有人利用了相關規則挖掘的方法。
6. 評價標準
令D表示多標籤評價數據集,有|D|個多標籤樣本。令H為一個多標籤分類器,令為有H基於的預測結果集。
下面是幾個評價標準
7、 一點感悟
多標籤學習,還有層次結構學習等,多個標籤之間一般不是獨立(independent)的,所以好的算法要利用標籤之間的依賴
算法訓練的時候要麼降低cost function 要麼學習貝葉斯概率,兩種方法本質一樣,但表現形式不一樣
8. 其它
F-measure能比較好的平衡分類器對不同類別實例不同時在不同類上的表現,因此更適合於不平衡的數據。對一個m維二元標籤向量 ,對給定的預測,F-measure定義為:
其中由定義,0/0=1
F-measure對應於精度和召回的調和平均。
scikit-learn介紹多類分類(Multiclass classification): 表示分類任務中有多個類別, 比如對一堆水果圖片分類, 它們可能是橘子、蘋果、梨等. 多類分類是假設每個樣本都被設置了一個且僅有一個標籤: 一個水果可以是蘋果或者梨, 但是同時不可能是兩者
多標籤分類(Multilabel classification): 給每個樣本一系列的目標標籤. 可以想像成一個數據點的各屬性不是相互排斥的(一個水果既是蘋果又是梨就是相互排斥的), 比如一個文檔相關的話題. 一個文本可能被同時認為是宗教、政治、金融或者教育相關話題.
多輸出回歸(Multioutput classification): 給每個樣本一系列的目標值. 可以被想像成對每個數據點預測多個屬性, 比如在某個定位的風向和風速
多輸出-多分類分類(Multioutput-multiclass classification) 和 多任務分類(Multi-task classification):意味著一個單一的評估器需要處理多個聯合分類任務. 這是多標籤分類任務(只考慮二院分類)和多類分類任務的推廣, 輸出格式是2d陣列.
每一個輸出變量的標籤機可以是不同的. 比如一個樣本的第一輸出變量可以是有限類別中是pear的概率值, 第二個輸出變量可能是有限顏色中是blue或者green的概率.
這意味著任意的支持多輸出多類或者多任務分類任務的分類器, 均支持作為一種特殊情況的多標籤分類任務. 多任務分類與多輸出分類任務相似, 但是有不同的模型公式.
維基介紹在機器學習中, 多標籤分類(multi-label classification) 和與其極度相關的多輸出分類(multi-output classification)是分類問題的變種, 每個實例可能會設置多個標籤
多標籤分類(Multi-label classification)概念
多標籤分類是多類分類的一般化, 多類分類是將實例精確分類到一個或者多個類別中的單一標籤問題, 在多標籤問題中, 沒有限制說一個實例可以被設置多少個類別.
正規點講就是, 多標籤分類是找到一個模型將輸入
映射到二值向量
boosting: AdaBoost.MH和AdaBoost.MR是AdaBoost的多標籤數據擴展版本
k近鄰:ML-kNN是將k-NN分類器擴展到多標籤數據
決策樹
向量輸出的核方法
神經網絡:BP-MLL是反向傳播算法的多標籤學習問題的擴展
多類分類(Multiclass classification)概念
在機器學習中, 多類(multiclass)或者多項式(multinomial)分類是將實例分配給一個而非多於兩個類別的種類(將實例分類給兩類中的一個稱為二元分類binary classification). 很多分類算法自身支持多於兩類的使用, 剩下的就是二元分類算法了, 這就可以通過很多策略去轉換成多項式分類器.
要將多類分類與多標籤分類區分開, 後者是一個類別有多個標籤需要被預測
多類分類採用的算法
二元分類問題轉化
二元問題的擴展
層級分類
將多類分類問題的輸出空間分割為一個樹. 每個父節點被多個子節點分割, 重複這個過程直到每個子節點僅僅代表一類.