元件:K-Means 叢集
本文說明如何使用 Azure 機器學習 設計工具中的 K-Means 叢集元件來建立未定型的 K-means 叢集模型。
K-means 是最簡單的且最知名的 非監督 式學習演算法之一。 您可以將演算法用於各種機器學習工作,例如:
- 偵測異常數據。
- 叢集文字檔。
- 使用其他分類或回歸方法之前,先分析數據集。
若要建立叢集模型,您可以:
- 將此元件新增至您的管線。
- 連接數據集。
- 設定參數,例如您預期的叢集數目、建立叢集時要使用的距離計量等等。
設定元件超參數之後,您會將未定型的模型連接到 定型叢集模型。 由於 K-means 演算法是非監督式學習方法,因此標籤數據行是選擇性的。
如果您的數據包含標籤,您可以使用標籤值來引導選取叢集並優化模型。
如果您的數據沒有標籤,演算法會根據數據建立代表可能類別的叢集。
瞭解 K-means 叢集
一般而言,叢集會使用反覆技術,將數據集中的案例分組為具有類似特性的叢集。 這些群組適用於探索數據、識別數據中的異常,最後用於進行預測。 叢集模型也可以協助您識別可能不是透過瀏覽或簡單觀察以邏輯方式衍生的數據集關聯性。 基於這些原因,叢集通常用於機器學習工作的早期階段,以探索數據並探索非預期的相互關聯。
當您使用 K-means 方法設定群集模型時,您必須指定目標數位 k ,指出模型中您想要的 心數 。 心距是代表每個群集的點。 K-means 演算法會藉由將平方的叢集內總和降至最低,將每個傳入的數據點指派給其中一個叢集。
處理定型數據時,K-means 演算法會從一組隨機選擇的心形開始。 心心作為群集的起點,它們會套用勞埃德的演演算法反覆精簡其位置。 K-means 演算法會在符合下列一或多個條件時停止建置和精簡叢集:
心形穩定,這表示個別點的叢集指派不再變更,且演算法已聚合在解決方案上。
演算法已完成執行指定的反覆項目數目。
完成定型階段之後,您可以使用 [將數據指派給叢集] 元件,將新案例指派給您使用 K-means 演算法找到的其中一個叢集。 您可以計算新案例與每個叢集心之間的距離來執行叢集指派。 每個新案例都會指派給具有最接近心心的叢集。
設定 K-Means 叢集元件
將 K-Means 叢集 元件新增至您的管線。
若要指定您要如何定型模型,請選取 [ 建立定型器模式 ] 選項。
- 單一參數:如果您知道想要在叢集模型中使用的確切參數,則可以提供一組特定的值作為自變數。
針對 [心距數目],輸入您想要演算法開頭的叢集數目。
模型不保證會產生這個數目的叢集。 此演算法會從這個數據點數目開始,並反覆運算以尋找最佳設定。 您可以參考 sklearn 的原始程式碼。
屬性 初始化 是用來指定用來定義初始叢集組態的演算法。
第一個 N:從數據集選擇一些初始數據點數目,並做為初始方法使用。
這個方法也稱為 Forgy 方法。
隨機:演算法會隨機將數據點放在叢集中,然後計算初始平均數,以作為叢集隨機指派點的距心。
這個方法也稱為 隨機分割 方法。
K-Means++:這是初始化叢集的預設方法。
2007年,David Arthur 和 Sergei Vassilvitskii 提出了 K-means++ 演算法,以避免標準 K-means 演算法的叢集不佳。 K-means++ 使用不同的方法來選擇初始叢集中心,藉此改善標準 K-means。
針對 [隨機數種子],選擇性地輸入值,做為叢集初始化的種子。 此值可能會對叢集選取產生顯著的影響。
針對 [計量],選擇用來測量叢集向量之間距離的函式,或在新的數據點與隨機選擇的距心之間測量距離。 Azure 機器學習 支援下列叢集距離計量:
- Euclidean:Euclidean 距離通常用於 K-means 群集的群集散佈量值。 這是慣用計量,因為它會將點與心距之間的平均距離降到最低。
針對 反覆專案,輸入演算法在完成距心選取之前,應該逐一查看定型數據的次數。
您可以調整此參數,以平衡定型時間的精確度。
針對 [ 指派標籤模式],選擇一個選項,指定標籤數據行在數據集中應如何處理。
由於 K-means 叢集是非監督式機器學習方法,因此標籤是選擇性的。 不過,如果您的數據集已經有標籤數據行,您可以使用這些值來引導選取叢集,也可以指定忽略這些值。
忽略標籤數據行:標籤數據列中的值會被忽略,而且不會用於建置模型。
填滿遺漏值:卷標數據行值會當做功能來協助建置叢集。 如果有任何數據列遺漏標籤,則會使用其他功能來插補值。
從最接近中心覆寫:使用最接近目前心心的點標籤,將標籤數據行值取代為預測標籤。
如果您想要在定型之前將功能正規化,請選取 [ 標準化功能 ] 選項。
如果您在定型之前套用正規化,則 MinMaxNormalizer 會將數據點正規化
[0,1]
為 。定型模型。
- 如果您將 [建立定型定型器模式] 設定為 [單一參數],請新增已標記的數據集,並使用 [定型叢集模型] 元件來定型模型。
結果
完成設定和定型模型之後,您有可用來產生分數的模型。 不過,有多種方式可定型模型,以及檢視和使用結果的多種方式:
擷取工作區中模型的快照集
如果您使用定 型叢集模型 元件:
選取 [ 定型叢集模型] 元件,然後開啟右側面板。
選取 [ 輸出] 索引標籤。選取 [註冊數據集] 圖示以儲存已定型模型的複本。
已儲存的模型代表您儲存模型時的定型數據。 如果您稍後更新管線中使用的定型數據,則不會更新儲存的模型。
請參閱叢集結果數據集
如果您使用定 型叢集模型 元件:
以滑鼠右鍵按兩下 [ 定型叢集模型] 元件。
選取 [視覺化]。
產生最佳叢集模型的秘訣
已知 在叢集期間使用的植入 程式可能會大幅影響模型。 植入表示點的初始放置到潛在的心心。
例如,如果數據集包含許多極端值,而且選擇極端值來植入叢集,則沒有其他數據點適合該叢集,而且叢集可以是單一數據點。 也就是說,它可能只有一個點。
您可以透過幾種方式避免此問題:
變更心數,並嘗試多個種子值。
建立多個模型,以改變計量或反覆運算更多模型。
一般而言,使用叢集模型時,任何指定的組態都可能導致本機優化的叢集。 換句話說,模型所傳回的叢集集只適合目前的數據點,而且無法一般化為其他數據。 如果您使用不同的初始設定,K-means 方法可能會發現不同的進階組態。