機器學習:多分類及多標簽分類


多分類及多標簽分類

單標簽二分類

單標簽二分類問題為最為常見的算法,主要指:label的取值只有兩種,即每個實例可能的類別只有兩種(A or B);此時的分類算法其實是在構建一個分類的邊界將數據划分為兩個類別;

常見的二分類算法有:Logistic,SVM,KNN等

\[y=f(x),y∈\{-1,+1\} \]

單標簽多分類

單標簽多分類問題,主要指:待預測的label標簽只有一個,但是label標簽的取值可能有多種情況,即每個實例的可能類別有K種\((t_1,t_2,...,t_k,k \geq 3 )\)

常見的單標簽多分類算法有:Softmax,KNN等

\[y=f(x),y∈\{t_1,t_2,...,t_k\} \]

實際上,如一個多分類的問題,可將帶求解的多分類的問題轉化為二分類問題的延伸;即將多分類任務拆分為若干個二分類任務的求解,具體策略如下:

  • OVO(One-Versus-One):一對一
  • OVA/OVR(One-Versus-All/One-Versus-the-Rest):一對多
  • Error Correcting Output Codes(糾錯碼機制):多對多

\[D=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\} \]

\[y_i=j,i=1,2,3,...,m;j=1,2,...,k \]

OVO

原理:將K個類別中的兩兩類別數據進行組合,然后使用組合后的數據訓練出模型,從而產生\(\frac{K(K-1)}{2}\)個分類器模型,將這些分類器的結果進行融合,並將分類器的預測結果用多數投票的方式輸出最終的預測結果值。

eg:

  • 若此時有3個類別A,B,C的數據;
  • 通過兩兩組合后,產生AB,AC,BC的數據;
  • 采用上述組合后的數據訓練出3個模型;
  • 對帶預測的樣本用生成的3個模型采用多數投票的方式進行預測結果。

在生成的模型中還可增加上相應的權重

OVR

原理:在一對多模型訓練中,將一個類別作為正例,而其余的樣例作為反例來訓練K個模型;在進行預測時,若K個模型中,有一個模型輸出為正例,那么最終的預測結果就是屬於該分類器的這個類別;若產生了多個正例,則可選擇分類器的置信度作為指標,選擇置信度最大的分類器作為最終的預測結果,常見的置信度有:精確度,召回率。

OVO和OVR的區別:

糾錯碼機制

原理:將模型構建應用分為兩個階段:編碼和解碼階段;

  • 編碼階段:對K個類別中進行M此划分,每次划分將一部分數據分為正類,一部分數據分為反類,每次划分都構建出一個模型,模型的結果是在空間中對於每個類別都定義了一個點
  • 解碼階段:使用訓練出來的模型對測試樣例進行預測,將待預測的樣本也定義為空間中的一個點,計算該待測點與類別之間的點的距離,選擇距離最近的類別作為最終的預測類別。

多標簽

Multi-Lable Machine Learning(MLL),是指預測模型中存在多個y值,具體分為兩類不同的情況:

  1. 多個預測y值;
  2. 在分類模型中,一個樣例可能存在多個不固定的類別。

根據多標簽問題的復雜性,可以將問題分為兩大類:

  1. 待預測值之間存在相互的依賴關系;
  2. 待預測值之間不存在依賴關系。
x_1 x_2 x_2 x_2 y_1 y_2
1.1 1.5 1.8 1.2 1 1.5
2.1 2.8 2.4 2.4 2.1 2.45
-1.2 -0.5 0.25 -0.12 -0.5 -1
0 0.2 0.89 1.2 0 0.5
x_1 x_2 x_2 x_2 y_1
1.1 1.5 1.8 1.2 a
2.1 2.8 2.4 2.4 b,c
-1.2 -0.5 0.25 -0.12 a,c
0 0.2 0.89 1.2 e

策略轉換

Problem Transformation Methods,策略轉換,問題轉換,是一種將多標簽分類問題轉換為單標簽模型構造的問題,然后將模型合並的一種方式,可分為:

  • Binary Relevance(first-order):標簽之間無關聯
  • Classifier Chains(high-order):標簽之間有依賴關系
  • Calibrated Label Ranking(second-order):兩兩標簽之間有關系

Binary Relevance

Binary Relevance的核心思想是將多標簽分類問題進行分解,將其轉化為q個二元分類問題,其中每個二元分類器對應一個待預測的標簽。

q:標簽的數目,即有多少個y;

例如上方表一中的有兩個y,\(y_1和y_2\),用x和\(y_1\)訓練一個模型;用用x和\(y_2\)再訓練一個模型

\[D_j=\{ (x_i,Φ(Y_i,y_j))| 1 \leq i \leq m\},其中Φ(Y_i,y_j)=\begin{cases} +1,y_j∈Y_i\\ -1, otherwise \end{cases} \]

