機器學習(ML)是當前的熱門話題。
有監督的機器學習受到了很多關注。 他們有華麗的神經網絡、樸素貝葉斯分類器和許多其他甜蜜的方法(其中一些已在我們的 JMP 博客在這裡)。
但有監督的機器學習需要標籤或真實數據。 如果我們不能告訴計算機何時正確或錯誤,我們就不能要求計算機了解貓是什麼。 不幸的是,在某些數據集中很難獲得標籤。 人們想出了一些巧妙的方法來廉價地獲取標記數據,比如驗證碼,它要求你點擊每張有停止標誌的照片,或者谷歌著名的 Quick Draw 應用程序;但標記大型數據集的成本可能會很高。
通常,我們沒有標籤或真相,但我們有數據。 在這些情況下,我們需要使用聯合國監督機器學習。 無監督機器學習之所以如此命名,是因為我們無法告訴它什麼是對的,什麼是錯的。 就像新來的保姆不知道家裡的規則一樣,無監督的機器學習算法沒有正確的答案。 當算法出錯時,我們無法“糾正”算法,因為沒有明確的正確或錯誤答案。
雖然它不是唯一的無監督機器學習類型,但集群是一種非常流行的類型。 當我們沒有預先建立數據組時,我們的本能通常是自己創建這些組。 一般來說,聚類的目的是將距離較近的數據點分到同一組,將距離較遠的數據點分到不同的組。 這就是所謂的凝聚(相似點在一起)和分離(不同點沒有)。 因為我們沒有用於比較的標籤,所以我們經常根據集群/組的凝聚力和分離程度來判斷它們的“成功”。
K-均值
讓我們看一下這個來自一家大型百貨商店的小數據集RA 費舍爾的。 費舍爾正在尋求實施新的三級獎勵計劃,但員工需要知道為三級中的每一級提供什麼樣的優惠。
他們收集了 30 位顧客的平均購買次數和每次購買的平均商品數量的試點數據。 數據如下圖所示。
我們希望將客戶分為三組,以便我們可以擁有適合每個客戶的級別。 因此,我們決定使用 k 均值,根據客戶每年的平均旅行次數以及每次旅行平均購買的商品數量將客戶分為三組。
k-means 的第一步是選擇 k。 我們選了三個。 然後我們從數據中隨機選取 k 個點。 我們將把這些數據點視為三個集群的中心。
然後,我們將每個數據點分配到最接近的點的簇中。 例如,頂部的這個點最接近藍色點,因此它將位於藍色簇中。
我們以這種方式將每個點分配給一個簇。
現在我們有了三個簇,我們可以重新計算每個簇的新中心。
然後將每個點重新分配給其新的最接近的簇。
然後,我們重複這些步驟,直到集群成員(或中心)不改變:
- 計算中心
- 重新分配積分
一旦達到這種狀態,我們的模型就已經收斂的,我們使用這些集群成員資格作為最終的集群分配。
現在,我們可以使用集群為 Fisher's 創建三個客戶層。 看起來我們有一個明確的紅色群體,他們的行程很少,並且沒有購買很多物品。 為了讓它們更頻繁地進店,我們在周二提供 15% 的折扣。
綠色組的旅行次數適中,但旅行時會購買大量物品。 為了迎合他們的需求,我們的銀卡套餐將包含每週一件商品 60% 折扣的優惠券,以便讓這些顧客更頻繁地光臨。
最後,我們的黃金級將迎合藍色群體,他們定期進入商店,但只購買一些商品。 該級別包括一年兩次的活動,以買一送一 50% 折扣為特色,試圖吸引這些顧客購買更多商品。
K-means 是將數據分組的好方法。 即使我們的示例只有兩個維度(行程和項目),k 均值也可以很好地處理更高維度的數據。 只是更難在博客文章中繪製結果......
之前我提到過無監督學習沒有任何“正確”的答案來與我們的結果進行比較。 我們無法計算準確性或靈敏度。 但我們可以計算出凝聚力和分離度的衡量標準。 最常見的是剪影分數。 Silhouette 分數範圍在 -1 到 1 之間,分數越高越好。人工智慧)是數據點之間的平均距離,及其集群中的所有其他數據點。 這衡量了凝聚力,即集群中數據點彼此的接近程度。 緊密結合的簇將具有小的a(i)s 。
雙)是之間的最小平均距離我以及不同簇中的每個點。 這測量了分離度,即簇彼此之間的分離程度。 定義明確的簇將具有較高的值雙) 。
總而言之,遠離其他聚類點但接近其自身聚類中的點的點的輪廓得分將具有較高的正輪廓得分。 與其他簇中的點比與自身簇中的點更接近的點將具有較小的甚至負的輪廓分數。
通過取每個數據點的輪廓分數的平均值,我們可以了解我們的集群與數據的擬合程度。 我們的客戶集群的輪廓得分(比如說快 10 倍……)是 0.614,這意味著我們的集群相對具有凝聚力和獨立性。
當我們獲得較高的平均輪廓分數時,我們相信我們已經發現了某種潛在結構在數據中。 如果聚類與自身相似且與其他聚類不同,那麼這些聚類似乎是自然發生的,而不是我們強加給數據的。
期望最大化(混合高斯)
K-means 是一種相對快速且簡單的數據聚類算法。 它學習起來很快,而且實施起來也很快。 但它有兩個潛在的缺點:首先,它假設球形,這意味著簇的形狀像多維球體。 在實踐中,這大致意味著我們假設所有特徵都具有相等的方差,但這通常是不正確的。 考慮根據貓每天喵喵的平均次數以及它們的長度(以厘米為單位)對貓進行聚類。 這兩件事不太可能具有相同的方差。
第二個問題是 k-means 給出難的集群分配。 每個點恰好屬於一個簇。 有時,特別是在簇的邊緣附近,我們可能需要考慮一個點可能屬於兩個簇中任意一個的事實。 就像這裡的這一點。 它可能是藍色的或者綠色的。
因此,當我們認為...或知道...我們的不同特徵不具有相等的方差,或者我們想要柔軟的對於聚類分配,我們可以參考 k 均值的流行推廣:期望最大化(Expectation Maximization),簡稱 EM。
期望最大化通常使用混合高斯分佈(又稱多維正態分佈)來實現。 因為這有點拗口,我們將這種技術稱為正態混合,因為 JMP 就是這麼稱呼它的。 我們假設我們觀察到的所有數據都來自k多維正態分佈,我們想弄清楚這些分佈是什麼。
就像 k 均值一樣,正態混合使用隨機起點,但它不是僅選取中心,而是為每個 k 分佈選擇隨機均值和協方差。 起初,這些可能看起來有點古怪,但請堅持我們。
這是期望步驟或 E 步驟。 然後,我們計算每個點屬於每個分佈的概率。 我們不是將每個數據點硬分配給一個簇,而是說它屬於每一個具有一定概率的聚類。
接下來是M步驟。 我們重新計算分佈參數,就像我們在 k 均值中計算新中心一樣。 因為每個數據點都以一定的概率屬於每個簇,所以我們使用每個點來計算新的分佈參數,並根據它們各自屬於該組的概率對它們進行加權。 屬於簇 A 的概率只有 0.01% 的點不會對簇 A 的均值和協方差的計算產生太大影響。 至少沒有與有 75% 機會屬於簇 A 的點進行比較。
如果您熱衷於數學,新均值和協方差的公式如下。



