【資料分析】python機器學習-判斷聚類算法好壞的常用內部指標

閱讀時間約 1 分鐘
raw-image

判斷聚類成果的好壞並不像監督學習中的分類任務一樣可以直接依據預測的準確度,因為無監督學習中沒有標準的「正確答案」。然而,仍有一些常見的評估指標和方法可以用來衡量聚類的效果。這些方法主要包括內部指標(根據數據本身進行評估)和外部指標(當你有標籤數據可供參考時進行比較)。

內部指標是一種無需依賴標籤數據的聚類結果評估方法,這些指標依據數據本身的特徵和聚類結構來判斷聚類結果的質量。它們主要衡量兩個方面:群集內部的緊密度(凝聚性)群集之間的分離度。理想的聚類結果應該是同一群集內的數據點彼此接近,而不同群集之間的數據點應該相互遠離


# 可使用目錄功能快速確認要閱覽的主題


方法選擇參考

raw-image



輪廓係數(Silhouette Score)

輪廓係數(Silhouette Score)是一種綜合考慮了群集內凝聚性和群集間分離性的指標。它的範圍是 [-1, 1],值越大表示聚類效果越好。


運作邏輯

輪廓係數的計算基於兩個主要概念:

  1. 凝聚性(Cohesion):數據點與其所屬群集中的其他點的相似性,即點與群集中心的距離越小,凝聚性越高。
  2. 分離性(Separation):數據點與最近其他群集的距離,即點與不同群集的中心點距離越大,分離性越好。

對於每個數據點 i,定義:

  • a(i):數據點 i 與其所屬群集內其他點的平均距離,這衡量了點 i 與群集的凝聚性。
  • b(i):數據點 i 與最近的另一個群集內所有點的平均距離,這衡量了點 i 與其他群集的分離性。

輪廓係數的計算公式:

raw-image




  • 當 s(i) 越接近 1,表示數據點 i 與所屬群集非常接近,與其他群集分離得很好。
  • 當 s(i) 越接近 0,表示數據點位於兩個群集的邊界之間,難以明確分配。
  • 當 s(i) 為負數,表示數據點應該更接近另一個群集,聚類結果不理想。


程式碼範例

from sklearn.metrics import silhouette_score

# 計算輪廓係數
silhouette_avg = silhouette_score(X, labels)
print(f"Silhouette Score: {silhouette_avg}")


輪廓係數優點與缺點


優點

  • 綜合考慮了凝聚性和分離性:輪廓係數同時考慮群集內的數據點相似性(凝聚性)以及群集之間的距離(分離性),給出了一個全面的評估指標。
  • 適用於不同類型的聚類算法:輪廓係數可以用來評估多種聚類算法,如 K-means、DBSCAN、層次聚類等,適用範圍廣泛。
  • 範圍易於解讀:輪廓係數的值範圍為 [-1, 1],值越接近 1 表示效果越好,數據點的聚類結果越清晰,這使得指標易於解讀。
  • 無需標籤:輪廓係數是無需標籤的內部指標,適合無監督學習場景。

缺點

  • 計算複雜度較高:對於大數據集,輪廓係數的計算成本較高,因為它需要計算每個數據點與群集內外的距離,時間複雜度為 O(n2)。
  • 不適合密度差異大的群集:如果數據中存在密度差異較大的群集,輪廓係數可能會對低密度群集評估不準確,因為低密度群集內的點之間距離可能較大。



群集內距離平方和(Within-Cluster Sum of Squares, WCSS)

群集內距離平方和(WCSS)衡量每個數據點與其所屬群集中心之間的距離平方和。WCSS 是 K-means 聚類中的一個重要指標,用來衡量群集內部的凝聚性。


運作邏輯

WCSS 是所有數據點與其群集中心之間距離的平方和。其目標是最小化這個值,表示群集內部的數據點越緊密地分布在群集中心附近,群集越凝聚。

對於每個群集 Ck​

raw-image




其中:

  • K 是群集數量,
  • xi 是群集 Ck 中的數據點,
  • μk​ 是群集中心。


使用方法

  • WCSS 越小,表示群集內的凝聚性越強,即數據點彼此之間更接近。K-means 聚類的目標是最小化這個值。
  • 肘部法則(Elbow Method) 是基於 WCSS 的一種方法,用於選擇最佳的群集數量。在肘部法則中,當隨著群集數量 K 增加,WCSS 下降的速度明顯減緩時,這個「肘部」位置對應的 K 值通常是最佳的群集數。


程式碼範例(肘部法則)

import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

# 迭代不同的群集數量 K,計算 WCSS
wcss = []
for k in range(1, 11):
kmeans = KMeans(n_clusters=k, random_state=42)
kmeans.fit(X)
wcss.append(kmeans.inertia_) # WCSS 值存儲於 inertia_ 屬性中

