機器學習之單標籤多分類及多標籤多分類

單標籤二分類算法

Logistic算法

單標籤多分類算法

Softmax算法

One-Versus-One(ovo):一對一

One-Versus-All / One-Versus-the-Rest(ova/ovr): 一對多

ovo和ovr的區別

Error Correcting Output codes(糾錯碼機制):多對多

多標籤多分類算法

Problem Transformation Methods

Binary Relevance

Classifier Chains

Calibrated Label Ranking

Algorithm Adaptation

ML-kNN

ML-DT

多標籤多分類在Scikit-learn中的實現方式


單標籤二分類算法

單標籤二分類這種問題是我們最常見的算法問題,主要是指label標籤的取值只有兩種,並且算法中只有一個需要預測的label標籤。直白來講就是每個實例的可能類別只有兩種(A or B)。此時的分類算法其實是在構建一個分類線將數據劃分爲兩個類別。常見的算法有:Logistic、SVM、KNN等。

                                                       y=f(x),\ \ \ \ \ y\in\{-1, +1\}

Logistic算法

                                   \begin{aligned}sigmoid&=h_{\theta}(x) \\&=\frac{1}{1+e^{-\theta^Tx}} \\J(\theta)&=-\frac{1}{m}[\sum_{i=1}^my^{(i)}\log h_{\theta}(x^{(i)})+(1-y^{(i)})\log(1-h_{\theta}(x^{(i)}))], \ \ \ \ \ y^{(i)}\in\{0, 1\}\end{aligned}

單標籤多分類算法

單標籤多分類問題其實是指待預測的label標籤只有一個,但是label標籤的取值可能有多種情況。直白來講就是每個實例的可能類別有K種(t_1, t_2, \dots, t_k ,k\ge3)。常見算法:Softmax、KNN等。

                                                                \begin{aligned}y&=f(x),\ \ \ \ \ \ y\in\{t_1, t_2, \dots, t_k\} \\D&=\{(x_1, y_1), (x_2, y_2), \dots, (x_n, y_n)\} \\y_i&=j, \ \ \ \ i=1, 2, \dots, n \ \ \ \ j=1, 2, \dots, k\end{aligned}

Softmax算法

                                                        \begin{aligned}p(y=k|x;\theta)&=\frac{e^{\theta_k^Tx}}{\sum_{l=1}^Ke^{\theta_l^Tx}}, \ \ \ \ \ k=1, 2, \dots, K \\h_{\theta}(x)&=\begin{bmatrix}p(y^{(i)}=1|x^{(i)};\theta) \\p(y^{(i)}=2|x^{(i)};\theta) \\\dots \\p(y^{(i)}=k|x^{(i)};\theta)\end{bmatrix} \\&=\frac{1}{\sum_{j=1}^ke^{\theta_j^Tx^{(i)}}}\cdot\begin{bmatrix}e^{\theta_1^Tx} \\e^{\theta_2^Tx} \\\dots \\e^{\theta_k^Tx}\end{bmatrix} \\\Longrightarrow \theta&=\begin{bmatrix}\theta_{11} & \theta_{12} & \cdots & \theta_{1n} \\\theta_{21} & \theta_{22} & \cdots & \theta_{2n} \\\cdots & \cdots & \cdots & \cdots \\\theta_{k1} & \theta_{k2} & \cdots & \theta_{kn}\end{bmatrix} \\J(\theta)&=-\frac{1}{m}\sum_{i=1}^m\sum_{j=1}^kI(y^{(i)}=j)\log(\frac{e^{\theta_j^Tx^{(i)}}}{\sum_{l=1}^Ke^{\theta_l^Tx}}) \\I(y^{(i)}=j)&=\begin{cases}1, &y^{(i)}=j \\0, &y^{(i)}\ne j\end{cases}\end{aligned}

在實際的工作中,如果是一個多分類的問題,我們可以將這個待求解的問題轉換爲二分類算法的延伸,即將多分類任務拆分爲若干個二分類任務求解,具體的策略如下:

  • One-Versus-One(ovo):一對一
  • One-Versus-All / One-Versus-the-Rest(ova/ovr): 一對多
  • Error Correcting Output codes(糾錯碼機制):多對多

One-Versus-One(ovo):一對一

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

One-Versus-All / One-Versus-the-Rest(ova/ovr): 一對多

