機器學習(7)——K均值聚類

文章目錄

  • 1. K均值(K-means)聚類是什么算法?
  • 2. 核心思想
  • 2. 數學目標
  • 3. 算法步驟
    • 3.1. 選擇K個初始質心:
    • 3.2.迭代優化
    • 3.3. 重復步驟2和步驟3:
  • 4. 關鍵參數
  • 5. 優缺點
  • 6. 改進變種
  • 7. K值選擇方法
  • 8. Python示例
  • 9. 應用場景
  • 10. 注意事項
  • 11. 數學推導(質心更新)
  • 12. 總結

1. K均值(K-means)聚類是什么算法?

K均值(K-means)聚類算法是一種廣泛使用的無監督學習算法,用于將數據集分成多個簇(clusters)。每個簇代表數據集中的一種內在結構,其中簇內的數據點相似度較高,而簇與簇之間的相似度較低。K均值算法的目標是最小化簇內數據點的平方誤差(即簇內的方差)

2. 核心思想

K均值是一種無監督學習算法,用于將數據劃分為K個簇(Cluster),目標是最小化簇內樣本的平方誤差和(Sum of Squared Errors, SSE)。其核心思想是:

簇內相似度高:同一簇的樣本盡可能接近。

簇間相似度低:不同簇的樣本盡可能遠離。

2. 數學目標

最小化損失函數(SSE):
J = ∑ i = 1 K ∑ x ∈ C i ∥ x ? μ i ∥ 2 J = \sum_{i=1}^{K} \sum_{x \in C_i} \|x - \mu_i\|^2 J=i=1K?xCi??x?μi?2

  • C i C_i Ci?:第 i i i個簇。
  • μ i μ_i μi?:第 i i i 個簇的中心點(質心)。
  • ∥ x ? μ i ∥ 2 \|x - \mu_i\|^2 x?μi?2:樣本 x x x到質心的歐氏距離平方。

3. 算法步驟

3.1. 選擇K個初始質心:

  • 隨機選擇K個數據點作為初始質心 μ 1 , μ 2 , … , μ K μ_1,μ_2,…,μ_K μ1?,μ2?,,μK?

3.2.迭代優化

  • 分配步驟(Assignment): 分配每個數據點到最近的質心
    • 對于數據集中的每一個點,計算它與K個質心的距離,并將該點分配到距離其最近的質心所對應的簇。
    • C i = { x : ∥ x ? μ i ∥ 2 ≤ ∥ x ? μ j ∥ 2 , ? j } C_i = \{x : \|x - \mu_i\|^2 \leq \|x - \mu_j\|^2, \forall j\} Ci?={x:x?μi?2x?μj?2,?j}
  • 更新步驟(Update):重新計算質心
    • 計算每個簇中所有點的均值,將該均值作為新的質心。
    • μ i = 1 ∣ C i ∣ ∑ x ∈ C i x \mu_i = \frac{1}{|C_i|} \sum_{x \in C_i} x μi?=Ci?1?xCi??x

3.3. 重復步驟2和步驟3:

  • 迭代分配數據點并更新質心,直到質心不再變化或者變化非常小(通常有設定的最大迭代次數或者誤差容忍度)

4. 關鍵參數

  • K值(簇數量):需預先指定,可通過肘部法則(Elbow Method)或輪廓系數(Silhouette Score)選擇。

  • 初始化方法:

    • 隨機初始化(可能陷入局部最優)。

    • K-Means++(優化初始質心選擇,默認方法)。

  • 距離度量:通常用歐氏距離,也可用曼哈頓距離等。

5. 優缺點

  • ? 優點:

    • 簡單高效:時間復雜度 O ( n ? K ? d ? t ) O(n?K?d?t) O(n?K?d?t),其中 n n n 是樣本數, d d d 是特征維度, t t t是迭代次數。

    • 可擴展性強:適合大規模數據。

    • 解釋性強:簇中心可直接表示簇特征。

  • ? 缺點:

    • 需預先指定K值。

    • 對初始質心敏感(可能收斂到局部最優)。

    • 僅適用于凸形簇(對非球形簇效果差)。

    • 對噪聲和異常值敏感。

6. 改進變種

  • K-Means++:優化初始質心選擇,減少局部最優風險。

  • Mini-Batch K-Means:用數據子集加速計算,適合大數據。

  • K-Medoids(PAM):用實際樣本點(而非均值)作為中心,對噪聲更魯棒。

  • Fuzzy C-Means:允許樣本屬于多個簇(軟聚類)。

7. K值選擇方法

  • 肘部法則(Elbow Method):

    • 繪制不同K值對應的SSE曲線,選擇拐點(SSE下降變緩處)
from sklearn.cluster import KMeans
import matplotlib.pyplot as pltsse = []
for k in range(1, 10):kmeans = KMeans(n_clusters=k).fit(X)sse.append(kmeans.inertia_)
plt.plot(range(1, 10), sse, marker='o')
plt.xlabel('K')
plt.ylabel('SSE')
plt.show()
  • 輪廓系數(Silhouette Score):

    • 衡量樣本與同簇和其他簇的相似度,值越接近1表示聚類越好。
