1. 程式人生 > >機器學習實踐(十七)—sklearn之無監督學習-K-means演算法

機器學習實踐(十七)—sklearn之無監督學習-K-means演算法

一、無監督學習概述

  • 什麼是無監督學習

    之所以稱為無監督,是因為模型學習是從無標籤的資料開始學習的。

  • 無監督學習包含演算法

    • 聚類
      • K-means(K均值聚類)
    • 降維
      • PCA

二、K-means原理

  • K-means聚類步驟

    1. 隨機設定K個特徵空間內的點作為初始的聚類中心
    2. 對於其他每個點計算到K箇中心的距離,未知的點選擇最近的一個聚類中心點作為標記類別
    3. 接著對著標記的聚類中心之後,重新計算出每個聚類的新中心點(平均值)
    4. 如果計算得出的新中心點與原中心點一樣,那麼結束,否則重新進行第二步過程
  • 圖片助解

三、K-means - API

sklearn.cluster.KMeans(n_clusters=8,init=‘k-means++’)

  • k-means聚類
  • n_clusters
    • 開始的聚類中心數量
  • init
    • 初始化方法,預設為’k-means ++’
  • labels_
    • 預設標記的型別,可以和真實值比較(不是值比較)

四、K-means效能評估指標

1. 輪廓係數


s c i = b i

a i m a x ( b i , a i ) sc_i = \frac{b_i-a_i}{max(b_i,a_i)}

注:

  • 對於每個 i 點是已聚類資料中的樣本點 , b i b_i 為 i 點到其它簇中所有樣本點的距離的最小值, a i a_i 為 i 到自身簇的所有樣本點的距離的平均值。最終計算出所有的樣本點的輪廓係數平均值

2. 輪廓係數值分析

  • 根據公式極端值考慮:
    • 如果 b i > > a i b_i >>a_i 那麼公式結果趨近於 1,效果好。
    • 如果 a i > > b i a_i>>b_i 那麼公式結果趨近於 -1,效果不好。
  • 輪廓係數的值是介於 [-1,1] ,越趨近於1代表內聚度和分離度都相對較優。

3. 輪廓係數 - API

sklearn.metrics.silhouette_score(X, labels)

  • 計算所有樣本的平均輪廓係數
  • X
    • 特徵值
  • labels
    • 被聚類標記的目標值

未完待續…