在一對多模型訓練中,不是兩兩類別的組合,而是將每一個類別作爲正例,其它剩餘的樣例作爲反例分別來訓練K個模型。然後在預測的時候,如果在這K個模型中,只有一個模型輸出爲正例,那麼最終的預測結果就是屬於該分類器的這個類別。如果產生多個正例,那麼則可以選擇根據分類器的置信度作爲指標,來選擇置信度最大的分類器作爲最終結果,常見置信度:精確度、召回率。

ovo和ovr的區別

Error Correcting Output codes(糾錯碼機制):多對多

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

多標籤多分類算法

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

  • 多個待預測的y值
  • 在分類模型中,一個樣例可能存在多個不固定的類別

根據多標籤業務問題的複雜性,可以將問題分爲兩大類:

  • 待預測值之間存在相互的依賴關係
  • 待預測值之間是不存在依賴關係的

對於這類問題的解決方案可以分爲兩大類:

  • 轉換策略(Problem Transformation Methods)
  • 算法適應(Algorithm Adaptation)

Problem Transformation Methods

該方法又叫做策略轉換或者問題轉換,是一種將多標籤的分類問題轉換成爲單標籤模型構造的問題,然後將模型合併的一種方法,主要有以下幾種方式:

  • Binary Relevance(first-order)
  • Classifier Chains(high-order)
  • Calibrated Label Ranking(second-order)

Binary Relevance

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

Binary Relevance方式的優點如下:

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

Binary Relevance方式的缺點如下:

  • 如果y之間存在相互的依賴關係,那麼最終構建的模型的泛化能力比較弱
  • 需要構建q個二分類器,q爲待預測的y值數量,當q比較大的時候,需要構建的模型會比較多

Classifier Chains

Classifier Chains的核心思想是將多標籤分類問題進行分解,將其轉換成爲一個二元分類器鏈的形式,其中後鏈的二元分類器的構建是在前面分類器預測結果的基礎上的。在模型構建的時候,首先將標籤順序進行shuffle打亂排序操作,然後按照從頭到尾分別構建每個標籤對應的模型。

Classifier Chains方法的優點如下:

  • 實現方式相對比較簡單,容易理解
  • 考慮標籤之間的依賴關係,最終模型的泛化能力相對於Binary Relevance方式構建的模型效果要好

缺點如下:

  • 很難找到一個比較適合的標籤依賴關係

Calibrated Label Ranking

Calibrated Label Ranking的核心思想是將多標籤分類問題進行分解,將其轉換爲標籤的排序問題,最終的標籤就是排序後最大的幾個標籤值。

Calibrated Label Ranking 方法的優點如下:

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

Calibrated Label Ranking 方法的缺點如下:

  • 只考慮兩兩標籤的組合,沒有考慮到標籤與標籤之間的所有依賴關係

Algorithm Adaptation

Algorithm Adaptation又叫做算法適應性策略,是一種將現有的單標籤的算法直接應用到多標籤上的一種方式,主要有以下幾種方式:

  • ML-kNN
  • ML-DT

ML-kNN

ML-kNN的思想:對於每一個實例來講,先獲取距離它最近的k個實例,然後使用這些實例的標籤集合,通過最大後驗概率(MAP)來判斷這個實例的預測標籤集合的值。

最大後驗概率(MAP):其實就是在最大似然估計(MLE)中加入了這個要估計量的先驗概率分佈。

                                                        \begin{aligned}\hat{\theta}_{MLE}(x)&=\arg\max_{\theta}f(x|\theta) \\\hat{\theta}_{MAP}(x)&=\arg\max_{\theta}\frac{f(x|\theta)g(\theta)}{\int_{\theta}f(x|\theta')g(\theta')d\theta'} \\&=\arg\max_{\theta}f(x|\theta)g(\theta)\end{aligned}

ML-DT

ML-DT是使用決策樹處理多標籤內容,核心在於給予更細粒度的信息熵增益準則來構建這個決策樹模型。
                                                                  \begin{aligned}entry&=\sum_{j=1}^q[-p_j\log p_j-(1-p_j)\log(1-p_j)] \\p_j&=\frac{\sum_{i=1}^n||y_j\in Y_i||}{n}\end{aligned}

多標籤多分類在Scikit-learn中的實現方式

在Scikit-learn中使用OneVsRestClassifier對多標籤進行分類操作,內部其實是將多標籤問題轉換爲多類別的區分問題。

 

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