【機器學習基礎】機器學習入門核心算法:K均值(K-Means)

在這里插入圖片描述

機器學習入門核心算法:K均值(K-Means)

    • 1. 算法邏輯
    • 2. 算法原理與數學推導
        • 2.1 目標函數
        • 2.2 數學推導
        • 2.3 時間復雜度
    • 3. 模型評估
        • 內部評估指標
        • 外部評估指標(需真實標簽)
    • 4. 應用案例
        • 4.1 客戶細分
        • 4.2 圖像壓縮
        • 4.3 文檔聚類
    • 5. 面試題及答案
    • 6. 優缺點分析
        • **優點**:
        • **缺點**:
    • 7. 數學證明:為什么均值最小化WCSS?

1. 算法邏輯

K均值是一種無監督聚類算法,核心目標是將n個數據點劃分為k個簇(cluster),使得同一簇內數據點相似度高,不同簇間差異大。算法流程如下:

graph TDA[初始化K個質心] --> B[分配數據點到最近質心]B --> C[重新計算質心位置]C --> D{質心是否變化?}D -- 是 --> BD -- 否 --> E[輸出聚類結果]

2. 算法原理與數學推導

2.1 目標函數

最小化簇內平方和(Within-Cluster Sum of Squares, WCSS):
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 \mu_i μi? 表示第i個簇的質心
  • ∥ x ? μ i ∥ \|x - \mu_i\| x?μi? 表示歐氏距離
2.2 數學推導

步驟1:初始化質心
隨機選擇k個數據點作為初始質心:
μ 1 ( 0 ) , μ 2 ( 0 ) , . . . , μ k ( 0 ) 其中 μ j ( 0 ) ∈ R d \mu_1^{(0)}, \mu_2^{(0)}, ..., \mu_k^{(0)} \quad \text{其中} \mu_j^{(0)} \in \mathbb{R}^d μ1(0)?,μ2(0)?,...,μk(0)?其中μj(0)?Rd

步驟2:分配數據點
對每個數據點 x i x_i xi?,計算到所有質心的距離,分配到最近質心的簇:
C j ( t ) = { x i : ∥ x i ? μ j ( t ) ∥ 2 ≤ ∥ x i ? μ l ( t ) ∥ 2 ? l } C_j^{(t)} = \{ x_i : \|x_i - \mu_j^{(t)}\|^2 \leq \|x_i - \mu_l^{(t)}\|^2 \ \forall l \} Cj(t)?={xi?:xi??μj(t)?2xi??μl(t)?2??l}

步驟3:更新質心
重新計算每個簇的均值作為新質心:
μ j ( t + 1 ) = 1 ∣ C j ( t ) ∣ ∑ x i ∈ C j ( t ) x i \mu_j^{(t+1)} = \frac{1}{|C_j^{(t)}|} \sum_{x_i \in C_j^{(t)}} x_i μj(t+1)?=Cj(t)?1?xi?Cj(t)??xi?

步驟4:收斂條件
當滿足以下任一條件時停止迭代:
∥ μ j ( t + 1 ) ? μ j ( t ) ∥ < ? 或 J ( t ) ? J ( t + 1 ) < δ \|\mu_j^{(t+1)} - \mu_j^{(t)}\| < \epsilon \quad \text{或} \quad J^{(t)} - J^{(t+1)} < \delta μj(t+1)??μj(t)?<?J(t)?J(t+1)<δ

2.3 時間復雜度
  • 每次迭代: O ( k n d ) O(knd) O(knd)
  • 總復雜度: O ( t k n d ) O(tknd) O(tknd)
    其中k=簇數,n=樣本數,d=特征維度,t=迭代次數

3. 模型評估

內部評估指標
  1. 輪廓系數(Silhouette Coefficient)
    s ( i ) = b ( i ) ? a ( i ) max ? { a ( i ) , b ( i ) } s(i) = \frac{b(i) - a(i)}{\max\{a(i), b(i)\}} s(i)=max{a(i),b(i)}b(i)?a(i)?

    • a ( i ) a(i) a(i):樣本i到同簇其他點的平均距離
    • b ( i ) b(i) b(i):樣本i到最近其他簇的平均距離
    • 取值范圍:[-1, 1],越大越好
  2. 戴維森堡丁指數(Davies-Bouldin Index)
    D B = 1 k ∑ i = 1 k max ? j ≠ i ( σ i + σ j d ( μ i , μ j ) ) DB = \frac{1}{k} \sum_{i=1}^k \max_{j \neq i} \left( \frac{\sigma_i + \sigma_j}{d(\mu_i, \mu_j)} \right) DB=k1?i=1k?j=imax?(d(μi?,μj?)σi?+σj??)

    • σ i \sigma_i σi?:簇i內平均距離
    • d ( μ i , μ j ) d(\mu_i, \mu_j) d(μi?,μj?):簇中心距離
    • 取值越小越好