\[i:樣本數量;Y_i:第i個樣本的標簽序列;y_j:第j個標簽;D_j:表示x是否屬於y_j,屬於則為+1,否則為-1 \]

\[g_j=f(D_j) \]

\[eg:g_1(x)=1,g_2(x)=-1,g_3(x)=1;表示此事Y=[y_1,y_2,y_3]=\left[ \begin{matrix} 1 & 0 & 1 \end{matrix} \right] \]

\[Y=\{ y_i | g_j(x) > 0, 1 \leq j \leq q \} ∪ \{ y_{j^*}|j^*=argmax_{1 \leq j \leq q} g_j(x) \} \]

\[其中,若存在所有的g_j(x) < 0,因此加上\{ y_{j^*}|j^*=argmax_{1 \leq j \leq q} g_j(x) \}以保證Y不為空 \]

優點

  • 實現方式簡單,容易理解;
  • 當y值之間不存在相互的依賴關系的時候,模型的效果不錯

缺點:

  • 如果y之間存在相互的依賴關系,那么最終構建的模型的泛華能力比較弱;
  • 需要構建q個二分類器,q為待預測的y值數量,當q較大時,需要構建的模型就相應的較多。

Classifier Chains

Classfier Chains核心思想是將多標簽分類問題進行分解,將其轉換成一個二元分類器鏈的形式,其中鏈后的二元分類器的構建是在前面分類器預測結果的基礎上進行的;

在模型構建的時候,首先將標簽順序進行打亂排序操作,然后按照從頭到尾構建每個標簽對應的模型。

\[eg:X,Y=[y_1,y_2,y_3,y_4,y_5] \]

\[shuffle:X,Y=[y_2,y_4,y_1,y_5,y_3] \]

\[然后,用X+y_2構建一個預測模型,構建完成后再用X+y_2+y_4構建下一個模型,... \]

\[τ:shuffle\_sorted\{1,2,...,q\},對q個划分類別進行打亂 \]

\[D_{τ(j)}=\{([x_i,pre^i_{τ(j)}],Φ(Y_i,y_{τ(j)}))|1 \leq i \leq m\} \]

\[pre^i_{τ(j)}=(Φ(Y_i,y_{τ(1)}), Φ(Y_i,y_{τ(2)}),...,Φ(Y_i,y_{τ(j-1)}))^T \]

\[Φ(Y_i,y_{τ(j)}):打亂后的第j個類別是否在Y_i中存在,若存在為+1,否則為-1 \]

\[注:其中pre^i_{τ(1)}為空,因為第一個類別不依賴於任何其他的y值 \]

\[g_{τ(j)}=f(D_{τ(j)}) \]

\[λ^x_{τ(1)}=sign(g_{τ(1)}(x)) \]

\[λ^x_{τ(j)}=sign(g_{τ(j)}([x,λ^x_{τ(1)},λ^x_{τ(2)},...,λ^x_{τ(j-1)}])),2 \leq j \leq q \]

\[Y=\{y_{τ(j)}|λ^x_{τ(j)}=\pm1,1 \leq j \leq q\} \]

優點:

  • 考慮標簽之間的依賴關系,最終模型的泛華能力相對於Binary Relevance方式構建的模型效果要好;

缺點:

  • 很難找到一個比較合適的標簽之間的依賴關系

Calibrated Label Ranking

其核心思想是將多標簽分類問題進行分解,將其轉換為標簽的排序問題,最終的標簽就是排序后最大的幾個標簽值。

\[D_{jk}=\{ (x_i,l(Y_i,y_j,y_k)) | Φ(Y_i,y_j) \neq Φ(Y_i,y_k), 1 \leq i \leq m \} \]

若有q個類型的標簽,則可構建\(\frac{q(q-1)}{2}\)個模型

\[l(Y_i,y_j,y_k)=\begin{cases} +1,if \space\space Φ(Y_i,y_j)=+1 \space and \space Φ(Y_i,y_k)=-1 \\ -1, if \space\space Φ(Y_i,y_j)=-1 \space and \space Φ(Y_i,y_k)=+1 \end{cases} \]

\[由g_{jk}=f(D_{jk}),得 \hat{y}=y_j \space\space if \space g_{jk}(x)>0 \space else \space y_k \]

\[ζ(x,y_j)=\sum_{k=1}^{j-1}{||g_{jk}(x) \leq 0||} + \sum_{k=j+1}^{q}{||g_{jk}(x) > 0||} \]

和j相關的模型有k-1個,用這k-1個模型對任意樣本x進行預測,判斷x樣本是否屬於j類別,而從下方公式看出,j可取多個值,即多標簽

\[Y=\{y_j|ζ(x,y_j)>threshold,1 \leq j \leq q\} \]

上述體現了OVO的思想

但是存在了一個threshold,需要給定,出於給定的困難,故引出下述內容

