如何選擇 ML.NET 演算法

針對每項 ML.NET 工作,有多個定型演算法可供選擇。 要選擇哪一個,取決於您嘗試解決的問題、您資料的特性,以及您目前可使用的計算和儲存資源。 請務必注意,定型的機器學習模型是一種反覆運算程序。 您可能需要嘗試多種演算法,找出最適合的那一種。

演算法作用於特性。 特性是計算輸入資料所得出的數值。 它們是機器學習演算法的最佳輸入。 您使用一或多種資料轉換,將未經處理的輸入資料轉換成特性。 例如,文字資料會轉換成一組字數統計和字詞組合統計。 一旦使用資料轉換從未經處理的資料類型擷取特性,它們就稱為凸顯。 例如,凸顯的文字或影像資料。

定型器 = 演算法 + 工作

演算法是為產生模型所執行的數學。 不同演算法產生不同特性的模型。

使用 ML.NET,相同演算法可以套用到不同的工作。 例如,隨機對偶座標上升法可用於二元分類、多元分類和迴歸。 不同之處在於如何解譯演算法的輸出,使符合工作。

ML.NET 會針對每種演算法/工作組合提供執行訓練演算法和解譯的元件。 這些元件稱為「定型器」。 例如,SdcaRegressionTrainer 使用 StochasticDualCoordinatedAscent 演算法套用至迴歸工作。

線性演算法

線性演算法產生的模型會計算輸入資料和一組權數之線性組合的分數。 權數是在定型期間評估的模型參數。

線性演算法適用於線性可分的特性。

使用線性演算法定型之前,應先將特性標準化。 這可防止某項特徵對結果的影響超過其他特徵。

一般而言,線性演算法可調整又快速,且訓練和預測的成本低廉。 它們可以調整特色數目,約為定型資料集的大小。

線性演算法對定型資料進行多次傳遞。 如果您的資料集貼合記憶體,則先將 快取檢查點 新增至 ML.NET 管線,再附加定型器,這會讓定型執行更快速。

平均感知器

最適合文字分類。

教練機 Task ONNX 可匯出
AveragedPerceptronTrainer 二元分類 Yes

隨機對偶座標上升法

好的預設效能不需要微調。

教練機 Task ONNX 可匯出
SdcaLogisticRegressionBinaryTrainer 二元分類 Yes
SdcaNonCalibratedBinaryTrainer 二元分類 Yes
SdcaMaximumEntropyMulticlassTrainer 多類別分類 Yes
SdcaNonCalibratedMulticlassTrainer 多類別分類 Yes
SdcaRegressionTrainer 迴歸 Yes

L-BFGS

當特性數目很大時使用。 產生羅吉斯迴歸定型統計資料,但不像 AveragedPerceptronTrainer 縮放自如。

教練機 Task ONNX 可匯出
LbfgsLogisticRegressionBinaryTrainer 二元分類 Yes
LbfgsMaximumEntropyMulticlassTrainer 多類別分類 Yes
LbfgsPoissonRegressionTrainer 迴歸 Yes

符號隨機梯度下降

最快速且最精確的線性二元分類定型器。 可隨處理器數目調整。

教練機 Task ONNX 可匯出
SymbolicSgdLogisticRegressionBinaryTrainer 二元分類 Yes

線上梯度下降

實作標準 (非批次) 隨機梯度下降,並搭配選擇損失函式,以及使用一段時間所見向量平均值來更新權重向量的選項。

教練機 Task ONNX 可匯出
OnlineGradientDescentTrainer 迴歸 Yes

決策樹演算法

決策樹演算法建立的模型,包含一系列的決策:所有資料值的有效流程圖。

特性不需要為線性可分,也可以使用這種演算法。 而且特性不需要標準化,因為在決策流程中會單獨使用特性向量的個別值。

決策樹演算法通常非常精確。

除了一般化累加模型 (GAM) 外,樹狀模型在特性數目很大時會欠缺解釋性。

決策樹演算法需要更多資源,且不像線性演算法縮放自如。 它們也很適合貼近記憶體的資料集。

促進式決策樹是一整團的小型樹狀結構,其中每個樹狀結構都會評分輸入資料,並將分數傳遞到下一個樹狀結構,以產生更好的分數,整體中的每個樹狀結構都可以改善前一個樹狀結構。

