天天看點

機器學習算法實踐 K均值聚類的實用技巧

bilal mahmood:我們最常做的分析之一,便是在資料中提取模式。 比方說,某公司的客戶可被劃分入哪些細分市場? 我們如何在使用者網絡中找到特定群體的聚類?

通過機器學習的方式,我們可以得到這些問題的答案。 即使當我們不知道需要查找哪些特定資料段,亦或我們的資料格式是非結構化資料,我們都可以有這麼一種技術手段,在算法上,分析出資料中合理的資料模式,合适的資料段和分類結果。

在本文中,我們将會詳細介紹一種算法,k-means clustering(k均值聚類),包括如何衡量其效果,以及如何确定我們要生成的資料段集數量。

機器學習算法實踐 K均值聚類的實用技巧

在資料分類領域裡,有兩種有效的機器學習方式。

通過監督學習,如果你搞清楚哪些輸入能映射到哪些離散資料段,便可以對結果的分類做預測。 但在許多情況下,實際上不會有這些預定義好的标簽,而隻有非結構化資料——根本沒有定義好的資料段。這時,您可能就需要借助無監督學習,從未标記的資料中推理出目标資料段。

為了更清楚一些,我們以分類t恤尺寸為例

如果我們拿到如圖1a所示資料集,我們将有一組寬度(x1)和長度(x2)的輸入,以及他們對應的t恤衫尺寸(s(藍色)l(綠色)) 。 在這種情況下,我們就可以通過監督學習的技術,如邏輯回歸,來繪制一個明确的決策邊界,并分離出各類t恤。

但如果我們得到一個如圖1b所示的資料集,我們得到一組寬度(x1)和長度(x2)的輸入,但沒有對應的t恤衫尺寸标簽。 在這種情況下,我們就需要使用k均值聚類等無監督式學習技術,來找到相似的t恤衫,并将它們聚集到小(藍色圓圈)和大(綠色圓圈)的各個類中。

在現實世界的許多應用中,你将面臨如圖2a所示的情況,是以搞明白如何從非結構化的資料中提取出結構,會有很大的用處。

機器學習算法實踐 K均值聚類的實用技巧

k均值聚類給無監督機器學習提供了一個非常直覺的應用,在非結構化的資料中歸納出結構,

k均值聚類,正如其名,會将您的資料中相似的觀察結果,配置設定到同組簇中。 它包括4個簡單重複的步驟,疊代地評估對每個觀察值有最近(平均)距離的簇。 是以,如果一組觀察結果彼此接近,它們可能屬于一組簇。

讓我們逐漸細細了解該算法。 第一步,随機初始化一組聚類中心(上面圖2a中的x),或者說,是各組簇的中心。在開始之前,你可以将這些聚類中心設定在任何地方,但我們建議,在你對其初始化的時候,用與你設定的觀察值相比對的随機點。您将依次利用這些類中心,來對你的觀察值進行分組,将那些與類中心平均距離最近的觀察值(圖2b中的藍色和綠色圓圈)确定一個聚類歸屬。

該步驟會将資料初始化成幾組簇,将你的資料中與類中心最接近的觀察值聚集到一起。 但是這些第一次配置設定後的資料簇,可能不是十分合适的。 是以下一步,你會将你的聚類好的資料簇移動到一個更接近,更合适的位置。即在每個目前已有的各個簇中 找到它們的平均觀察值,然後你的聚類中心移動到該位置來(圖2c)。 然後,以新的聚類中心為基準,找到的平均距離最近的觀察值,并将其配置設定到新的簇(圖2d)

您可以重複進行此過程:簇配置設定-查找平均距離-移動聚類中心,直到達到收斂。 一旦你找到了一組簇,而且其中所有的觀察值都能找到最接近的聚類中心,那就不需要再繼續評估最近的平均距離和移動了。 那些分組在一起的觀察值将被聚類,這樣的話它們可以在輸入中共享相似性(如由它們對同一聚類中心所表現出的接近度),你也為你的資料找到了一組合适的聚類方式。

機器學習算法實踐 K均值聚類的實用技巧

k均值聚類是一種有效的方法,可以為你的資料找到一個良好的聚類方式。 但仍然有一個問題,一開始你如何決定要使用多少組簇?

當你不清楚非結構化資料集的标簽或者分類時,需要無監督學習的方式(如k均值聚類)來輔助。 是以,資料本身不會告訴你,簇的正确數量(或标簽)是多少。

那麼,你該如何衡量自己資料用多少組簇呢? 最簡單的方法是利用測量簇的誤差,具體如下:

機器學習算法實踐 K均值聚類的實用技巧

此函數通過比較觀察值(x)與其指定的聚類中心(μ)之間的距離來評估簇的誤差。 如果每個對應的聚類中心均呈現最低距離,或者最低總體誤差最低,那麼這些聚類中心就是與資料最符合的聚類結果。

回到我們t恤衫尺寸的示例,我們如何使用該誤差函數來确定正确的簇的數目? 一種方法是“肘部法則”,如上圖3所示。 通過繪制資料相對于你初始化的簇的數量的誤差,你可以發現誤差變化率最尖銳的點。 圖3中似乎是在兩個簇的地方,表明我們應該可能去劃分為小和大兩種。

雷鋒網提醒,該方法需要注意:通常在你的誤差曲線中沒有明顯的拐點。 是以,不可能總是使用肘部法則來确定合适數量的簇。

在這種情況下,建議依靠你的直覺或者待解決的問題的上下文。 例如,在t恤尺寸案例中,你可能很清楚你想将t恤分為5種尺寸 - 超小型,小型,中型,大型和超大型。但這并不是資料給你提示清楚的,但基于你的直覺,你可以初始化為五個簇數量,并得到合适的聚類。

總而言之,對于到一個聚類問題,k均值聚類提供了一種可疊代的并且有效的算法來發掘資料中的結構。

本文作者:ai研習社

繼續閱讀