K 均值聚類
K 均值聚類是 無監督學習在所有無監督學習算法中,K 均值聚類可能是使用最廣泛的,這要歸功于它的強大功能和簡單性。 K-means 聚類到底是如何工作的?
簡而言之,K 均值聚類的工作原理是 創建參考點(質心) 對于所需的班級數量,然后 將數據點分配給類簇 基于最接近的參考點。 雖然這是 K 均值聚類的快速定義,但讓我們花一些時間更深入地研究 K 均值聚類,并對其運行方式有一個更好的直觀了解。
定義聚類
在研究用于執行 K 均值聚類的確切算法之前,先來看看什么定義聚類:
集群只是項目組,而集群只是將項目放入這些組中。 從數據科學的意義上來說, 聚類算法 目標是做兩件事:
- 確保集群中的所有數據點盡可能彼此相似。
- 確保不同集群中的所有數據點盡可能彼此不同。
聚類算法根據某種相似性度量將項目分組在一起。 這通常是通過查找數據集中不同可能組的“質心”來完成的,盡管不完全如此。 有多種不同的聚類算法,但所有聚類算法的目標都是相同的,即確定數據集固有的組。
K均值聚類
K-Means 聚類是最古老和最常用的聚類算法之一,它的運行基于 向量量化。 選取空間中的一個點作為原點,然后從原點繪制到數據集中所有數據點的向量。
一般來說,K-means 聚類可以分為五個不同的步驟:
- 將所有實例放入子集中,子集的數量等于 K。
- 找到新創建的簇分區的平均點/質心。
- 根據這些質心,將每個點分配給特定的簇。
- 計算每個點到質心的距離,并將點分配給距質心距離最小的簇。
- 將點分配給簇后,找到簇的新質心。
重復上述步驟直至訓練過程完成。
在初始階段,質心放置在數據點之間的某個位置。
或者,在放置質心之后,我們可以將 K 均值聚類視為在兩個不同階段之間來回交換:標記數據點和更新質心。
在第二步中,使用歐幾里德距離等距離度量來計算給定點最接近哪個質心,然后將這些點分配給該質心的類。
在數據點標記階段,每個數據點都被分配一個標簽,將其放置在屬于最近質心的簇中。 最近的質心通常使用平方歐幾里得距離來確定,盡管可以根據輸入聚類算法的數據類型使用其他距離度量,例如曼哈頓距離、余弦和杰卡德距離。
第三步,將質心移動到所有數據點的平均值。 然后重新分配班級。
在質心更新步驟中,通過查找當前包含在簇內的所有數據點之間的平均距離來計算質心。
如何選擇正確的“K”值
考慮到 K 均值聚類是一種無監督算法,并且事先不知道類的數量,那么如何確定適當的類數/正確的 K 值?
一種選擇正確 K 值的技術稱為“肘部技術”。 肘部技術包括對一系列不同的 K 值運行 K 均值聚類算法,并使用準確度度量(通常是誤差平方和)來確定哪些 K 值可提供最佳結果。 誤差平方和是通過計算簇的質心與該簇中的數據點之間的平均距離來確定的。
術語“肘形技術”來自這樣一個事實:當您針對不同的 K 值繪制 SSE 時,所得線圖通常會具有“肘形”形狀,其中 SSE 對于 K 的前幾個值快速下降,但隨后趨于平穩。 在這種情況下,位于彎頭處的 K 值是 K 的最佳值,因為在該值之后收益會迅速遞減。
小批量 K 均值聚類
隨著數據集變大,計算時間也會增加。 在大規模數據集上運行時,基本 K 均值聚類可能需要很長時間才能完成,因此,對 K 均值聚類進行了調整,以降低算法的空間和時間成本。
小批量 K 均值聚類 是 K 均值聚類的變體 其中所考慮的數據集的大小是有上限的。 普通 K 均值聚類同時對整個數據集/批次進行操作,而小批量 K 均值聚類 將數據集分解為子集。 小批量是從整個數據集中隨機采樣的,對于每次新的迭代,都會選擇一個新的隨機樣本并用于更新質心的位置。
在小批量 K 均值聚類中,聚類是通過小批量值和學習率的組合來更新的。 學習率隨著迭代而降低,它是放置在特定簇中的數據點數量的倒數。 降低學習率的效果是,在經過多次迭代后,簇沒有變化時,新數據的影響減少,達到收斂。
關于小批量 K 均值聚類有效性的研究結果表明,它可以成功地減少計算時間,同時稍微權衡聚類質量。
K-Means 聚類的應用
K 均值聚類可以安全地用于數據點可以分為不同組/類的任何情況。 以下是 K 均值聚類的一些常見用例示例。
K-means 聚類可應用于文檔分類,根據主題、標簽、單詞用法、元數據和其他文檔特征等特征對文檔進行分組。 它還可用于根據帖子和評論等活動模式將用戶分類為機器人或非機器人。 K 均值聚類還可用于根據監測健康狀況時的關注程度、合并癥、年齡、患者病史等特征將人們分組。
K 均值聚類還可以用于更多開放式任務,例如創建推薦系統。 Netflix 等系統的用戶可以根據觀看模式進行分組,并推薦相似的內容。 K 均值聚類可用于異常檢測任務,突出顯示潛在的欺詐或缺陷商品實例。