SAS用K-Means 聚類最優k值的選取和分析

2021-02-20 拓端數據部落
原文連結:http://tecdat.cn/?p=17808 什麼是聚類?聚類是將數據集分為幾組的過程,其中包括相似的數據點」。聚類是一種無監督的機器學習,在您擁有未標記的數據時使用。

比如:

坐在餐館的用餐者。假設餐廳中有兩個桌子。桌子1中的人可能彼此相關,可能是一組家庭成員或同事。

類似的,桌子2中的人可能彼此相關。但是,當比較坐在兩個桌子的人時,他們是完全不同的,可能根本沒有關聯。

聚類也以相同的方式工作。一個聚類中的數據點與另一聚類中的數據點完全不同。同一聚類中的所有點都相同或彼此相關。

聚類具有不同的算法。最受歡迎的是K-均值聚類。

 

什麼是K均值聚類?

K-Means是一種聚類算法,其主要目標是將相似的元素或數據點分組為一個聚類。 K-均值中的「 K」代表簇數。

距離量度將確定兩個元素之間的相似性,並將影響簇的形狀。通常,歐幾裡得距離將用於K-Means聚類

歐幾裡得距離是「普通」直線。它是歐氏空間中兩點之間的距離。

 

K-Means算法如何工作?

輸入:樣本集D,簇的數目k,最大迭代次數N;

輸出:簇劃分(k個簇,使平方誤差最小);

算法步驟:

(1)為每個聚類選擇一個初始聚類中心;

(2)將樣本集按照最小距離原則分配到最鄰近聚類;

(3)使用每個聚類的樣本均值更新聚類中心;

(4)重複步驟(2)、(3),直到聚類中心不再發生變化;

(5)輸出最終的聚類中心和k個簇劃分;

 

SAS中的K-均值聚類

讓我們來看一個著名的IRIS數據集。使用proc檢查數據集


proc means data=work.iris N Nmiss mean median max min;run;

它具有150個觀測值和5個變量。未檢測到缺失值或離群值。我們將僅使用四個變量,即sepal_length,sepal_width,petal_length和petal_width。數據集以「 cm」為單位。可以刪除「目標」變量,因為它是類別變量。

關於鳶尾花數據集的簡短介紹。這是一個多變量數據集,由英國統計學家 、 生物學家 羅納德·費舍爾(Ronald Fisher) 在1936年為他的研究論文引入 。

 在分析數據集之前了解數據。

在運行聚類分析之前,我們需要將所有分析變量(實數變量)標準化為均值零和標準偏差為1(轉換為z分數)。在這裡,我們的數據集已經標準化。



/* 聚類分析 */method = centroid ccc print=15 outtree=Tree;

METHOD => 確定過程使用的聚類方法。在這裡,我們使用CENTROID方法。

CCC 是聚類標準—它有助於找出最佳的聚類點。

 

需要找出最佳聚類簇。

前三個特徵值約佔總方差的99.48%,因此,建議使用三個聚類。但是,可以在ccc圖中對其進行交叉驗證。

 

 

從圖中看到,聚類標準有15個值(如我們在代碼輸出中給出的= 15)

 

 

從上面的CCC圖可以看出,肘部下降在3個聚類。因此,最佳群集將為3。  

為了將150個觀測值中的每個觀測值分類為三個聚類,我們可以使用proc樹。ncl = 3(我們的最佳簇為3)。


proc tree noprint ncl=3 out=


 

150個觀察結果分為三類。

使用proc candisc和proc sgplot創建散點圖


/*生成散點圖 */

proc sgplot data = can;title "


 

我們可以看到,分析清楚地將三個聚類簇分開。聚類簇1為藍色, 2為紅色, 3為綠色。

K-均值聚類的優缺點

優點:

1)即使違背有些假設,也能很好地工作。

2)簡單,易於實現。

3)易於解釋聚類結果。

4)在計算成本方面快速高效。

缺點:

1)即使輸入數據具有不同的簇大小,均勻效果使得結果經常會產生大小相對一致的簇。

2)不同密度的數據可能不適用於聚類。

3)對異常值敏感。

4)在K均值聚類之前需要知道K值。

 

