日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

聚类算法(K-means AGNES DBSCAN)

發布時間:2024/1/1 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 聚类算法(K-means AGNES DBSCAN) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、聚類算法基本概念

1. 定義:

聚類就是按照某個特定標準(如距離準則)把一個數據集分割成不同的類或簇,使得同一個簇內的數據對象的相似性盡可能大。即聚類后同一類的數據盡可能聚集到一起,不同數據盡量分離。簡單來講就是把相似的東西分到一起。

2. 無監督學習

我們一定要區分開聚類算法和分類算法。分類算法是訓練一個分類器,根據已知的事物和對應的標簽進行學習、訓練,屬于有監督學習。而聚類算法僅僅是把相似的事物分成一組,沒有標簽,屬于無監督學習。

3. 常見的聚類算法

主要的聚類算法可以劃分為如下幾類:(1)劃分方法 (2)層次方法 (3)基于密度的方法 (4)基于網格的方法 (5)基于模型的方法。本講主要介紹以下三種聚類算法👇:

二、聚類算法

1. K-means聚類算法

(1)K-means 基本概念

K-means(又稱k-均值或k-平均)聚類算法。算法思想就是首先隨機確定k個中心點作為聚類中心,然后把每個數據點分配給最鄰近的中心點,分配完成后形成k個聚類,計算各個聚類的平均中心點,將其作為該聚類新的類中心點,然后重復迭代上述步驟直到分配過程不再產生變化。

(2)K-means步驟

① 從D中隨機取k個元素,作為k個簇的各自的中心。
② 分別計算剩下的元素到k個簇中心的相異度,將這些元素分別劃歸到相異度最低的簇。
③ 根據聚類結果,重新計算k個簇各自的中心,計算方法是取簇中所有元素各自維度的算術平均數。
④ 將D中全部元素按照新的中心重新聚類。
⑤ 重復第4步,直到聚類結果不再變化。
⑥ 將結果輸出。

(3)K-means示例

① 假設K=3,首先 3 個中心點被隨機初始化,所有的數據點都還沒有進行聚類,默認全部都標記為紅色,如下圖所示:

② 然后進入第一次迭代:按照初始的中心點位置為每個數據點著上顏色,重新計算 3 個中心點,結果如下圖所示:

③ 根據上圖可以看出,由于初始的中心點是隨機選的,現在上圖目測效果并不是很理想,肯定還需要繼續迭代,接下來是下一次迭代的結果:

④ 可以看到大致形狀已經出來了。再經過兩次迭代之后,基本上就收斂了,最終結果如下:

(4)優缺點

參考1:

參考2:

注:在參考1中有一個缺點是會受初始點的選取影響,如果初始點選取很糟糕,可能導致結果很爛,舉個例子,例如選用下面這幾個初始中心點:

最終會收斂到這樣的結果:

2. 層次聚類

(1)層次聚類基本概念

層次聚類是另一種主要的聚類方法,它具有一些十分必要的特性使得它成為廣泛應用的聚類方法。它生成一系列嵌套的聚類樹來完成聚類。單點聚類處在樹的最底層,在樹的頂層有一個根節點聚類。根節點聚類覆蓋了全部的所有數據點。 可根據其聚類方式劃分為:(1)凝聚(自下而上)聚類 (2)分裂(自上而下)聚類。層次凝聚的代表是AGNES算法。層次分裂的代表是DIANA算法。接下來主要介紹以下AGNES算法。

(2)AGNES算法

AGNES (AGglomerative NESting)算法最初將每個對象作為一個簇,然后這些簇根據某些準則被一步步地合并。兩個簇間的相似度由這兩個不同簇中距離最近的數據點對的相似度來確定。聚類的合并過程反復進行直到所有的對象最終滿足簇數目。

AGNES(自底向上凝聚算法)計算機編程實現: 輸入:包含n個對象的數據庫,終止條件簇的數目k。 輸出:k個簇,達到終止條件規定簇數目。 將每個對象當成一個初始簇 REPEAT根據兩個簇中最近的數據點找到最近的兩個簇;合并兩個簇,生成新的簇的集合; UNTIL 達到定義的簇的數目

