OneVersusAllTrainer 類別

定義

用於 IEstimator<TTransformer> 訓練一個一對全多類別分類器,使用指定的二元分類器。

public sealed class OneVersusAllTrainer : Microsoft.ML.Trainers.MetaMulticlassTrainer<Microsoft.ML.Data.MulticlassPredictionTransformer<Microsoft.ML.Trainers.OneVersusAllModelParameters>,Microsoft.ML.Trainers.OneVersusAllModelParameters>
type OneVersusAllTrainer = class
    inherit MetaMulticlassTrainer<MulticlassPredictionTransformer<OneVersusAllModelParameters>, OneVersusAllModelParameters>
Public NotInheritable Class OneVersusAllTrainer
Inherits MetaMulticlassTrainer(Of MulticlassPredictionTransformer(Of OneVersusAllModelParameters), OneVersusAllModelParameters)
繼承

備註

要製作這個訓練器,請使用 OneVersusAll

輸入與輸出欄位

輸入標籤欄位資料必須是 型別,特徵欄位必須是已知大小的 Single向量。

此訓練器會輸出下列欄位:

輸出數據行名稱 欄類型 Description
Score Single 向量 所有班級的分數。 較高的值表示較高的機率會落入相關聯的類別。 若第 i 個元素值最大,預測標籤索引為 i。 請注意,i 是以零為基礎的指標。
PredictedLabel 金鑰 類型 預測標籤的索引。 若其值為 i,實際標籤將是鍵值輸入標籤類型中的第 i 個類別。

訓練師特性

機器學習任務 多類別分類
需要正規化嗎? 這取決於底層的二元分類器
快取是必須的嗎? Yes
除了 Microsoft.ML 之外,必須使用 NuGet None
可匯出至 ONNX Yes

訓練演算法細節

在一對全(OVA)策略中,會使用二元分類演算法來訓練每個類別一個分類器,以區分該類別與其他類別。 接著透過執行這些二元分類器,選擇信心分數最高的預測來進行預測。 此演算法可用於 ML.NET 中的任何二元分類器。 已有少數二元分類器實作多類別問題,使用者可依上下文選擇任一。 OVA 版本的二元分類器,例如包裝 LightGbmBinaryTrainer,可以與 LightGbmMulticlassTrainer不同,後者直接發展出多類別分類器。 請注意,即使分類器標示不需要快取,OneVersusAll 仍會請求快取,因為它會對資料集執行多次處理。 當分類器表示需要正規化時,該訓練器會向資料管線請求正規化。

這可以讓你利用那些天生沒有多職業選項的訓練家,例如用 來 FastTreeBinaryTrainer 解決多職業問題。 或者,即使訓練器有多職業選項,也能讓 ML.NET 解決「較簡單」的問題,但由於記憶體限制,直接使用並不實際。 例如,雖然多類別邏輯迴歸是解決多類別問題的更原則性方法,但它要求訓練者同時儲存更多中間狀態,以 L-BFGS 歷史形式呈現所有類別,而非一對一分類模型所需的一一。

請參考「參見」區塊,裡面有使用範例的連結。

屬性

名稱 Description
Info

用於 IEstimator<TTransformer> 訓練一個一對全多類別分類器,使用指定的二元分類器。

(繼承來源 MetaMulticlassTrainer<TTransformer,TModel>)

方法

名稱 Description
Fit(IDataView)

訓練一個 MulticlassPredictionTransformer<TModel> 模型。

GetOutputSchema(SchemaShape)

取得輸出欄位。

(繼承來源 MetaMulticlassTrainer<TTransformer,TModel>)

擴充方法

名稱 Description
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

在估計鏈中附加一個「快取檢查點」。 這將確保下游估計器能針對快取資料進行訓練。 在訓練師接受多次資料通行前設置快取檢查點會很有幫助。

WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>)

給定一個估計器,回傳一個包裹物件,該物件會呼叫一次 Fit(IDataView) 代理。 估計器通常回傳擬合的資訊很重要,因此該 Fit(IDataView) 方法回傳一個特定型別的物件,而非一般 ITransformer的 。 然而,同時, IEstimator<TTransformer> 通常會被組成包含許多物件的管線,因此我們可能需要建立一條估計鏈,將 EstimatorChain<TLastTransformer> 我們想要取得變壓器的估計器埋藏在這條鏈的某處。 在這種情況下,我們可以透過此方法附加一個代理,當 fit 被呼叫時會被呼叫。

適用於

另請參閱