特定領域的經驗要求:無
專業經驗要求:無行業經驗
不需要機器學習的知識,但是讀者應該熟悉基本的數據分析(如,描述性分析)。為了實踐該示例,讀者也應該熟悉Python。
K-means聚類簡介K-means聚類是一種無監督學習,用於有未標記的數據時(例如,數據沒有定義類別或組)。該算法的目標是在數據中找到分組,變量K代表分組的個數。該算法迭代地分配每個數據點到提供特徵的K分組中的一個。數據點基於特徵相似性聚集。K-means聚類算法的結果是:
1. K聚類的質心,它可以用來標記新數據
2. 訓練數據標記(每個數據點被分配到一個單一的集群 )
聚類允許你發現和分析有機形成的組,而不是在查看數據之前定義組。下面例子中「選擇K」的步驟描述如何確定組的數目。
集群的每個質心都是特徵值的集合,它定義所產生的組。檢查質心特徵權重可以用來定性解釋每個集群代表什麼樣的組。
這篇K-means聚類算法涵蓋了:
使用K-means的常見商業案例
運行該算法所涉及的步驟
使用一個配送車隊數據的Python示例
商業用途K-means聚類算法用來查找那些包含沒有明確標記數據的組。這可以用於確定商業假設,存在什麼類型的分組或為複雜的數據集確定未知組。一旦該算法已運行並定義分組,任何新數據可以很容易地分配到正確的組。
這是一個通用算法,可以用於任何類型的分組。用例的一些例子是:
行為細分
根據購買歷史細分
根據應用程式、網站或平臺上的活動細分
定義基於利益的角色
基於活動監視創建圖表
庫存分類
傳感器測量數據分類
檢測運動傳感器中的活動類型
圖片分組
分離音頻
健康檢測中的分組
檢測機器人或異常
來自機器人的單獨有效活動組
清理孤立點檢測的有效活動組
此外,監測是否一個被跟蹤的數據點隨著時間在組之間切換,這可以用來檢測數據有意義的變化。
算法Κ-means聚類算法使用迭代細化來產生最終的結果。該算法的輸入是聚類的數目Κ和數據集。數據集是每個數據點特徵的集合。該算法從為K質點初始估計開始,它可以隨機生成或從數據集中隨機選擇。然後該算法在以下兩步之間迭代:
1. 數據分配步驟
每個質點定義一個聚類。在本步驟中,每個數據點被分配到離它最近的質心,基於歐氏距離的平方。更準確地說,如果ci是集合C質心的集合,然後每個數據點x被分配到一個聚類,基於
dist( · )是標準(L2)歐氏距離。數據點集分配每個ith聚類質心Si。
2. 質心更新步驟:
在本步驟中,質心被重新計算。這通過分配所有數據點的平均值到質心的聚類來實現。
該算法在步驟1和步驟2之間迭代直到滿足停止標準(如,沒有數據點改變聚類,距離之和最小化,或者達到了最大的迭代次數)。
該算法保證收斂到一個結果。其結果可能是一個局部最優(例如,不一定是最好的結果),意思是使用隨機開始質心評估多個運行的算法可能給出更好的結果。
選擇K上述算法查找聚類和一個特定的預先選定K的帶標記的數據。為了查找數據中的聚類個數,用戶需要為在K值範圍內運行K-means聚類算法並比較結果。總體而言,目前還沒有確定K精確值的方法,但可以使用以下技術獲得準確的估計。
通常用於比較不同K值結果的度量之一是數據點和它們聚類質心的平均距離。由於增加聚類的數量總是會減少數據點的距離,增加K總
是會降低這個度量,當k與數據點數相同時達到極值。因此,這個度量不能作為唯一的指標。相反,平均距離到質心作為一個函數的K
被繪製並且急劇下降率的地方「肘點」,可用於大致確定K。
有許多其它技術確認K,包括交叉驗證、信息標準、信息理論跳法、影像法和G-means算法。另外,監測數據點跨組分布可以深入了解
該算法如何為每個k分割數據。
舉例來說,我們將展示K-means算法如何處理配送車隊司機數據的樣本數據集。簡單起見,我們只會看兩個司機特徵:平均每天駕駛距離和一個司機>5mph以上速度限制的平均時間百分比。總
體而言,該算法可以用於任何數量的特徵,只要數據樣本的個數比特徵的數量大的多。
在本例中,我們已經清理並完成了一些簡單的數據轉換。數據樣本作為pandas DataFrame如下所示。
下面的圖表顯示了4,000個司機的數據集,x軸表示距離特徵,y軸表示加速特徵。
首先選擇K=2。對於本例,使用Python包scikit-learn和NumPy進行計算,如下所示:
類別標記以kmeans.labels_返回。
結果如下所示。你可以看到K-means算法基於距離特徵分成兩組。每個聚類質心用一顆星標記。
組1的質心 = (49.62, 8.72)
組2的質心 = (179.73, 17.95)
使用數據集的領域知識,我們可以推斷組1是都市司機,組2是鄉村司機。
測試K=4的結果。完成這個,你只需要的改變是KMeans()函數中聚類的目標數量。
下面的圖表顯示了聚類的結果。我們看到由該算法確定了四個不同的組;現在超速駕駛的司機已經與那些遵守速度限制的分開,除了鄉村和都市的差別。城市駕駛組比農村司機的速度門檻較
低,可能是由於城市司機在交叉路口和停車交通上花費更多的時間。
特徵工程是使用領域知識選擇哪些數據度量作為特徵輸入到機器學習算法的過程。特徵工程在K-means聚類中起著關鍵作用;使用有意義的特徵捕獲數據的可變性至關重要,針對算法找出所有自然產生的組。
分類數據(例如,分類標誌如性別,國家,瀏覽器類型)需要被編碼或者以一種仍然可以使用該算法的方式分離數據。
特徵變換,特別是代表利率而不是測量,可以幫助規範化數據。例如,在上面交付車隊的例子中,如果使用總駕駛距離而不是每天平均距離,那麼駕駛員通過他們在公司駕駛多久而不是鄉村和都市的分組。
有很多可供替代的聚類算法存在,包括DBScan,譜聚類,和高斯混合建模。維數約減技術,如主成分分析,可以用於數據中的不同組模式。一種可能的結果是數據中沒有有機聚類;相反,所
有的數據沿著一個單一組的連續特徵範圍。既然這樣,你可能需要重新查看數據特徵以查看是否需要包括不同的測量或者特徵變換將更好地代表數據的可變性。此外,你可能想強加分類或者
基於知識領域標記並修改你的分析方法。
關於K-means聚類的更多信息,請訪問scikit學習網站。
英文原文:https://www.datascience.com/blog/introduction-to-k-means-clustering-algorithm-learn-data-science-tutorials