七、聚类算法与应用
聚類算法準確率不太高,很少單獨使用,但是會用來提供一些特征。
一、聚類算法簡介
- 是一種無監督學習,只有數據x,沒有標簽y
- 試圖通過數據間的關系發現一定的模式
可以作為監督學習中稀疏特征的預處理
比如有200個商品,不聚類的話就會很稀疏,聚類之后,可能會發現這些商品被分為幾個大類,從而發現哪些人喜歡哪些類別的東西
不過結果可能不是很可靠,工業界用的較多的還是kmeans
1、聚類算法的過程:給定N個訓練樣本,同時給定聚類類別數K,把比較接近的樣本放到一個類中,得到K個類
2、如何聚類:利用樣本之間的相似度,相似度大的分為同類
3、聚類結果的評判(距離):高類間距,低類內距
4、評定內容:
無論用什么樣的評定內容,最終都會把樣本表示為向量,求取向量之間的距離。
5、聚類算法的分類:
有些聚類算法得到的類別時獨立的,也就是每個樣本只屬于一個類別(kmeans,GMM)
有些聚類算法得到的類別是重疊的,可以看做是樹狀層疊,無需初始輸入聚類個數(層次聚類)
二、K-means聚類
該算法是提出非常早,且使用非常頻繁的算法
迭代收斂的定義:
聚類中心不再有變化
每個樣本到對應聚類中心的距離之和不再有很大的變化
第二種計算距離之和的方法用的較多,因為是一個定量的分析
不再有很大的變化:因為樣本量很大的時候,計算是有偏差的,所以說距離之和不再有很大的變化
2.1 聚類過程:
隨機確定k個初始點作為質心
將數據集中的每個點分配到一個簇中,即為每個點找到距離其最近的質心,并將其分配給該質心所對應的簇,該步驟完成后,每個簇的質心更新為該簇所有點的平均值。
2.2 K-means的損失函數
2.3 K-means的缺點
由于該損失函數(也叫畸變函數/散度函數)是非凸的函數,意味著難以收斂到局部最優,所以對初始聚類中心是敏感的**
解決方法:
- K-means++的方法:初始化第一個聚類中心為某個樣本點,初始化第二個聚類中心點為離它最遠的點,第三個點離它倆最遠…
- 多進行幾遍初始化,選使得損失函數最小的。
- 優化的初始化聚類方法
2.4 如何選擇K:
2.5 K-means小結
K-Means的主要優點有:
1)原理比較簡單,實現也是很容易,收斂速度快。
2)聚類效果較優。
3)算法的可解釋度比較強。
4)主要需要調參的參數僅僅是簇數k。
K-Means的主要缺點有:
1)K值的選取不好把握
2)對于不是凸的數據集比較難收斂
3)如果各隱含類別的數據不平衡,比如各隱含類別的數據量嚴重失衡,或者各隱含類別的方差不同,則聚類效果不佳。
4) 采用迭代方法,得到的結果只是局部最優。
5) 對噪音和異常點比較的敏感。
2.6 K-means和KNN的區別
K-Means是無監督學習的聚類算法,沒有樣本輸出,且K-Means有明顯的訓練過程,找到k個類別的最佳質心,從而決定樣本的簇類別;
而KNN是監督學習的分類算法,有對應的類別輸出。KNN基本不需要訓練,對測試集里面的點,只需要找到在訓練集中最近的k個點,用這最近的k個點的類別來決定測試點的類別。
當然,兩者也有一些相似點,兩個算法都包含一個過程,即找出和某一個點最近的點。兩者都利用了最近鄰(nearest neighbors)的思想。
三、層次聚類
所謂從下而上地合并cluster,具體而言,就是每次找到距離最短的兩個cluster,然后進行合并成一個大的cluster,直到全部合并為一個cluster。整個過程就是建立一個樹結構,類似于下圖。
① 假設5個樣本分別屬于一個族,找到最接近的兩個
② 將兩個最接近的聚在一起,變為4類
③ 發現4和5最近,將其聚類
④ 直到將所有的樣本聚到一類
簇間的距離:
層次聚類和K-means的對比:
四、高斯混合模型
要點:
高斯混合模型系數之和為1,GMM整體的概率密度函數是由若干個高斯分量的概率密度函數線性疊加而成的,而每一個高斯分量的概率密度函數的積分必然也是1,所以,要想GMM整體的概率密度積分為1,就必須對每一個高斯分量賦予一個其值不大于1的權重,并且權重之和為1。
為什么要用EM算法求解
如果利用最大似然估計來求解的話,目標函數是對數的和,偏導難求,且很難展開,求解困難。
使用EM算法必須明確隱變量。(EM算法求解GMM)
高斯混合模型優勢:
高斯混合模型的劣勢:
五、三種方法的對比
如果k的值和GMM的k的值一樣的話,kmeans計算可能會快一點,可以將大量數據切分,逐層進行kmeans。
GMM模型給出的是每一個觀測點由哪個高斯分量生成的概率,而K-means直接給出一個觀測點屬于哪一類。
GMM是一種“軟性K-means”
總結
- 上一篇: 用环翼机原理制作“会飞的兔子”
- 下一篇: 维信诺:2022 年预计营收超 73 亿