聚類是一種無監督的學習,它將相似的對象歸到同一個簇中。它有點像全自動分類。聚類方法幾乎可以應用於所有對象,簇內的對象越相似,聚類的效果越好。
K-均值聚類算法
基本概念:
簇:假定有一些數據,現在將相似數據歸到一起,簇識別會告訴我們這些簇到底都是些什麼。聚類與分類的最大不同在於,分類的目標事先已知,而聚類則是類別未知,其產生的結果和分類相同。
K-均值中的K(簇個數)是自己給定的,k是多少就有多少個簇。
質心:均值,即向量各維取平均,即簇中所有點的中心來描述。
距離的度量:常用歐氏距離 ( 和餘弦相似度(通過測量兩個向量的夾角的餘弦值來度量它們之間的相似性),大多情況下都要先標準化
優化目標: 就是使所有簇裏的點到質心的距離加起來最小
工作流程:
- 隨機確定k個初始點作爲質心
- 然後將數據集中的每個點分配到一個簇中,即爲每個點找距其最近的質心
- 然後其分配給該質心所對應的簇
- 然後每個簇的質心更新爲該簇所有點的平均值
下面具體來看:
1.根據自己的數據,設K值,現假設K=2
2.K=2,所以隨機取兩個點作爲質心
3.根據那兩個質心進行距離計算並劃分簇
4.對已經分類了的兩個簇進行質心的更新,再重新遍歷一遍計算距離
5.更新到再更新他的簇也不再變之後就說明已經分好了
優缺點
優點:簡單快速,適合常規數據集
缺點:
- K值難確定,不好調參
- 複雜度與樣本成線性關係,在大規模數據集上收斂較慢。
- 可能收斂到局部最小值
- 對一些環狀簇或者奇形怪狀的簇難以分離
適用數據類型:數值型數據。
K-均值聚類的一般流程
(1) 收集數據:使用任意方法。(2) 準備數據:需要數值型數據來計算距離,也可以將標稱型數據映射爲二值型數據再用於距離計算。
(3) 分析數據:使用任意方法。
(4) 訓練算法:不適用於無監督學習,即無監督學習沒有訓練過程。
(5) 測試算法:應用聚類算法、觀察結果。可以使用量化的誤差指標如誤差平方和(後面 會介紹)來評價算法的結果。
(6) 使用算法:可以用於所希望的任何應用。通常情況下,簇質心可以代表整個簇的數據 來做出決策。
DBSCAN聚類( Density-Based Spatial Clustering of Applications with Noise)
DBSCAN 的主要優點是它不需要用戶先驗地設置簇K的個數,可以劃分具有複雜形狀的簇,還可以找出不屬於任何簇的點。DBSCAN 比凝聚聚類和 k 均值稍慢,但仍可以擴展到相對較大的數據集。
原理思想
識別特徵空間的“擁擠”區域中的點,在這些區域中許多數據點靠近在一起。這些區域被稱爲特徵空間中的密集區域。
思想是,簇形成數據的密集區域,並由相對較空的區域分隔開。
基本概念
核心樣本:在密集區域內的點被稱爲核心樣本(或核心對象,核心點)。
ϵ-鄰域的距離閾值:設定的半徑r
直接密度可達:若某點b在點q的 r 鄰域內,且a是核心點則p-q直接密度可達。
密度可達:若有一個點的序列q0、q1、…qk,對任意qi-qi-1是直接密度可達的,則稱從q0到qk密度可達,這實際上是直接密度可達的“傳播”。
此圖a,b密度可達
密度相連:若從某核心點p出發,點q和點k都是密度可達的,則稱點q和點k是密度相連的。
邊界點:屬於某一個類的非核心點,不能發展下線了
噪聲點:不屬於任何一個類簇的點,從任何一個核心點出發都是密度不可達的
如圖。A是核心對象,A1,A2,A3在A這個圈內,即A123是A的下線,A123又會以自己爲核心點畫圈。往下類似,直到遇到B,C這種下線,他們再畫圈,其圈內沒有其他下線了,就叫做邊界點。N是所有的核心點畫的圈都圈不到的一個點,所以N是離羣點,也叫噪聲點。
工作流程
參數選擇:
半徑ϵ:可以根據K距離來設定:找突變點
K距離:給定數據集P={p(i); i=0,1,…n},計算點P(i)到集合D的子集S中所有點 之間的距離,距離按照從小到大的順序排序,d(k)就被稱爲k-距離。
點的個數MinPts: k-距離中k的值,一般取的小一些,多次嘗試
優缺點
優點:
- 不需要指定簇個數
- 可以發現任意形狀的簇
- 擅長找到離羣點(檢測任務) 兩個參數就夠了
缺點:
- 高維數據有些困難(可以做降維)
- 參數難以選擇(參數對結果的影響非常大)
- Sklearn中效率很慢(數據削減策略)
很牛的一個聚類可視化網站可以自己玩玩
https://www.naftaliharris.com/blog/visualizing-dbscan- clustering/