\[D_{jV}=\{(x_i,Φ(Y_i,y_j))|1 \leq i \leq m \} \]

\[構建模型g_{jV}=f(D_{jV}),得 \hat{y}=y_j \space\space if \space g_{jV}(x)>0 \]

上述體現了OVR的思想

再將OVO和OVR的思想進行結合,引出下述內容

\[ζ^*(x,y_j)=ζ(x,y_j)+||g_{jV}(x)>0|| \space\space\space\space\spaceζ^*(x)=\sum_{j=1}^{q}{||g_{jV}(x)\leq0||} \]

\(ζ^*(x)\)用於判斷x樣本是否不屬於j類別,兩個極端情況:若不屬於任何類別,則結果為q;若屬於所有類別,則結果為0。用該值來取代了上述threshold,值越大表示樣本x越難判斷,越小表示樣本x越容易判斷類別,引出最終的分類結果如下:

\[Y=\{y_j|ζ^*(x,y_j)>ζ^*(x),1 \leq j \leq q\} \]

優點:

  • 考慮了標簽兩兩組合的情況,最終的模型相對來講泛化能力比較好

缺點:

  • 只考慮了兩兩標簽的組合情況, 沒有考慮到標簽與標簽之間所有的依賴關系

Algorithm Adaptation

Algorithm Adaptation,算法適應性策略,一種將現有的單標簽算法直接應用到多標簽上的一種方式,主要有:

  • Multi Label-KNN
  • Multi Label-DT

ML-KNN

對於每一個實例而言,先獲取距離它最近的K個實例,然后使用這些實例的標簽集合,通過最大后驗概率(MAP)來判斷這個實例的預測標簽集合的值。

最大后驗概率(MAP):在最大似然估計(MLE)中加入了這個要估計量的先驗概率分布

\[\hatθ_{MLE}(x)=argmax_θf(x|θ) \]

\[\hat{θ}_{MAP}(x)=argmax_θ\frac{f(x|θ)g(θ)}{\int_{θ}{f(x|θ^{'})g(θ^{'})}dθ^{'}}=argmax_θf(x|θ)g(θ) \]

\[C_j=\sum_{(x^*,Y^*)∈N(x)}{||y_j∈Y^*||} \]

\[N(x):樣本x的k近鄰;(x^*,Y^*):屬於樣本x的k近鄰的實例;C_j:表示第j個標簽在x的K個鄰居中間出現的次數 \]

\[Y=\{ y_j|\frac{P(H_j|C_j)}{P(!H_j|C_j)} > 1, 1 \leq j \leq q\} \]

\[H_j=1,!H_j=0;P(H_j|C_j)表示在C_j的條件下,屬於y_j的概率;上述Y表示了,屬於y_j的概率值要大於不屬於y_j的概率值 \]

\[由貝葉斯公式:\frac{P(H_j|C_j)}{P(!H_j|C_j)}=\frac{\frac{P(C_j|H_j)P(H_j)}{P(C_j)}}{\frac{P(C_j|!H_j)P(!H_j)}{P(C_j)}}=\frac{P(C_j|H_j)P(H_j)}{P(C_j|!H_j)P(!H_j)} \]

\[其中P(H_j)=\frac{1}{n}\sum_{i=1}^{n}{y_j∈Y_i}~~~~~~~~~~P(!H_j)=1-P(H_j) \]

\[P(C_j|H_j)=\frac{k_j[C_j]}{\sum_{r=0}^{K}{k_j[r]}}~~~~~~~~~~P(C_j|!H_j)=\frac{!k_j[C_j]}{\sum_{r=0}^{K}{!k_j[r]}} \]

\[其中:k_j[r]=\sum_{i=1}^{n}{||y_j∈Y_i|| \cdot||C_j=r||},0\leq r \leq k~~~~~~~~~~!k_j[r]=\sum_{i=1}^{n}{||y_j∉Y_i|| \cdot||C_j=r||},0\leq r \leq k \]

ML-DT

ML-DT使用決策樹處理多標簽內容,核心在於給予更細粒度的信息熵增益准則來構建這個決策樹模型。

\[entry=\sum_{j=1}^{q}{[-p_jlog_2p_j-(1-p_j)log(1-p_j)]} \]

\[其中p_j=\frac{\sum_{i=1}^{n}{||y_i∈Y_i||}}{n} \]

\[p_j表示在n條樣本中,有幾條樣本包含y_j這個標簽值 \]

同樣目的也是使得entry信息熵足夠的小。

實際應用

  • 01_OvO案例代碼
  • 02_OvR案例代碼
  • 03_Error-Correcting案例代碼
  • 04_多標簽分類問題
  • 05_宮頸癌預測(屬於直接使用RF模型訓練預測多個y值的情況).ipynb

GitHub


免責聲明!

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



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