# 畫出肘部法則圖
plt.plot(range(1, 11), wcss, marker='o')
plt.title('Elbow Method for Optimal K')
plt.xlabel('Number of Clusters')
plt.ylabel('WCSS')
plt.show()

當 WCSS 隨著群集數的增加而明顯減少,但在某一點之後減少的速度變慢,該點對應的群集數即為最佳選擇。


WCSS 優點與缺點


優點

  • 簡單易懂:WCSS 衡量每個數據點到其群集中心的距離平方和,指標簡單直觀,易於理解。
  • 適合 K-means 聚類:WCSS 是 K-means 聚類中最常用的內部評估指標,因為 K-means 的目標就是最小化群集內距離平方和。
  • 適合肘部法則來選擇最佳 K 值:WCSS 與肘部法則結合使用,可以幫助選擇 K-means 聚類中的最佳群集數量 K,具有很強的應用價值。

缺點

  • 不考慮群集之間的分離性:WCSS 僅衡量群集內數據點的凝聚性,不考慮不同群集之間的分離度,因此可能無法全面評估聚類質量。
  • 需要事先確定 K 值:WCSS 僅適合用於 K-means 聚類,且需要事先確定群集數量 K。如果群集數設定不合理,聚類效果可能不理想。
  • 對異常值敏感:由於 WCSS 依賴於數據點與群集中心的距離,因此它對異常值非常敏感,異常值會顯著增大 WCSS 值,從而影響評估結果。



Davies-Bouldin 指數

Davies-Bouldin 指數(DB 指數)是一種衡量群集內擴展度與群集間分離度的比率。DB 指數越小,表示群集之間的分離性較強,群集內部的緊密性較高,聚類效果越好。


運作邏輯

該指數考慮了群集內的擴展度和群集之間的距離。對於每一個群集 Ci​,計算其與其他群集 Cj​ 的相似性比率:

raw-image




  • σ(i) 是群集 i 的擴展度,定義為該群集內所有點到群集中心的平均距離。
  • d(i,j) 是群集 i 和群集 j 之間的距離,表示兩個群集的分離度。

Davies-Bouldin 指數是所有群集的平均相似性比率:

raw-image




其中 K 是群集數量。


使用方法

DB 指數用來評估群集內的緊密性和群集間的分離度,指數越小表示聚類效果越好。


程式碼範例

from sklearn.metrics import davies_bouldin_score

# 計算 Davies-Bouldin 指數
db_score = davies_bouldin_score(X, labels)
print(f"Davies-Bouldin Index: {db_score}")
  • DB 指數越小:表示群集內部更緊密,群集之間的分離度更大,聚類效果更好。
  • DB 指數可以用來比較不同聚類結果,從而選擇最佳的聚類模型。


Davies-Bouldin 優點與缺點


優點

  • 綜合考慮群集內緊密性和群集間分離性:DB 指數同時考慮了群集內的擴展度(數據點到群集中心的平均距離)和群集之間的距離,能夠較好地平衡凝聚性和分離性。
  • 自動適應不同的群集數:Davies-Bouldin 指數不需要事先指定群集數量,可以用來比較不同聚類結果的質量。
  • 適用於多種聚類算法:DB 指數可用於多種聚類算法的評估,如 K-means、層次聚類等,具有廣泛適用性。

缺點

  • 敏感於群集間距離的計算:DB 指數對群集間距離的計算方式非常敏感,如果群集間距離計算方式不合適,可能會影響評估結果的準確性。
  • 較難解釋:Davies-Bouldin 指數的具體數值範圍並不像輪廓係數那麼直觀,數值越小表示效果越好,但如何判斷具體數值的好壞則不如輪廓係數清晰。
  • 無法解釋異常值的影響:當數據集中存在異常值時,DB 指數可能會受到異常值的影響,特別是在計算群集內擴展度時,異常值可能導致群集的擴展度被誇大,從而影響評估結果。