from sklearn.metrics import silhouette_score
scores = []
for k in range(2, 10):kmeans = KMeans(n_clusters=k).fit(X)scores.append(silhouette_score(X, kmeans.labels_))
plt.plot(range(2, 10), scores, marker='o')

8. Python示例

from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt# 生成模擬數據
X, _ = make_blobs(n_samples=300, centers=4, random_state=42)# 訓練K-Means(K=4)
kmeans = KMeans(n_clusters=4, init='k-means++', random_state=42)
kmeans.fit(X)
labels = kmeans.labels_
centers = kmeans.cluster_centers_# 可視化
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.scatter(centers[:, 0], centers[:, 1], c='red', marker='X', s=200)
plt.title("K-Means Clustering")
plt.show()

9. 應用場景

  • 客戶分群(如電商用戶細分)。

  • 圖像壓縮(用簇中心代表顏色)。

  • 異常檢測(遠離簇中心的樣本可能是異常值)。

  • 文本聚類(如新聞主題分類)。

10. 注意事項

  • 數據標準化:K均值對特征尺度敏感,需標準化(如StandardScaler)。

  • 處理異常值:可用K-Medoids或DBSCAN替代。

  • 非凸簇問題:嘗試譜聚類或高斯混合模型(GMM)。

11. 數學推導(質心更新)

質心 μ i μ_i μi?的更新是損失函數
J J J 的最小化過程:
? J ? μ i = ? 2 ∑ x ∈ C i ( x ? μ i ) = 0 ? μ i = 1 ∣ C i ∣ ∑ x ∈ C i x \frac{\partial J}{\partial \mu_i} = -2 \sum_{x \in C_i} (x - \mu_i) = 0 \implies \mu_i = \frac{1}{|C_i|} \sum_{x \in C_i} x ?μi??J?=?2xCi??(x?μi?)=0?μi?=Ci?1?xCi??x

12. 總結

K均值是聚類任務的基礎算法,核心在于迭代優化質心位置。盡管有局限性(如需預設K值),但其高效性和易實現性使其在實踐中廣泛應用。改進方法(如K-Means++)和評估技巧(肘部法則)可進一步提升效果。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78094.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78094.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78094.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

爬蟲案例-爬取某企數據

文章目錄 1、準備要爬取企業名稱數據表2、爬取代碼3、查看效果 1、準備要爬取企業名稱數據表 企業名稱紹興市袍江王新國家庭農場紹興市鄭杜糧油專業合作社紹興市越城區興華家庭農場紹興市越城區銳意家庭農場紹興市越城區青甸畈家庭農場紹興市袍江王新國家庭農場紹興市袍江月明…

足球 AI 智能體技術解析:從數據采集到比賽預測的全鏈路架構

一、引言 在足球運動數字化轉型的浪潮中,AI 智能體正成為理解比賽、預測賽果的核心技術引擎。本文從工程實現角度,深度解析足球 AI 的技術架構,涵蓋數據采集、特征工程、模型構建、實時計算到決策支持的全鏈路技術方案,揭示其背后…

怎么配置一個kubectl客戶端訪問多個k8s集群

怎么配置一個kubectl客戶端訪問多個k8s集群 為什么有的客戶端用token也訪問不了k8s集群,因為有的是把~/.kube/config文件,改為了~/.kube/.config文件,文件設置成隱藏文件了。 按照kubectl的尋找配置的邏輯,kubectl找不到要訪問集群…

[QMT量化交易小白入門]-四十六、年化收益率118%的回測參數,如何用貪心算法挑選50個兩兩相關性最小的ETF組合

本專欄主要是介紹QMT的基礎用法,常見函數,寫策略的方法,也會分享一些量化交易的思路,大概會寫100篇左右。 QMT的相關資料較少,在使用過程中不斷的摸索,遇到了一些問題,記錄下來和大家一起溝通,共同進步。 文章目錄 相關閱讀準備工作安裝所需庫導入所需模塊下載所有ETF數…

幾何編碼:啟用矢量模式地理空間機器學習

在 ML 模型中使用點、線和多邊形,將它們編碼為捕捉其空間屬性的向量。 自地理信息系統 (GIS) 誕生之初,“柵格模式”和“矢量模式”之間就存在著顯著的區別。在柵格模式下,數據以值的形式呈現在規則的網格上。這包括任何形式的圖像&#xff0…

Leetcode98、230:二叉搜索樹——遞歸學習

什么是二叉搜索樹:右子樹節點 > 根節點 > 左子樹節點, 二叉搜索樹中的搜索,返回給定值val所在的樹節點 終止條件為傳進來的節點為空、或者節點的值 val值,返回這個節點; 單程遞歸邏輯:定義一個resu…

每天學一個 Linux 命令(30):cut