外部評估指標(需真實標簽)
  • 調整蘭德指數(Adjusted Rand Index)
  • Fowlkes-Mallows 指數
  • 互信息(Mutual Information)

4. 應用案例

4.1 客戶細分
  • 場景:電商用戶行為分析
  • 特征:購買頻率、客單價、瀏覽時長
  • 結果:識別高價值客戶群(K=5),營銷轉化率提升23%
4.2 圖像壓縮
  • 原理:將像素顏色聚類為K種代表色
  • 步驟
    1. 將圖像視為RGB點集(n=像素數,d=3)
    2. 設置K=256(256色圖像)
    3. 用簇中心顏色代替原始像素
  • 效果:文件大小減少85%且視覺質量可接受
4.3 文檔聚類
  • 場景:新聞主題分類
  • 特征:TF-IDF向量(d≈10,000)
  • 挑戰:高維稀疏數據需先降維(PCA/t-SNE)

5. 面試題及答案

Q1:K均值對初始質心敏感,如何改進?
A:采用K-means++初始化:

  1. 隨機選第一個質心
  2. 后續質心以概率 D ( x ) 2 / ∑ D ( x ) 2 D(x)^2 / \sum D(x)^2 D(x)2/D(x)2選擇
    D ( x ) D(x) D(x)為點到最近質心的距離)

Q2:如何確定最佳K值?
A:常用方法:

  • 肘部法則(Elbow Method):繪制K與WCSS曲線,選拐點
    from sklearn.cluster import KMeans
    distortions = []
    for k in range(1,10):kmeans = KMeans(n_clusters=k)kmeans.fit(X)distortions.append(kmeans.inertia_)
    
  • 輪廓系數法:選擇使平均輪廓系數最大的K

Q3:K均值能否處理非凸數據?
A:不能。K均值假設簇是凸形且各向同性。解決方案:

  • 使用譜聚類(Spectral Clustering)
  • 或DBSCAN等基于密度的算法

6. 優缺點分析

優點
  1. 簡單高效:時間復雜度線性增長,適合大規模數據
  2. 可解釋性強:簇中心代表原型特征
  3. 易于實現:核心代碼僅需10行
    def k_means(X, k):centroids = X[np.random.choice(len(X), k)]while True:labels = np.argmin(np.linalg.norm(X[:,None]-centroids, axis=2), axis=1)new_centroids = np.array([X[labels==j].mean(0) for j in range(k)])if np.allclose(centroids, new_centroids): breakcentroids = new_centroidsreturn labels, centroids
    
缺點
  1. 需預先指定K值:實際應用中K常未知
  2. 對異常值敏感:均值易受極端值影響
  3. 僅適用于數值數據:需對類別變量編碼
  4. 局部最優問題:不同初始化可能產生不同結果
  5. 假設各向同性:在細長簇或流形數據上效果差

7. 數學證明:為什么均值最小化WCSS?

給定簇 C j C_j Cj?,優化目標:
min ? μ j ∑ x i ∈ C j ∥ x i ? μ j ∥ 2 \min_{\mu_j} \sum_{x_i \in C_j} \|x_i - \mu_j\|^2 μj?min?xi?Cj??xi??μj?2
求導并令導數為零:
? ? μ j ∑ ∥ x i ? μ j ∥ 2 = ? 2 ∑ ( x i ? μ j ) = 0 \frac{\partial}{\partial \mu_j} \sum \|x_i - \mu_j\|^2 = -2 \sum (x_i - \mu_j) = 0 ?μj???xi??μj?2=?2(xi??μj?)=0
解得:
μ j = 1 ∣ C j ∣ ∑ x i \mu_j = \frac{1}{|C_j|} \sum x_i μj?=Cj?1?xi?
證畢:均值是簇內平方和的最優解。


💡 關鍵洞察:K均值本質是期望最大化(EM)算法的特例:

  • E步:固定質心,分配數據點(期望)
  • M步:固定分配,更新質心(最大化)

