KMeansTrainer 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
訓練 IEstimator<TTransformer> KMeans 叢集儀
public class KMeansTrainer : Microsoft.ML.Trainers.TrainerEstimatorBase<Microsoft.ML.Data.ClusteringPredictionTransformer<Microsoft.ML.Trainers.KMeansModelParameters>,Microsoft.ML.Trainers.KMeansModelParameters>
type KMeansTrainer = class
inherit TrainerEstimatorBase<ClusteringPredictionTransformer<KMeansModelParameters>, KMeansModelParameters>
Public Class KMeansTrainer
Inherits TrainerEstimatorBase(Of ClusteringPredictionTransformer(Of KMeansModelParameters), KMeansModelParameters)
- 繼承
備註
要建立這個訓練器,可以使用 KMeans 或 Kmeans(Options)。
輸入與輸出欄位
輸入特徵欄位資料必須為 Single。 不需要標籤欄位。 此訓練器會輸出下列欄位:
| 輸出數據行名稱 | 欄類型 | Description |
|---|---|---|
Score |
向量 Single | 指定數據點到所有叢集心的距離。 |
PredictedLabel |
金鑰 類型 | 模型預測的最接近叢集索引。 |
訓練師特性
| 機器學習任務 | 叢集 |
| 需要正規化嗎? | Yes |
| 快取是必須的嗎? | Yes |
| 除了 Microsoft.ML 之外,必須使用 NuGet | None |
| 可匯出至 ONNX | Yes |
訓練演算法細節
K-means 是一種流行的分群演算法。 使用 K-平均值時,資料會被分群到指定數量的叢集中,以最小化簇內距離的平方和。 此實作遵循 陰陽K-均值方法。 選擇初始簇心形時,可採用以下三種選項之一:
- 隨機初始化。 這可能導致對最佳聚類的近似效果不佳。
- K-means++ 方法。 這是 Ding 等人在此提出的改良初始化演算法,保證找到一個與最佳 K-均值解具有競爭力的解$O(log K)$。
- K-的意思||方法。 此方法由 Bahmani 等人在此 提出,並採用平行方法大幅減少獲得良好初始化所需的通過次數。
K-代表||是預設的初始化方法。 其他方法可在建立訓練器時,使用 KMeansTrainer(Options) 在選項中指定。
計分功能
輸出分數欄包含給定輸入向量 $\textbf{x}\in \mathbb{R}^n$ 到每個叢集重心的 $L_2$-範數距離(即 歐氏距離)的平方。 假設第 $c$ 叢集的中心子為 $\textbf{m}_c \in \mathbb{R}^n$。 分數欄的第 $c 分值為 $d_c = ||\textbf{x} - \textbf{m}_c ||_2^2$。 預測標籤是$K維向量 $[d_{0}, \dots, d_{K-1}]}} 中最小值的索引,其中 $K$ 是叢集數量。
欲了解更多關於 K-means 和 K-means++ 的資訊,請參見: K-meansK-means++
請參考「參見」區塊,裡面有使用範例的連結。
欄位
| 名稱 | Description |
|---|---|
| FeatureColumn |
訓練師期待的特色欄。 (繼承來源 TrainerEstimatorBase<TTransformer,TModel>) |
| LabelColumn |
訓練師期望的標籤欄。 可以是 |
| WeightColumn |
訓練師預期的體重欄。 可以是 |
屬性
| 名稱 | Description |
|---|---|
| Info |
訓練 IEstimator<TTransformer> KMeans 叢集儀 |
方法
| 名稱 | Description |
|---|---|
| Fit(IDataView) |
訓練並返回 ITransformer。 (繼承來源 TrainerEstimatorBase<TTransformer,TModel>) |
| GetOutputSchema(SchemaShape) |
訓練 IEstimator<TTransformer> KMeans 叢集儀 (繼承來源 TrainerEstimatorBase<TTransformer,TModel>) |
擴充方法
| 名稱 | Description |
|---|---|
| AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
在估計鏈中附加一個「快取檢查點」。 這將確保下游估計器能針對快取資料進行訓練。 在訓練師接受多次資料通行前設置快取檢查點會很有幫助。 |
| WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
給定一個估計器,回傳一個包裹物件,該物件會呼叫一次 Fit(IDataView) 代理。 估計器通常回傳擬合的資訊很重要,因此該 Fit(IDataView) 方法回傳一個特定型別的物件,而非一般 ITransformer的 。 然而,同時, IEstimator<TTransformer> 通常會被組成包含許多物件的管線,因此我們可能需要建立一條估計鏈,將 EstimatorChain<TLastTransformer> 我們想要取得變壓器的估計器埋藏在這條鏈的某處。 在這種情況下,我們可以透過此方法附加一個代理,當 fit 被呼叫時會被呼叫。 |