ML.NET 中的機器學習工作
機器學習工作是根據提出的問題和可用的資料進行的一種預測或推斷。 例如,分類工作會根據相似度指派將資料指派給類別及叢集工作群組資料。
機器學習工作依賴資料中的模式,而不是明確進行程式設計。
本文將描述 ML.NET 中可供您選擇的各種不同機器學習工作,以及一些常見的使用案例。
一旦您決定哪一個工作適用於您的案例,您就必須選擇最佳演算法來訓練模型。 每個工作的區段中列出了可用的演算法。
二元分類
這是一個監督式機器學習工作,可用來預測資料執行個體屬於兩個類別 (分類) 中的哪一個。 分類演算法的輸入是一組已加上標籤的範例,其中每個標籤都是 0 或 1 的整數。 二元分類演算法的輸出是一個分類器,可供您用來預測未加標籤之新執行個體的類別。 二元分類案例的範例包括:
- 理解 Twitter 評論的情感是「正面」還是「負面」。
- 診斷病患是否有某種疾病。
- 決定是否要將電子郵件標示為「垃圾郵件」。
- 判斷相片是否包含特定項目,例如狗或水果。
如需詳細資訊,請參閱維基百科上的二元分類 \(英文\) 一文。
二元分類訓練工具
您可以使用下列演算法訓練二元分類模型:
- AveragedPerceptronTrainer
- SdcaLogisticRegressionBinaryTrainer
- SdcaNonCalibratedBinaryTrainer
- SymbolicSgdLogisticRegressionBinaryTrainer
- LbfgsLogisticRegressionBinaryTrainer
- LightGbmBinaryTrainer
- FastTreeBinaryTrainer
- FastForestBinaryTrainer
- GamBinaryTrainer
- FieldAwareFactorizationMachineTrainer
- PriorTrainer
- LinearSvmTrainer
二元分類的輸入和輸出
為了取得二元分類的最佳結果,定型資料應進行平衡 (亦即,具有相同數量的正向和負向定型資料)。 遺漏值必須在定型前進行處理。
輸入標籤資料行資料必須是 Boolean。 輸入特徵資料行資料必須是 Single 的固定大小向量。
這些訓練工具會輸出下列資料行:
輸出資料行名稱 | 資料行類型 | 描述 |
---|---|---|
Score |
Single | 由模型計算的原始分數 |
PredictedLabel |
Boolean | 預測標籤 (根據分數的正負號)。 負值分數會對應到 false ,正值分數則會對應到 true 。 |
多類別分類
這是一個監督式機器學習工作,可用來預測資料執行個體的類別 (分類)。 分類演算法的輸入是一組已加上標籤的範例。 每個標籤通常會啟動成文字。 接著,它會透過 TermTransform 執行,這會將它轉會為索引鍵 (數值) 型別。 分類演算法的輸出是一個分類器,可供您用來預測未加標籤之新執行個體的類別。 多元分類案例的範例包括:
- 將航班分類為「提早」、「及時」或「延遲」。
- 理解影片評論是「正面」、「中立」還是「負面」。
- 將飯店評論分類成「地點」、「價格」、「整潔度」等。
如需詳細資訊,請參閱維基百科上的多元分類 \(英文\) 一文。
多類別分類學習工具
您可以使用下列訓練演算法訓練多元分類模型:
- LightGbmMulticlassTrainer
- SdcaMaximumEntropyMulticlassTrainer
- SdcaNonCalibratedMulticlassTrainer
- LbfgsMaximumEntropyMulticlassTrainer
- NaiveBayesMulticlassTrainer
- OneVersusAllTrainer
- PairwiseCouplingTrainer
多類別分類的輸入和輸出
輸入標籤資料行資料必須是 key 類型。 特徵資料行必須是 Single 的固定大小向量。
訓練工具輸出下列內容:
輸出名稱 | 類型 | 描述 |
---|---|---|
Score |
Single 的向量 | 所有類別的分數。 較高值表示落入相關聯類別的機率較高。 若第 i 個項目具有最大值,則預測標籤索引將會是 i。 請注意,i 是以零為基礎的索引。 |
PredictedLabel |
key 類型 | 預測標籤的索引。 若其值是 i,則實際標籤可能會是索引鍵/值輸入標籤類型中的第 i 個類別。 |
迴歸
這是一個監督式機器學習工作,可用來從一組相關的特徵預測標籤的值。 標籤可以有任何實際值,而不像在分類工作中那樣來自一組有限的值。 迴歸演算法會根據標籤的相關特徵建立標籤的相依性模型,以決定標籤會隨著特徵值的變化如何變更。 迴歸演算法的輸入是一組標籤為已知值的範例。 迴歸演算法的輸出是一個函式,可供您用來預測任何一組新輸入特徵的標籤值。 迴歸案例的範例包括:
- 根據房屋屬性 (例如房間數、地點、大小) 預測房價。
- 根據歷程記錄資料和目前的市場趨勢預測未來的股價。
- 根據廣告預算預測產品銷售額。
迴歸訓練工具
您可以使用下列演算法訓練迴歸模型:
- LbfgsPoissonRegressionTrainer
- LightGbmRegressionTrainer
- SdcaRegressionTrainer
- OlsTrainer
- OnlineGradientDescentTrainer
- FastTreeRegressionTrainer
- FastTreeTweedieTrainer
- FastForestRegressionTrainer
- GamRegressionTrainer
迴歸的輸入和輸出
輸入標籤資料行資料必須是 Single。
這項工作的訓練工具會輸出下列內容:
輸出名稱 | 類型 | 描述 |
---|---|---|
Score |
Single | 由模型預測的原始分數 |
叢集
這是一個非監督式機器學習工作,可用來將資料執行個體組成包含類似特性的群集。 群集也可用來在資料集內,識別您無法藉由瀏覽或簡單觀察以邏輯方式導出的關係。 群集演算法的輸入和輸出取決於所選擇的方法。 您可以採用以分佈、距心、連線或密度為基礎的方法。 ML.NET 目前支援使用 K 平均 (K-Means) 群集的距心型方法。 群集案例的範例包括:
- 根據選擇飯店時的習慣和特性,理解飯店賓客的區隔。
- 識別客戶區隔和人口統計,以協助建立目標性廣告活動。
- 根據製造計量來分類庫存。
叢集訓練工具
您可以使用下列演算法訓練叢集模型:
叢集的輸入和輸出
輸入特徵資料必須是 Single。 不需要任何標籤。
訓練工具輸出下列內容:
輸出名稱 | 類型 | 描述 |
---|---|---|
Score |
Single 的向量 | 指定資料點到所有叢集幾何中心的距離 |
PredictedLabel |
key 類型 | 由模型所預測最接近的叢集索引。 |
異常偵測
這項工作會使用主成分分析 (PCA) 建立異常偵測模型。 以 PCA 為基礎的異常偵測可協助建置模型,在這種情況中可輕鬆地從一個類別 (例如有效的交易) 取得定型資料,但難以取得足夠的目標異常狀況樣本。
PCA 是以機器學習所建立的技術,經常用於探索資料分析,因為它能顯示資料的內部結構,並說明資料中的差異。 PCA 藉由分析包含多個變數的資料來運作。 它會尋找變數之間的關聯性,並決定最適合擷取結果中差異的值組合。 這些組合的特徵值會用來建立更精簡的特徵空間,稱為主成分。
異常偵測包含了機器學習中許多重要的工作:
- 識別潛在的詐騙交易。
- 學習指出發生網路入侵的模式。
- 尋找異常的患者叢集。
- 檢查輸入到系統的值。
因為定義上異常是罕見事件,因此難以收集具代表性的資料樣本來進行模型化。 此類別中包含的演算法經過特別設計,用來解決使用不平衡的資料集建置和定型模型所發生的核心挑戰。
異常偵測訓練工具
您可以使用下列演算法訓練異常偵測模型:
異常偵測的輸入和輸出
輸入特徵必須是 Single 的固定大小向量。
訓練工具輸出下列內容:
輸出名稱 | 類型 | 描述 |
---|---|---|
Score |
Single | 由異常偵測模型所計算之非負數且沒有限制的分數 |
PredictedLabel |
Boolean | true/false 值,表示輸入有異常 (PredictedLabel=true) 或沒有異常 (PredictedLabel=false) |
排名
排名工作會從一組已加上標籤的範例建構排名工具。 此範例集包含能夠以指定條件評分的執行個體群組。 每個執行個體的排名標籤是 { 0, 1, 2, 3, 4 }。 排名工具已定型為使用每個執行個體的未知分數排名新的執行個體群組。 ML.NET 排名學習工具是以機器學習排名 \(英文\) 為基礎。
排名訓練演算法
您可以使用下列演算法訓練排名模型:
排名的輸入和輸出
輸入標籤資料類型必須是 key 類型或 Single。 標籤的值會決定相關性,其中較高值會指出較高的相關性。 若標籤是 key 類型,則索引鍵的索引是相關性值,其中最小的索引表示最不相關。 若標籤是 Single,則較大的值表示相關性較高。
特徵資料必須是 Single 的固定大小向量,而輸入資料列群組資料行必須是 key 類型。
訓練工具輸出下列內容:
輸出名稱 | 類型 | 描述 |
---|---|---|
Score |
Single | 由模型計算的無限制分數,用來判斷預測 |
建議
建議工作可產生建議的產品或服務清單。 ML.NET 使用矩陣分解 (MF) \(英文\),這是一種協同過濾演算法,適用於在您目錄中有過往的產品評等資料時提供建議。 例如,您擁有使用者過往的電影評等資料,而想要建議使用者接下來可能想看的其他電影。
建議訓練演算法
您可以使用下列演算法訓練建議模型:
預測
預測工作會使用過去的時間序列資料來預測未來行為。 適用於預測的案例包括氣象預測、季節性銷售預測,以及預測性維護。
預測訓練工具
您可以使用下列演算法訓練預測模型:
影像分類
這是一個監督式機器學習工作,可用來預測資料影像的類別 (分類)。 輸入是一組加上標籤的範例。 每個標籤通常會啟動成文字。 接著,它會透過 TermTransform 執行,這會將它轉會為索引鍵 (數值) 型別。 影像分類演算法的輸出是一個分類器,可供您用來預測新影像的類別。 影像分類工作是一種類別分類。 影像分類案例的範例包括:
- 判斷狗的品種,例如「西伯利亞哈士奇」、「黃金獵犬」、「貴賓狗」等。
- 判斷製造產品是否有瑕疵。
- 判斷花的種類是 "Rose"、"Sunflower" 等等。
影像分類訓練工具
您可以使用下列訓練演算法訓練影像分類模型:
影像分類的輸入和輸出
輸入標籤資料行資料必須是 key 類型。 特徵資料行必須是 Byte 的大小可變向量。
此訓練工具會輸出下列資料行:
輸出名稱 | 類型 | 描述 |
---|---|---|
Score |
Single | 所有類別的分數。較高值表示落入相關聯類別的機率較高。 若第 i 個項目具有最大值,則預測標籤索引將會是 i。請注意 i 是以零為基礎的索引。 |
PredictedLabel |
索引鍵型別 | 預測標籤的索引。 若其值是 i,則實際標籤可能會是索引鍵/值輸入標籤類型中的第 i 個類別。 |
物件偵測
監督式機器學習工作,用來預測影像類別 (分類),也提供該類別在影像內的周框方塊。 物件偵測可以偵測影像中的多個物件,而不是分類影像中的單一物件。 物件偵測的範例包括:
- 偵測道路影像上的汽車、標誌或人員。
- 偵測產品影像上的瑕疵。
- 偵測 X 光影像的注意區域。
物件偵測模型訓練目前僅適用於使用 Azure Machine Learning 的模型產生器。