
用R語言對混合型數(shù)據(jù)進行聚類分析
利用聚類分析,我們可以很容易地看清數(shù)據(jù)集中樣本的分布情況。以往介紹聚類分析的文章中通常只介紹如何處理連續(xù)型變量,這些文字并沒有過多地介紹如何處理混合型數(shù)據(jù)(如同時包含連續(xù)型變量、名義型變量和順序型變量的數(shù)據(jù))。本文將利用 Gower 距離、PAM(partitioning around medoids)算法和輪廓系數(shù)來介紹如何對混合型數(shù)據(jù)做聚類分析。
本文主要分為三個部分:
距離計算
聚類算法的選擇
聚類個數(shù)的選擇
為了介紹方便,本文直接使用 ISLR 包中的 College 數(shù)據(jù)集。該數(shù)據(jù)集包含了自 1995 年以來美國大學的 777 條數(shù)據(jù),其中主要有以下幾個變量:
錄取率
學費
新生數(shù)量
分類型變量
公立或私立院校
是否為高水平院校,即所有新生中畢業(yè)于排名前 10% 高中的新生數(shù)量占比是否大于 50%
本文中涉及到的R包有:
In [3]:
set.seed(1680) # 設置隨機種子,使得本文結(jié)果具有可重現(xiàn)性
library(dplyr)
library(ISLR)
library(cluster)
library(Rtsne)
library(ggplot2)
Attaching package: ‘dplyr’
The following objects are masked from ‘package:stats’:
filter, lag
The following objects are masked from ‘package:base’:
intersect, setdiff, setequal, union
構(gòu)建聚類模型之前,我們需要做一些數(shù)據(jù)清洗工作:
錄取率等于錄取人數(shù)除以總申請人數(shù)
判斷某個學校是否為高水平院校,需要根據(jù)該學校的所有新生中畢業(yè)于排名前 10% 高中的新生數(shù)量占比是否大于 50% 來決定
In [5]:
Observations: 777
Variables: 7
$ name (chr) "Abilene Christian University", "Adelphi University", "...
$ accept_rate (dbl) 0.7421687, 0.8801464, 0.7682073, 0.8369305, 0.7564767, ...
$ Outstate (dbl) 7440, 12280, 11250, 12960, 7560, 13500, 13290, 13868, 1...
$ Enroll (dbl) 721, 512, 336, 137, 55, 158, 103, 489, 227, 172, 472, 4...
$ Grad.Rate (dbl) 60, 56, 54, 59, 15, 55, 63, 73, 80, 52, 73, 76, 74, 68,...
$ Private (fctr) Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes,...
$ isElite (fctr) Not Elite, Not Elite, Not Elite, Elite, Not Elite, Not...
距離計算
聚類分析的第一步是定義樣本之間距離的度量方法,最常用的距離度量方法是歐式距離。然而歐氏距離只適用于連續(xù)型變量,所以本文將采用另外一種距離度量方法—— Gower 距離。
Gower 距離的定義非常簡單。首先每個類型的變量都有特殊的距離度量方法,而且該方法會將變量標準化到[0,1]之間。接下來,利用加權(quán)線性組合的方法來計算最終的距離矩陣。不同類型變量的計算方法如下所示:
連續(xù)型變量:利用歸一化的曼哈頓距離
順序型變量:首先將變量按順序排列,然后利用經(jīng)過特殊調(diào)整的曼哈頓距離
名義型變量:首先將包含 k 個類別的變量轉(zhuǎn)換成 k 個 0-1 變量,然后利用 Dice 系數(shù)做進一步的計算
優(yōu)點:通俗易懂且計算方便
缺點:非常容易受無標準化的連續(xù)型變量異常值影響,所以數(shù)據(jù)轉(zhuǎn)換過程必不可少;該方法需要耗費較大的內(nèi)存
利用 daisy 函數(shù),我們只需要一行代碼就可以計算出 Gower 距離。需要注意的是,由于新生入學人數(shù)是右偏變量,我們需要對其做對數(shù)轉(zhuǎn)換。daisy 函數(shù)內(nèi)置了對數(shù)轉(zhuǎn)換的功能,你可以調(diào)用幫助文檔來獲取更多的參數(shù)說明。
In [6]:
Out[6]:
301476 dissimilarities, summarized :
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.0018601 0.1034400 0.2358700 0.2314500 0.3271400 0.7773500
Metric : mixed ; Types = I, I, I, I, N, N
Number of objects : 777
此外,我們可以通過觀察最相似和最不相似的樣本來判斷該度量方法的合理性。本案例中,圣托馬斯大學和約翰卡羅爾大學最相似,而俄克拉荷馬科技和藝術大學和哈佛大學差異最大。
In [7]:
Out[7]:
In [8]:
Out[8]:
聚類算法的選擇
現(xiàn)在我們已經(jīng)計算好樣本間的距離矩陣,接下來需要選擇一個合適的聚類算法,本文采用 PAM(partioniong around medoids)算法來構(gòu)建模型:
PAM 算法的主要步驟:
隨機選擇 k 個數(shù)據(jù)點,并將其設為簇中心點
遍歷所有樣本點,并將樣本點歸入最近的簇中
對每個簇而言,找出與簇內(nèi)其他點距離之和最小的點,并將其設為新的簇中心點
重復第2步,直到收斂
該算法和 K-means 算法非常相似。事實上,除了中心點的計算方法不同外,其他步驟都完全一致 。
優(yōu)點:簡單易懂且不易受異常值所影響
缺點:算法時間復雜度為 O(n2)O(n2)
我們將利用輪廓系數(shù)來確定最佳的聚類個數(shù),輪廓系數(shù)是一個用于衡量聚類離散度的內(nèi)部指標,該指標的取值范圍是[-1,1],其數(shù)值越大越好。通過比較不同聚類個數(shù)下輪廓系數(shù)的大小,我們可以看出當聚類個數(shù)為 3 時,聚類效果最好。
In [9]:
聚類完畢后,我們可以調(diào)用 summary 函數(shù)來查看每個簇的匯總信息。從這些匯總信息中我們可以看出:簇1主要是中等學費且學生規(guī)模較小的私立非頂尖院校,簇2主要是高收費、低錄取率且高畢業(yè)率的私立頂尖院校,而簇3則是低學費、低畢業(yè)率且學生規(guī)模較大的公立非頂尖院校。
In [18]:
[[1]]
accept_rate Outstate Enroll Grad.Rate Private
Min. :0.3283 Min. : 2340 Min. : 35.0 Min. : 15.00 No : 0
1st Qu.:0.7225 1st Qu.: 8842 1st Qu.: 194.8 1st Qu.: 56.00 Yes:500
Median :0.8004 Median :10905 Median : 308.0 Median : 67.50
Mean :0.7820 Mean :11200 Mean : 418.6 Mean : 66.97
3rd Qu.:0.8581 3rd Qu.:13240 3rd Qu.: 484.8 3rd Qu.: 78.25
Max. :1.0000 Max. :21700 Max. :4615.0 Max. :118.00
isElite cluster
Not Elite:500 Min. :1
Elite : 0 1st Qu.:1
Median :1
Mean :1
3rd Qu.:1
Max. :1
[[2]]
accept_rate Outstate Enroll Grad.Rate Private
Min. :0.1545 Min. : 5224 Min. : 137.0 Min. : 54.00 No : 4
1st Qu.:0.4135 1st Qu.:13850 1st Qu.: 391.0 1st Qu.: 77.00 Yes:65
Median :0.5329 Median :17238 Median : 601.0 Median : 89.00
Mean :0.5392 Mean :16225 Mean : 882.5 Mean : 84.78
3rd Qu.:0.6988 3rd Qu.:18590 3rd Qu.:1191.0 3rd Qu.: 94.00
Max. :0.9605 Max. :20100 Max. :4893.0 Max. :100.00
isElite cluster
Not Elite: 0 Min. :2
Elite :69 1st Qu.:2
Median :2
Mean :2
3rd Qu.:2
Max. :2
[[3]]
accept_rate Outstate Enroll Grad.Rate Private
Min. :0.3746 Min. : 2580 Min. : 153 Min. : 10.00 No :208
1st Qu.:0.6423 1st Qu.: 5295 1st Qu.: 694 1st Qu.: 46.00 Yes: 0
Median :0.7458 Median : 6598 Median :1302 Median : 54.50
Mean :0.7315 Mean : 6698 Mean :1615 Mean : 55.42
3rd Qu.:0.8368 3rd Qu.: 7748 3rd Qu.:2184 3rd Qu.: 65.00
Max. :1.0000 Max. :15516 Max. :6392 Max. :100.00
isElite cluster
Not Elite:199 Min. :3
Elite : 9 1st Qu.:3
Median :3
Mean :3
3rd Qu.:3
Max. :3
PAM 算法的另一個優(yōu)點是各個簇的中心點是實際的樣本點。從聚類結(jié)果中我們可以看出,圣弗朗西斯大學是簇1 的中心點,巴朗德學院是簇2 的中心點,而密歇根州州立大學河谷大學是簇3 的中心點。
In [19]:
Out[19]:
可視化方法
t-SNE 是一種降維方法,它可以在保留聚類結(jié)構(gòu)的前提下,將多維信息壓縮到二維或三維空間中。借助t-SNE我們可以將 PAM 算法的聚類結(jié)果繪制出來,有趣的是私立頂尖院校和公立非頂尖院校這兩個簇中間存在一個小聚類簇。
In [22]:
進一步探究可以發(fā)現(xiàn),這一小簇主要包含一些競爭力較強的公立院校,比如弗吉尼亞大學和加州大學伯克利分校。雖然無法通過輪廓系數(shù)指標來證明多分一類是合理的,但是這 13 所院校的確顯著不同于其他三個簇的院校。
In [25]:
Out[25]:
[R]混合型數(shù)據(jù)聚
利用聚類分析,我們可以很容易地看清數(shù)據(jù)集中樣本的分布情況。以往介紹聚類分析的文章中通常只介紹如何處理連續(xù)型變量,這些文字并沒有過多地介紹如何處理混合型數(shù)據(jù)(如同時包含連續(xù)型變量、名義型變量和順序型變量的數(shù)據(jù))。本文將利用 Gower 距離、PAM(partitioning around medoids)算法和輪廓系數(shù)來介紹如何對混合型數(shù)據(jù)做聚類分析。
本文主要分為三個部分:
距離計算
聚類算法的選擇
聚類個數(shù)的選擇
為了介紹方便,本文直接使用 ISLR 包中的 College 數(shù)據(jù)集。該數(shù)據(jù)集包含了自 1995 年以來美國大學的 777 條數(shù)據(jù),其中主要有以下幾個變量:
錄取率
學費
新生數(shù)量
分類型變量
公立或私立院校
是否為高水平院校,即所有新生中畢業(yè)于排名前 10% 高中的新生數(shù)量占比是否大于 50%
本文中涉及到的R包有:
In [3]:
Attaching package: ‘dplyr’
The following objects are masked from ‘package:stats’:
filter, lag
The following objects are masked from ‘package:base’:
intersect, setdiff, setequal, union
構(gòu)建聚類模型之前,我們需要做一些數(shù)據(jù)清洗工作:
錄取率等于錄取人數(shù)除以總申請人數(shù)
判斷某個學校是否為高水平院校,需要根據(jù)該學校的所有新生中畢業(yè)于排名前 10% 高中的新生數(shù)量占比是否大于 50% 來決定
In [5]:
Observations: 777
Variables: 7
$ name (chr) "Abilene Christian University", "Adelphi University", "...
$ accept_rate (dbl) 0.7421687, 0.8801464, 0.7682073, 0.8369305, 0.7564767, ...
$ Outstate (dbl) 7440, 12280, 11250, 12960, 7560, 13500, 13290, 13868, 1...
$ Enroll (dbl) 721, 512, 336, 137, 55, 158, 103, 489, 227, 172, 472, 4...
$ Grad.Rate (dbl) 60, 56, 54, 59, 15, 55, 63, 73, 80, 52, 73, 76, 74, 68,...
$ Private (fctr) Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes, Yes,...
$ isElite (fctr) Not Elite, Not Elite, Not Elite, Elite, Not Elite, Not...
距離計算
聚類分析的第一步是定義樣本之間距離的度量方法,最常用的距離度量方法是歐式距離。然而歐氏距離只適用于連續(xù)型變量,所以本文將采用另外一種距離度量方法—— Gower 距離。
Gower 距離的定義非常簡單。首先每個類型的變量都有特殊的距離度量方法,而且該方法會將變量標準化到[0,1]之間。接下來,利用加權(quán)線性組合的方法來計算最終的距離矩陣。不同類型變量的計算方法如下所示:
連續(xù)型變量:利用歸一化的曼哈頓距離
順序型變量:首先將變量按順序排列,然后利用經(jīng)過特殊調(diào)整的曼哈頓距離
名義型變量:首先將包含 k 個類別的變量轉(zhuǎn)換成 k 個 0-1 變量,然后利用 Dice 系數(shù)做進一步的計算
優(yōu)點:通俗易懂且計算方便
缺點:非常容易受無標準化的連續(xù)型變量異常值影響,所以數(shù)據(jù)轉(zhuǎn)換過程必不可少;該方法需要耗費較大的內(nèi)存
利用 daisy 函數(shù),我們只需要一行代碼就可以計算出 Gower 距離。需要注意的是,由于新生入學人數(shù)是右偏變量,我們需要對其做對數(shù)轉(zhuǎn)換。daisy 函數(shù)內(nèi)置了對數(shù)轉(zhuǎn)換的功能,你可以調(diào)用幫助文檔來獲取更多的參數(shù)說明。
In [6]:
Out[6]:
301476 dissimilarities, summarized :
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.0018601 0.1034400 0.2358700 0.2314500 0.3271400 0.7773500
Metric : mixed ; Types = I, I, I, I, N, N
Number of objects : 777
此外,我們可以通過觀察最相似和最不相似的樣本來判斷該度量方法的合理性。本案例中,圣托馬斯大學和約翰卡羅爾大學最相似,而俄克拉荷馬科技和藝術大學和哈佛大學差異最大。
In [7]:
Out[7]:
In [8]:
Out[8]:
聚類算法的選擇
現(xiàn)在我們已經(jīng)計算好樣本間的距離矩陣,接下來需要選擇一個合適的聚類算法,本文采用 PAM(partioniong around medoids)算法來構(gòu)建模型:
PAM 算法的主要步驟:
該算法和 K-means 算法非常相似。事實上,除了中心點的計算方法不同外,其他步驟都完全一致 。
優(yōu)點:簡單易懂且不易受異常值所影響
缺點:算法時間復雜度為 O(n2)O(n2
聚類個數(shù)的選擇
我們將利用輪廓系數(shù)來確定最佳的聚類個數(shù),輪廓系數(shù)是一個用于衡量聚類離散度的內(nèi)部指標,該指標的取值范圍是[-1,1],其數(shù)值越大越好。通過比較不同聚類個數(shù)下輪廓系數(shù)的大小,我們可以看出當聚類個數(shù)為 3 時,聚類效果最好。
In [9]:
聚類完畢后,我們可以調(diào)用 summary 函數(shù)來查看每個簇的匯總信息。從這些匯總信息中我們可以看出:簇1主要是中等學費且學生規(guī)模較小的私立非頂尖院校,簇2主要是高收費、低錄取率且高畢業(yè)率的私立頂尖院校,而簇3則是低學費、低畢業(yè)率且學生規(guī)模較大的公立非頂尖院校。
In [18]:
[[1]]
accept_rate Outstate Enroll Grad.Rate Private
Min. :0.3283 Min. : 2340 Min. : 35.0 Min. : 15.00 No : 0
1st Qu.:0.7225 1st Qu.: 8842 1st Qu.: 194.8 1st Qu.: 56.00 Yes:500
Median :0.8004 Median :10905 Median : 308.0 Median : 67.50
Mean :0.7820 Mean :11200 Mean : 418.6 Mean : 66.97
3rd Qu.:0.8581 3rd Qu.:13240 3rd Qu.: 484.8 3rd Qu.: 78.25
Max. :1.0000 Max. :21700 Max. :4615.0 Max. :118.00
isElite cluster
Not Elite:500 Min. :1
Elite : 0 1st Qu.:1
Median :1
Mean :1
3rd Qu.:1
Max. :1
[[2]]
accept_rate Outstate Enroll Grad.Rate Private
Min. :0.1545 Min. : 5224 Min. : 137.0 Min. : 54.00 No : 4
1st Qu.:0.4135 1st Qu.:13850 1st Qu.: 391.0 1st Qu.: 77.00 Yes:65
Median :0.5329 Median :17238 Median : 601.0 Median : 89.00
Mean :0.5392 Mean :16225 Mean : 882.5 Mean : 84.78
3rd Qu.:0.6988 3rd Qu.:18590 3rd Qu.:1191.0 3rd Qu.: 94.00
Max. :0.9605 Max. :20100 Max. :4893.0 Max. :100.00
isElite cluster
Not Elite: 0 Min. :2
Elite :69 1st Qu.:2
Median :2
Mean :2
3rd Qu.:2
Max. :2
[[3]]
accept_rate Outstate Enroll Grad.Rate Private
Min. :0.3746 Min. : 2580 Min. : 153 Min. : 10.00 No :208
1st Qu.:0.6423 1st Qu.: 5295 1st Qu.: 694 1st Qu.: 46.00 Yes: 0
Median :0.7458 Median : 6598 Median :1302 Median : 54.50
Mean :0.7315 Mean : 6698 Mean :1615 Mean : 55.42
3rd Qu.:0.8368 3rd Qu.: 7748 3rd Qu.:2184 3rd Qu.: 65.00
Max. :1.0000 Max. :15516 Max. :6392 Max. :100.00
isElite cluster
Not Elite:199 Min. :3
Elite : 9 1st Qu.:3
Median :3
Mean :3
3rd Qu.:3
Max. :3
PAM 算法的另一個優(yōu)點是各個簇的中心點是實際的樣本點。從聚類結(jié)果中我們可以看出,圣弗朗西斯大學是簇1 的中心點,巴朗德學院是簇2 的中心點,而密歇根州州立大學河谷大學是簇3 的中心點。
In [19]:
Out[19]:
可視化方法
t-SNE 是一種降維方法,它可以在保留聚類結(jié)構(gòu)的前提下,將多維信息壓縮到二維或三維空間中。借助t-SNE我們可以將 PAM 算法的聚類結(jié)果繪制出來,有趣的是私立頂尖院校和公立非頂尖院校這兩個簇中間存在一個小聚類簇。
In [22]:
進一步探究可以發(fā)現(xiàn),這一小簇主要包含一些競爭力較強的公立院校,比如弗吉尼亞大學和加州大學伯克利分校。雖然無法通過輪廓系數(shù)指標來證明多分一類是合理的,但是這 13 所院校的確顯著不同于其他三個簇的院校。
In [25]:
Out[25]:
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關鍵? 在循環(huán)神經(jīng)網(wǎng)絡(RNN)家族中,長短期記憶網(wǎng)絡(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預測分析中的應用:從數(shù)據(jù)查詢到趨勢預判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領域中,準確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應對策略? 長短期記憶網(wǎng)絡(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學方法在市場調(diào)研數(shù)據(jù)中的深度應用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準確性的基礎 ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03