實際應用時建議:

  1. 數據標準化:消除量綱影響
  2. 多次運行:取最佳結果(n_init=10
  3. 結合PCA降維:處理高維數據
  4. 對分類型數據用K-mode變種

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

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

相關文章

springboot多模塊父pom打包正常,單模塊報錯

背景&#xff1a;因為項目開發中經常發測試環境&#xff0c;發現使用阿里的插件能一鍵上傳&#xff0c;不用手動上傳比較方便。但是多模塊有多個啟動jar的時候&#xff0c;全局打包太慢&#xff0c;單獨打發現報錯。這里貼一下我使用這個插件的方式&#xff1a; 附帶一個我感覺…

通義靈碼2.5——基于MCP打造我的12306火車票智能查詢小助手

前沿技術應用全景圖 本項目作為通義靈碼2.5的標桿實踐案例&#xff0c;展現了AI輔助開發在復雜業務系統中的革命性突破。通過深度集成12306 MCP服務體系&#xff0c;我們構建了一個融合智能決策、環境感知和自主優化的新一代火車票查詢系統。 #mermaid-svg-4D7QqwJjsQRdKVP7 {…

進程間通信(共享內存)

目錄 前置&#xff1a; 一 原理 二 API 1. shmgetr 2. shmctl 3. 指令操作 2. 刪除 3. 掛接 4. 斷開掛接 三 demo代碼 四 共享內存的特征 前置&#xff1a; 1.前面說的不管是匿名管道還是命名管道都是基于文件的思想構建的一套進程間通信的方案&#xff0c;那有沒有…

詳解GPU

詳解GPU GPU&#xff08;圖形處理器&#xff09;就像電腦里的 “圖形小能手”&#xff0c;原本主要用來畫畫&#xff08;渲染圖形&#xff09;&#xff0c;現在還能幫忙干很多雜活&#xff08;并行計算&#xff09; 一、先認識 GPU 的 “鑰匙”&#xff1a;驅動和開發工具 裝驅…

體育遇上AI:解讀新一代智能閱讀產品

在信息過載的今天&#xff0c;體育迷們時常面對這樣的困擾&#xff1a;如何從海量賽事新聞、數據分析和深度評論中高效獲取自己真正關心的內容&#xff1f;體育AI閱讀產品正成為解決這一痛點的關鍵鑰匙——它融合人工智能技術與體育內容生態&#xff0c;為球迷提供智能化、個性…

外網訪問可視化工具 Grafana (Linux版本)

Grafana 是一款強大的可視化監控指標的展示工具&#xff0c;可以將不同的數據源數據以圖形化的方式展示&#xff0c;不僅通用而且非常美觀。它支持多種數據源&#xff0c;如 prometheus 等&#xff0c;也可以通過插件和 API 進行擴展以滿足各種需求。 本文將詳細介紹如何在本地…

Java開發經驗——阿里巴巴編碼規范實踐解析4

摘要 本文主要介紹了阿里巴巴編碼規范中關于日志處理的相關實踐解析。強調了使用日志框架&#xff08;如 SLF4J、JCL&#xff09;而非直接使用日志系統&#xff08;如 Log4j、Logback&#xff09;的 API 的重要性&#xff0c;包括解耦日志實現、統一日志調用方式等好處。同時&…

各個鏈接集合

golang學習&#xff5e;&#xff5e;_從數組中取一個相同大小的slice有成本嗎?-CSDN博客 框架 golang學習&#xff5e;&#xff5e;_從數組中取一個相同大小的slice有成本嗎?-CSDN博客 golang k8s學習_容器化部署和傳統部署區別-CSDN博客 K8S rabbitmq_rabbitmq 廣播-CSD…

Cesium 展示——獲取鼠標移動、點擊位置的幾種方法

文章目錄 需求分析:這里我們用到了幾種常見的鼠標事件1. 獲取鼠標移動的位置2. 獲取鼠標點擊的位置3. 添加面4. 示例代碼需求 獲取指定斷面的 label 分析:這里我們用到了幾種常見的鼠標事件 1. 獲取鼠標移動的位置 viewer.screenSpaceEventHandler.setInputAction((moveme…

技術分享 | Oracle SQL優化案例一則

本文為墨天輪數據庫管理服務團隊第70期技術分享&#xff0c;內容原創&#xff0c;作者為技術顧問馬奕璇&#xff0c;如需轉載請聯系小墨&#xff08;VX&#xff1a;modb666&#xff09;并注明來源。 一、問題概述 開發人員反映有條跑批語句在測試環境執行了很久都沒結束&…

$3 #12階段三小結Java se

$3 #12 階段三小結 Java se 基本沒有新學什么知識點 感覺 基礎語法 和高級語法 已經學完了 現在就是得學習 一些企業開發的框架 以及項目架構的思維 比如一個產品 從需求分析 到功能模塊設計 到接口文檔定義 數據庫建立 前端接口頁面設計 后端接口開發的步驟 然后現在比…

華為云Flexus+DeepSeek征文 | 初探華為云ModelArts Studio:部署DeepSeek-V3/R1商用服務的詳細步驟

華為云FlexusDeepSeek征文 | 初探華為云ModelArts Studio&#xff1a;部署DeepSeek-V3/R1商用服務的詳細步驟 前言一、華為云ModelArts Studio平臺介紹1.1 ModelArts Studio介紹1.2 ModelArts Studio主要特點1.3 ModelArts Studio使用場景1.4 ModelArts Studio產品架構 二、訪問…

易經六十四卦象解釋數據集分享!智能體知識庫收集~

今天給大家分享一個易經六十四卦象解釋數據集 &#xff0c;繼續來積累AI相關的資料。 六十四卦&#xff0c;記載于《易經》&#xff0c;每一卦的圖像均由兩個八卦上下組合而成&#xff0c;每一卦各有六個爻。南宋朱熹說&#xff0c;先畫八卦于內&#xff0c;后畫八卦于外&#…

1 μs = 10?? s

1 s 10? s 1 ms 10? s 1 s 10?? s 1 ns 10?? s 1 ps 10? s 1 fs 10?? s ?? 時間單位&#xff08;十進制&#xff09; 符號單位名稱10 的冪次s秒&#xff08;second&#xff09;10?ms毫秒&#xff08;millisecond&#xff09;10?s微秒&#xff08;microseco…

webrtc初了解

1. webrtc的簡介 一、WebRTC 是什么&#xff1f; Web Real-Time Communication&#xff08;網頁實時通信&#xff09;&#xff0c;是瀏覽器原生支持的實時音視頻通信技術&#xff0c;無需安裝插件或客戶端&#xff0c;可直接在瀏覽器之間實現點對點&#xff08;P2P&#xff09…

從數據持久化到網絡通信與OpenCV:Qt應用程序開發的深度探索與實戰

文章目錄 前言一、QSettings&#xff1a;輕量級數據持久化方案1.1 QSettings 主要特點1.2 QSettings 常用函數整理 二、數據庫2.1 連接SQLite數據庫2.2 建表2.3 增刪改 三、網絡編程3.1 網絡分層3.2 IP地址3.3 端口號3.4 基于TCP的Socket通信3.4 相關接口3.4.1核心類3.4.2 通信…

經典SQL查詢問題的練習第一天

首先有三張表&#xff0c;學生表、課程表、成績表 student:studentId,studentName; course:courseId&#xff0c;courseName,teacher; score:score,studentId,courseId; 接著有以下幾道題目&#xff1a; ①查詢課程編號為‘0006’的總成績&#xff1a; 首先總成績&#x…

企業級網絡管理實戰:Linux、云與容器的深度融合與優化

在數字化轉型浪潮下&#xff0c;企業網絡架構日益復雜&#xff0c;Linux系統、云計算與容器技術成為構建高效、靈活網絡的核心要素。本文將從技術原理、實踐方案、優化策略三個維度&#xff0c;深度解析企業級網絡管理中的關鍵技術&#xff0c;助力企業打造穩定、安全、可擴展的…

信號與系統速成-1.緒論

b站浙大教授雖然講的比較細&#xff0c;但是太慢了&#xff0c;不適合速成 祖師爺奧本海姆的MIT課程好像和我們教材的版本不太匹配&#xff0c;但是講的很不錯 慕課上也有很多資源&#xff0c;比如信號與系統 - 網易云課堂 同站博主籬笆外的xixi的文章也挺不錯 最終我還是選…

緩存架構方案:Caffeine + Redis 雙層緩存架構深度解析

在高并發、低延遲的現代互聯網系統中&#xff0c;緩存是提升系統性能和穩定性的重要手段。隨著業務復雜度的增長&#xff0c;單一緩存方案&#xff08;如僅使用Redis或僅使用本地緩存&#xff09;已難以滿足高性能與一致性需求。 本文將圍繞 Caffeine Redis 的雙層緩存架構展…