一對一多類別

本文描述如何使用 Azure Machine Learning 設計工具中的一對一多類別元件。 其目標在於使用「一對一」方法,建立可預測多個類別的分類模型。

當結果取決於連續或類別預測量變數時,此模組可用來建立能夠預測三個或更多可能結果的模型。 此方法也可讓您使用二元分類方法解決需要多個輸出級別的問題。

深入了解一對一模型

某些分類演算法允許預設使用兩個以上的類別。 其他分類演算法會將可能的結果限制為兩個值的其中一個 (二元或雙類別模型)。 但即使是二元分類演算法,也可以透過各種策略來調整多類別分類工作。

此元件會實作一對一方法,其中每個類別配對都會建立一個二元模型。 預測時會選取收到最多投票的類別。 由於其需要符合 n_classes * (n_classes - 1) / 2 分類器,因此這個方法的速度通常會比一對全部慢,原因是其 O(n_classes^2) 複雜度所致。 不過,這種方法對於無法利用 n_samples 妥善調整的演算法 (例如核心演算法) 來說可能很有利。 原因是每個個別的學習問題都只牽涉到一小部分的資料,而在使用一對全部時,完整資料集會使用 n_classes 次。

本質上,元件會以個別模型來建立集團,然後再合併結果以建立可預測所有類別的單一模型。 任何二元分類器都可以用作一對一模型的基礎。

例如,假設您設定雙類別支援向量機器模型,並提供該模型作為一對一多類別元件的輸入。 元件會針對輸出類別的所有成員,建立二元支援向量機器模型。 然後,其會套用一對一方法來合併所有類別的結果。

此元件使用 sklearn 的 OneVsOneClassifier,您可以在此處深入了解詳細資料。

如何設定一對一多類別分類器

此元件會建立二元分類模型的集團來分析多個類別。 若要使用此元件,您必須首先設定和定型「二元分類」模型。

您可以將二元模型連線至一對一多類別元件。 然後,您可以使用定型模型搭配已標記的定型資料集來定型模型的集團。

在合併模型時,一對一多類別會建立多個二元分類模型、將每個類別的演算法最佳化,然後再合併模型。 雖然定型資料集可能會有多個類別值,但元件還是會執行這些工作。

  1. 在設計工具中,將一對一多類別元件新增至您的管線。 您可以在 [分類] 類別中的 [機器學習 - 初始化] 下找到此元件。

    一對一多類別分類器沒有專屬的可設定參數。 任何自訂皆必須在提供做為輸入的二元分類模型中完成。

  2. 將二元分類模型新增至管線,並設定該模型。 例如,您可能會使用雙類別支援向量機器雙類別促進式決策樹

  3. 定型模型元件新增至您的管線。 連線作為一對一多類別輸出的未定型分類器。

  4. 定型模型的其他輸入上,連線具有多個類別值的已標記定型資料集。

  5. 提交管線。

結果

完成定型之後,您可以使用模型來進行多類別預測。

或者,您可將未定型的分類器傳遞至交叉驗證模型,根據已標記的驗證資料集進行交叉驗證。

後續步驟

請參閱 Azure Machine Learning 可用的元件集