更多內容,請點擊左下角「閱讀原文」查看報告全文



關注我們

案例精選、技術乾貨 第一時間與您分享

長按二維碼加關注

更多內容,請點擊左下角「閱讀原文」查看報告全文


相關焦點

  • 詳解 kmeans 聚類算法
    也是聚類算法中最簡單的一種了,但是裡面包含的思想卻是不一般。。重複迭代第一步和第二步直到質心不變或者變化很小。下圖展示了對n個樣本點進行K-means聚類的效果,這裡k取2。     和c值能夠使得J取得最小值,但這種現象實際上很少見)。
  • 聚類算法入門:k-means
    區別與分類分析(classification analysis) 你事先並不知道有哪幾類、劃分每個類別的標準。比如垃圾分類就是分類算法,你知道豬能吃的是溼垃圾,不能吃的是幹垃圾……;打掃房間時你把雜物都分分類,這是聚類,你事先不知道每個類別的標準。
  • 基本的k-means算法流程
    與kNN雖然都是以k打頭,但卻是兩類算法——kNN為監督學習中的分類算法,而k-means則是非監督學習中的聚類算法;二者相同之處:均利用近鄰信息來標註類別。 2、基本算法 在k-means算法中,用質心來表示cluster;且容易證明k-means算法收斂等同於所有質心不再發生變化。
  • k-means聚類算法原理總結
    k-means算法是非監督聚類最常用的一種方法,因其算法簡單和很好的適用於大樣本數據,廣泛應用於不同領域,本文詳細總結了k-means聚類算法原理
  • 聚類算法之Kmeans
    Kmeans算法,也叫k均值算法,顧名思義,其核心思想也就是根據均值來更新簇心。其具體算法流程如下:1、隨機初始化k個簇心2、對於每個樣本,根據其到各簇心的距離(這裡用歐式距離),將其標註為距離最近的簇心類別。
  • K-Means聚類算法詳解
    在創建好 K-Means 類之後,就可以使用它的方法,最常用的是 fit 和 predict 這個兩個函數。你可以單獨使用 fit 函數和 predict 函數,也可以合併使用 fit_predict 函數。其中 fit(data) 可以對 data 數據進行 k-Means 聚類。
  • k-means聚類算法從入門到精通
    k-means算法是非監督聚類最常用的一種方法,因其算法簡單和很好的適用於大樣本數據,廣泛應用於不同領域,本文詳細總結了k-means聚類算法原理 。小批量處理的k-means聚類算法5. k值的選取6. k-means聚類算法不適用的幾個場景7. k-means與knn區別8. 小結聚類算法性能度量的文章提到若簇類相似度好簇間的相似度差,則聚類算法的性能較好。我們基於此定義k-means聚類算法的目標函數: 其中
  • 如何用聚類模型(k-means)做數據分析?
    k-means屬於無監督學習算法,無監督算法的內涵是觀察無標籤數據集自動發現隱藏結構和層次,在無標籤數據中尋找隱藏規律。聚類模型在數據分析當中的應用:既可以作為一個單獨過程,用於尋找數據內在規律,也可以作為分類等其他分析任務的前置探索。
  • K_means聚類的matlab應用
    如果公眾號文章對您有幫助,別忘了點擊分享和「在看」哦!若您對公眾號有什麼意見或建議,請在公眾號中回復或在任意文章底部留言!本文作者:南海一號在機器學習中,我們往往會遇到很大量的數據的處理,其中有一項就是聚類,即將相似的數據聚到一起,比較基礎的就是K_means聚類算法。聚類是一種無監督學習,不需要訓練樣本有對應的標籤就可以將不同的類分開。
  • python之kmeans數據聚類算法
    一 Kmeans原理kmeans是屬於無監督學習的數據聚類算法,根據點與點之間的距離推測每個點屬於哪個中心,常用計算距離的方式有:餘弦距離、歐式距離、曼哈頓距離等,本文以歐式距離為例。圖3kmeans實現邏輯:需要輸入待聚類的數據和欲聚類簇數k1.隨機生成k個初始點作為質心
  • 算法雜貨鋪——k均值聚類(K-means)
    4.2.2、二元變量      所謂二元變量是只能取0和1兩種值變量,有點類似布爾值,通常用來標識是或不是這種二值屬性。對於二元變量,上一節提到的距離不能很好標識其相異度,我們需要一種更適合的標識。一種常用的方法是用元素相同序位同值屬性的比例來標識其相異度。
  • K-Means聚類算法
    簡單來說,之前的算法中我們是利用特徵 x 和類別 y 來進行訓練、分類的,而無監督學習是指不需要我們提供具體的類別 y ,而讓數據自己聚在一起,形成 k 個簇,以實現分類的目的。具體方法是通過對給定的樣本進行劃分,分為 k 個簇,使得簇內的點儘量緊密的連在一起,而簇間的距離儘量大,評判的標準就是通過歐氏距離。
  • 機器學習十大經典算法之K-Means聚類算法
    聚類的應用在商務上,聚類能幫助市場分析人員從客戶基本庫中發現不同的客戶群,並且用購買模式來刻畫不同的客戶群的特徵。在生物學上,聚類能用於推導植物和動物的分類,對基因進行分類,獲得對種群中固有結構的認識。聚類在地球觀測資料庫中相似地區的確定,汽車保險單持有者的分組,及根據房子的類型、價值和地理位置對一個城市中房屋的分組上也可以發揮作用。
  • 機器學習之SKlearn(scikit-learn)的K-means聚類算法
    在工程應用中,用python手寫代碼來從頭實現一個算法的可能性非常低,這樣不僅耗時耗力,還不一定能夠寫出構架清晰,穩定性強的模型。更多情況下,是分析採集到的數據,根據數據特徵選擇適合的算法,在工具包中調用算法,調整算法的參數,獲取需要的信息,從而實現算法效率和效果之間的平衡。而sklearn,正是這樣一個可以幫助我們高效實現算法應用的工具包。
  • K-means(聚類)
    大家假期可以學一下聚類算法,這對大家以後的實訓有著很大的幫助。說到聚類,應先理解聚類和分類的區別,很多業務人員在日常分析時候不是很嚴謹,混為一談,其實二者有本質的區別。分類:分類其實是從特定的數據中挖掘模式,作出判斷的過程。
  • 5 分鐘帶你弄懂 K-means 聚類
    今天為大家帶來一種常用的聚類算法——k-means 聚類,本著專業問題通俗化的原則,小飛力求5分鐘帶你弄懂 k-means 聚類。分類:類別是已知的,通過對已知類別的數據進行訓練和學習,找到這些不同類的特徵,再對未知類別的數據進行分類。屬於監督學習。聚類:事先不知道數據會分為幾類,通過聚類分析將數據聚合成幾個群體。聚類不需要對數據進行訓練和學習。屬於無監督學習。
  • K-means 聚類算法及其代碼實現
    K-means算法是非監督學習(unsupervised learning)中最簡單也是最常用的一種聚類算法,具有的特點是:本文章介紹
  • 你需要的最全面的K-means聚類指南
    我想這是成為數據科學家的最重要的品質之一!這些系統真正令我著迷的是我們如何將類似的物品,產品和用戶組合在一起。這種分組或分段適用於各個行業。這就是聚類概念在數據科學中如此重要的原因。聚類有助於我們以獨特的方式理解我們的數據 - 通過將事物分組。
  • k-means算法
    k-means算法流程1.選擇聚類的個數k(kmeans算法傳遞超參數的時候,只需設置最大的K值)2.任意產生k個聚類,然後確定聚類中心,或者直接生成k個中心。3.對每個點確定其聚類中心點。4.再計算其聚類新中心。5.重複以上步驟直到滿足收斂要求。(通常就是確定的中心點不再改變。)
  • 機器學習之分類算法K-Means介紹與代碼分析(篇四)
    k均值聚類是最著名的劃分聚類算法,由於簡潔和效率使得他成為所有聚類算法中最廣泛使用的。給定一個數據點集合和需要的聚類數目k,k由用戶指定,k均值算法根據某個距離函數反覆把數據分入k個聚類中K-Means做法與生活例子做法隨機選取K各中心點,生成對應的k個簇遍歷所有的數據點,依據「距離」將每一個數據點劃分到最近的中心點所在的簇