輕量型梯度提升機器

最快速且最精確的二元分類樹狀定型器。 微調程度高。

教練機 Task ONNX 可匯出
LightGbmBinaryTrainer 二元分類 Yes
LightGbmMulticlassTrainer 多類別分類 Yes
LightGbmRegressionTrainer 迴歸 Yes
LightGbmRankingTrainer 排名 No

快速的樹狀結構

用於特徵化影像資料。 復原不對稱的資料。 微調程度高。

教練機 Task ONNX 可匯出
FastTreeBinaryTrainer 二元分類 Yes
FastTreeRegressionTrainer 迴歸 Yes
FastTreeTweedieTrainer 迴歸 Yes
FastTreeRankingTrainer 排名 No

快速樹系

適用於有很多雜訊的資料。

教練機 Task ONNX 可匯出
FastForestBinaryTrainer 二元分類 Yes
FastForestRegressionTrainer 迴歸 Yes

一般化累加模型 (GAM)

最適合處理適用樹狀演算法,但解釋性優先的問題。

教練機 Task ONNX 可匯出
GamBinaryTrainer 二元分類 No
GamRegressionTrainer 迴歸 No

矩陣分解

矩陣分解

用於建議中的共同作業篩選

教練機 Task ONNX 可匯出
MatrixFactorizationTrainer 建議 No

欄位感知分解機器

最適合大型資料集的分類疏鬆資料。

教練機 Task ONNX 可匯出
FieldAwareFactorizationMachineTrainer 二元分類 No

中繼演算法

這些訓練工具會從二元訓練工具建立多元訓練工具。 搭配使用 AveragedPerceptronTrainerLbfgsLogisticRegressionBinaryTrainerSymbolicSgdLogisticRegressionBinaryTrainerLightGbmBinaryTrainerFastTreeBinaryTrainerFastForestBinaryTrainerGamBinaryTrainer

一對多

此多元分類器每類別定型一個二元分類器,從所有其他類別中區分出該類別。 規模受限於要分類的類別數目。

教練機 Task ONNX 可匯出
OneVersusAllTrainer 多類別分類 Yes

成對結合

此多元分類器針對每對類別定型二元分類演算法。 規模受限於類別數目,因為必須定型每對類別的組合。

教練機 Task ONNX 可匯出
PairwiseCouplingTrainer 多類別分類 No

K-Means

用於叢集。

教練機 Task ONNX 可匯出
KMeansTrainer 叢集 Yes

主體元件分析

用於異常偵測。

教練機 Task ONNX 可匯出
RandomizedPcaTrainer 異常偵測 No

貝氏機率分類

當特徵獨立存在且訓練資料集很小時,請使用此多元分類演算法。

教練機 Task ONNX 可匯出
NaiveBayesMulticlassTrainer 多類別分類 Yes

舊的定型器

使用此二元分類演算法建立其他訓練工具的效能基準。 為有效率,其他定型器的計量應該比舊定型器好。

教練機 Task ONNX 可匯出
PriorTrainer 二元分類 Yes

支援向量機器

支援向量機器 (SVM) 是一種極受歡迎且研究透徹的監督式學習模型,適用於線性和非線性分類工作。

最近的研究著重在如何最佳化這些模型,以有效地擴充至更大的定型集。

線性 SVM

使用透過布林標籤資料訓練的線性二元分類模型預測目標。 隨機梯度下降步驟與投影步驟之間的替代專案。

教練機 Task ONNX 可匯出
LinearSvmTrainer 二元分類 Yes

本機深度 SVM

使用非線性二元分類模型預測目標。 降低預測時間成本;預測成本會以對數方式隨著訓練集的大小成長,而不是以線性方式成長,並具有可容忍的分類精確度損失。

教練機 Task ONNX 可匯出
LdSvmTrainer 二元分類 Yes

普通最小平方法

普通最小平方 (OLS) 是線性迴歸中最常用的技術之一。

普通最小平方是指損失函式,它會計算實際值與預測線之差距的平方和以求出誤差,並藉由將平方誤差最小化來配適模型。 此方法會假設輸入與相依變數之間有很大的線性關聯性。

教練機 Task ONNX 可匯出
OlsTrainer 迴歸 Yes