??可訪問網站查看,視覺品味拉滿: http://www.616vip.cn/30/index.html cut 命令用于從文件或輸入流中提取文本的特定部分(如列、字符或字節位置)。它常用于處理結構化數據(如 CSV、TSV)或按固定格式分割的文本。以下是詳細說明和示例: 命令格式 cut [選項] [文件...]…

Tauri 2.3.1+Leptos 0.7.8開發桌面應用--Sqlite數據庫選中數據的表格輸出

在前期工作的基礎上(Tauri 2.3.1Leptos 0.7.8開發桌面應用--Sqlite數據庫的寫入、展示和選擇刪除_tauri leptos sqlite 選擇刪除-CSDN博客),實現將選中的數據實時用表格展示出來,效果如下: 1. 后臺invoke調用命令 Tau…

使用Tauri 2.3.1+Leptos 0.7.8開發桌面小程序匯總

近期斷斷續續學習了Rust編程,使用Tauri 2.3.1Leptos 0.7.8開發了一個自用的桌面小程序。Win10操作系統,使用VS Code及rust analyzer插件搭建的開發環境,后期開始使用Roo Code綁定DeepSeek API 輔助編程,對我這個初學者編程幫助很大…

考研英一學習筆記

2024 年全國碩士研究生招生考試 英語(一)試題 (科目代碼:201) Section Ⅰ Use of English Directions: Read the following text. Choose the best word(s) for each numbered blank and mark A, B, C or D on the ANS…

【技術筆記】Cadence實現Orcad與Allegro軟件交互式布局設置

【技術筆記】Cadence實現Orcad與Allegro軟件交互式布局設置 更多內容見專欄:【硬件設計遇到了不少問題】、【Cadence從原理圖到PCB設計】 在做硬件pcb設計的時候,原理圖選中一個元器件,希望可以再PCB中可以直接選中。 為了達到原理圖和PCB兩兩…

卷積神經網絡(CNN)詳解

文章目錄 引言1.卷積神經網絡(CNN)的誕生背景2.卷積神經網絡(CNN)介紹2.1 什么是卷積神經網絡?2.2 卷積神經網絡(CNN)的基本特征2.2.1 局部感知(Local Connectivity)2.2.…

8051單片機所有Keil C51匯編偽指令和C語言關鍵字大全

8051單片機所有Keil C51匯編偽指令和C語言關鍵字大全 作者將狼才鯨創建日期2025-04-21 CSDN閱讀地址:8051單片機所有Keil匯編偽指令和C語言關鍵字的詳細解釋 8051單片機所有Keil匯編偽指令和C語言關鍵字的詳細解釋,在Keil已安裝文件夾D:\Keil_v5\C51\H…

機器視覺的智能手機屏貼合應用

在智能手機制造領域,屏幕貼合工藝堪稱"微米級的指尖芭蕾"。作為影響觸控靈敏度、顯示效果和產品可靠性的關鍵工序,屏幕貼合精度直接決定了用戶體驗。傳統人工對位方式已無法滿足全面屏時代對極窄邊框和超高屏占比的嚴苛要求,而Mast…

運維打鐵:網絡基礎知識

文章目錄 一、網絡架構1. 網絡架構圖2. 各層級功能3. 機房網絡常見問題及解決方案 二、交換技術1. 交換技術基礎2. 交換技術分類3. 廣播域相關概念4. ARP 協議5. 三層交換機6. VLAN(虛擬局域網) 三、路由技術1. 路由器端口類型及功能2. 路由器功能3. 路由…

使用C#和FFmpeg開發RTSP視頻播放器的完整指南

RTSP(Real Time Streaming Protocol)是流媒體技術中廣泛使用的協議,廣泛應用于視頻監控、視頻會議和在線直播等領域。本文將詳細介紹如何使用C#和FFmpeg開發一個功能完整的RTSP視頻播放器,涵蓋從環境搭建到核心功能實現的全部過程。 一、開發環境準備 …

前端基礎之《Vue(9)—混入》

一、什么是混入 1、是一種代碼復用的技巧 Vue組件是由若干選項組成的,向組件中混入可復用的選項。 2、作用 比如我封裝兩個組件,一個是A組件,一個是B組件,發現它里面有相同的選項,就可以用混用的方式來復用它。 二、…

Anything V4/V5 模型匯總

??????二次元風格生成擴散模型-anything-v4.0Stable Diffusion anything-v5-PrtRE模型介紹及使用深度探索 Anything V5:安裝與使用全攻略anything-v5x0.25少兒插畫_v1xyn-ai/anything-v4.0

一天學完Servlet!!!(萬字總結)

文章目錄 前言Servlet打印Hello ServletServlet生命周期 HttpServletRequest對象常用api方法請求亂碼問題請求轉發request域對象 HttpServletResponse對象響應數據響應亂碼問題請求重定向請求轉發與重定向區別 Cookie對象Cookie的創建與獲取Cookie設置到期時間Cookie注意點Cook…