這些公式與我們通常用來計算均值和協方差的公式幾乎相同 - 但添加了一個它通過數據點屬於第 k 個分佈的可能性來衡量數據點對計算的貢獻。
一旦我們有了每個 k 個分佈的新參數,我們就再次執行 E 步驟並重新計算每個點屬於每個分佈的概率。
然後當然是 M 步驟,然後是另一個 E 步驟......一直到我們的分佈“收斂”。這要么意味著 E 和 M 步驟的每次迭代都不會發生任何變化,或者至少不會發生太大變化。 通常,我們會查看對數似然,並確保它相對穩定。
現在我們有了每個數據點屬於每個簇的概率。 如果我們需要硬聚類分配,我們可以選擇每個數據點屬於概率最高的聚類。 但 EM 的好處是我們可以接受集群成員資格的模糊性。 我們可以查看一個數據點並考慮這樣一個事實:雖然它很可能屬於集群 B,但它也很可能屬於集群 D。這還考慮到我們的集群之間可能沒有明確的邊界這一事實。 這些組由重疊的多維分佈組成,因此繪製清晰的切割線可能並不總是最好的解決方案。
JMP 中的聚類
聯合管理計劃使聚類變得異常簡單。 您所需要做的就是轉到“分析”菜單 >“聚類”。 均提供 K 均值和帶有高斯混合的 EM(在菜單中稱為正態混合)。


只需選擇其中之一K-均值或者普通混合物,選擇要聚類的列,然後選擇要查找的聚類數。 點擊去,你就會得到你的輸出! 如果您想保存聚類分配,只需單擊聚類分析旁邊的紅色三角形,然後選擇保存簇!
要查看集群圖,請單擊紅色三角形並選擇雙標圖。
如果您想一次嘗試多個 k,只需添加到範圍K 均值或正態混合物平台中的框。 您的輸出現在將顯示每個 k 的信息! JMP 將為您選擇最佳的 k 顯示在集群比較菜單。
對於 k 均值,JMP(如 SAS)使用三次聚類準則(這就是 CCC 的代表)來選擇最適合您的數據的 k。 CCC 值越高越好,表明您的聚類與數據擬合得很好,類似於輪廓分數的方式。 JMP 將選擇具有最高 CCC 值的 k 作為最佳聚類。 有關 CCC 的更多信息,請參見這裡。

對於正態混合物,JMP 使用 AICc(修正的 Akaike 信息準則)和 BIC(貝葉斯信息準則)來選擇最佳 k。 AIC 和 BIC(如輪廓分數和 CCC)都衡量模型(此處為您的集群)與數據的擬合程度。 AIC 和 BIC 值較小表示模型擬合良好,因此 JMP 將選擇給出以下值的 k最低AIC/BIC 值(請注意,由於數據集較小,因此缺少一些 AICc 值)。
結論
現在您知道如何使用了聯合管理計劃使用 k 均值和高斯混合模型(或 JMP 中的正態混合)對數據進行聚類! 因此,當您獲得沒有標籤或真實數據的超級酷數據集時,您仍然可以使用無監督機器學習創建一些非常酷的見解。
這很棒。您能否分享數據(以及腳本,如果您已保存到數據表)以便我們嘗試一下?