(3)判斷兩個簇之間相似度的方法

① SingleLinkage

SingleLinkage又叫做 nearest-neighbor ,就是取兩個類中距離最近的兩個樣本的距離作為這兩個集合的距離,也就是說,最近兩個樣本之間的距離越小,這兩個類之間的相似度就越大。
注:這個方法有一個很大的問題,當兩個簇整體距離很遠,但是某兩個點離得很近,這會導致模型認為兩個簇很想相近,導致誤判。而且這樣得到的簇也會很松散。

② CompleteLinkage

CompleteLinkage是 Single Linkage 的反面極端,取兩個集合中距離最遠的兩個點的距離作為兩個集合的距離。
注:這個方法的問題是,當兩個簇整體距離很近,但是某兩點離得很遠,就永遠不會合并成一個簇,導致誤判。

③ Average-linkage

Average-linkage就是把兩個集合中的點兩兩的距離全部放在一起求一個平均值,相對也能得到合適一點的結果。
接下來我們利用層次聚類和Average-linkage判定相似性的方法來看一個例題吧👇:

(4)優缺點

3. 密度聚類

(1)密度聚類簡介

密度聚類方法的指導思想是,只要一個區域中的點的密度大于某個域值,就把它加到與之相近的聚類中去。這類算法能克服基于距離的算法只能發現“類圓形”的聚類的缺點,可發現任意形狀的聚類,且對噪聲數據不敏感。但計算密度單元的計算復雜度大,需要建立空間索引來降低計算量,且對數據維數的伸縮性較差。
這類方法需要掃描整個數據庫,每個數據對象都可能引起一次查詢,因此當數據量大時會造成頻繁的I/O操作。代表算法有:(1)DBSCAN (2)OPTICS (3)DENCLUE etc

(2)DBSCAN

① 算法介紹

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)一個比較有代表性的基于密度的聚類算法。與劃分和層次聚類方法不同,它將簇定義為密度相連的點的最大集合,能夠把具有足夠高密度的區域劃分為簇,并可在有“噪聲”的空間數據庫中發現任意形狀的聚類。了解DBSCAN,務必熟悉幾個概念:
① 對象的ε-臨域:給定對象在半徑ε內的區域。
② 核心對象:如果一個對象的ε-臨域至少包含最小數目MinPts個對象,則稱該對象為核心對象。 例如,在下圖中,ε=1cm,MinPts=5,q是一個核心對象:

直接密度可達:給定一個對象集合D,如果p是在q的ε-鄰域內,而q是一個核心對象,我們說對象p從對象q出發是直接密度可達的。上圖中,對象p從對象q出發是直接密度可達的。
密度可達:如果存在一個對象鏈p1,p2,…,pn,p1=q,pn=p,對pi∈D,(1<=i<=n),pi+1是從pi關于ε和MitPts直接密度可達的,則對象p是從對象q關于ε和MinPts密度可達的。
密度相連:如果對象集合D中存在一個對象o,使得對象p和q是從o關于ε和MinPts密度可達的,那么對象p和q是關于ε和MinPts密度相連的。
噪聲: 一個基于密度的簇是基于密度可達性的最大的密度相連對象的集合。不包含在任何簇中的對象被認為是“噪聲”。

DBSCAN算法描述 輸入:包含n個對象的數據庫,半徑ε,最少數目MinPts。 輸出:所有生成的簇,達到密度要求。 1. REPEAT 2. 從數據庫中抽取一個未處理過的點; 3. IF 抽出的點是核心點 THEN 找出所有從該點密度可達的對象,形成一個簇 4. ELSE 抽出的點是邊緣點(非核心對象),跳出本次循環,尋找下一點; 5. UNTIL 所有點都被處理;

② 優缺點

總結

以上是生活随笔為你收集整理的聚类算法(K-means AGNES DBSCAN)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。