4會員
19內容數
留言0
查看全部
發表第一個留言支持創作者!
JayRay 的沙龍 的其他內容
這篇文章深入探討了數據科學與機器學習中的主要聚類算法,包括 K-means、DBSCAN 和層次聚類。介紹了每種算法的工作原理、優缺點及其適用場景,幫助讀者理解何時選擇何種聚類技術。本文還提供了相關的程式碼範例,方便讀者進一步學習與實踐。
虛擬變數陷阱(Dummy Variable Trap)是指在進行One-Hot Encoding時,生成的虛擬變數之間存在完全多重共線性,影響回歸模型的準確性。透過具體的例子,本文探討瞭如何避免這個陷阱,以提升機器學習模型的效果與穩定性。
XGBoost(eXtreme Gradient Boosting)是一種基於梯度提升框架的機器學習算法,專注於高效的分類與迴歸問題。它廣泛應用於數據分析和競賽中,因其出色的模型訓練能力。本文探討 XGBoost 實際中的實作,適合希望掌握此技術的讀者,並對模型調參提供有價值的技巧與建議。
本篇文章介紹陰性(Negative)和陽性(Positive)的概念,這些術語源於統計學和醫學檢測,廣泛應用於二分類問題的預測模型表現評估。本文解釋了真陽性、真陰性、假陽性和假陰性的定義及其在不同應用場景(中的重要性,並探討瞭如何選擇合適的評估指標和調整模型閾值,以提高模型性能與業務決策的有效性。
多重共線性是指迴歸模型中,自變數(特徵)之間存在高度線性相關的現象,這會導致模型對各變數獨立影響估計的困難,並降低其解釋性和預測能力。本文將探討多重共線性的定義、成因、影響以及如何識別和解決這一問題,從而提升模型的穩定性和準確性。
在機器學習和數據分析中,在分類任務中標籤不平衡是普遍存在的問題。本文探討了標籤不平衡對模型訓練和預測性能的影響,並提供解決方案,例如過採樣、欠採樣、調整類別權重和使用適合的不平衡數據評估指標。透過這些方法,能夠提高模型在類別上的預測準確性,從而促進更優化的機器學習應用。
這篇文章深入探討了數據科學與機器學習中的主要聚類算法,包括 K-means、DBSCAN 和層次聚類。介紹了每種算法的工作原理、優缺點及其適用場景,幫助讀者理解何時選擇何種聚類技術。本文還提供了相關的程式碼範例,方便讀者進一步學習與實踐。
虛擬變數陷阱(Dummy Variable Trap)是指在進行One-Hot Encoding時,生成的虛擬變數之間存在完全多重共線性,影響回歸模型的準確性。透過具體的例子,本文探討瞭如何避免這個陷阱,以提升機器學習模型的效果與穩定性。
XGBoost(eXtreme Gradient Boosting)是一種基於梯度提升框架的機器學習算法,專注於高效的分類與迴歸問題。它廣泛應用於數據分析和競賽中,因其出色的模型訓練能力。本文探討 XGBoost 實際中的實作,適合希望掌握此技術的讀者,並對模型調參提供有價值的技巧與建議。
本篇文章介紹陰性(Negative)和陽性(Positive)的概念,這些術語源於統計學和醫學檢測,廣泛應用於二分類問題的預測模型表現評估。本文解釋了真陽性、真陰性、假陽性和假陰性的定義及其在不同應用場景(中的重要性,並探討瞭如何選擇合適的評估指標和調整模型閾值,以提高模型性能與業務決策的有效性。
多重共線性是指迴歸模型中,自變數(特徵)之間存在高度線性相關的現象,這會導致模型對各變數獨立影響估計的困難,並降低其解釋性和預測能力。本文將探討多重共線性的定義、成因、影響以及如何識別和解決這一問題,從而提升模型的穩定性和準確性。
在機器學習和數據分析中,在分類任務中標籤不平衡是普遍存在的問題。本文探討了標籤不平衡對模型訓練和預測性能的影響,並提供解決方案,例如過採樣、欠採樣、調整類別權重和使用適合的不平衡數據評估指標。透過這些方法,能夠提高模型在類別上的預測準確性,從而促進更優化的機器學習應用。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
資料前處理(Data Preprocessing)中的重要角色-缺失值處理。從檢查、刪除到填充缺失值,以及插值法和機器學習算法的應用方法。Pandas 缺失值處理基礎方法、進階填充缺失值、鐵達尼號存活預測資料集的示例和機器學習算法填補缺失值方法的介紹與使用。
Thumbnail
解決電腦上遇到的問題、證明正確性、探討效率 並且很著重溝通,說服別人你做的事是正確且有效率的。 內容: 計算模型、資料結構介紹、演算法介紹、時間複雜度介紹。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
資料前處理(Data Preprocessing)中的重要角色-缺失值處理。從檢查、刪除到填充缺失值,以及插值法和機器學習算法的應用方法。Pandas 缺失值處理基礎方法、進階填充缺失值、鐵達尼號存活預測資料集的示例和機器學習算法填補缺失值方法的介紹與使用。
Thumbnail
解決電腦上遇到的問題、證明正確性、探討效率 並且很著重溝通,說服別人你做的事是正確且有效率的。 內容: 計算模型、資料結構介紹、演算法介紹、時間複雜度介紹。