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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

聚类算法(part1)--DBSCAN

發(fā)布時(shí)間:2023/12/19 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 聚类算法(part1)--DBSCAN 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

學(xué)習(xí)筆記,僅供參考,有錯(cuò)必糾

參考書目:《數(shù)據(jù)挖掘?qū)д摗?#xff1b;《R語言實(shí)戰(zhàn)》;《應(yīng)用預(yù)測(cè)建模》;《R語言與數(shù)據(jù)挖掘》;等


聚類


密度聚類


基于密度的聚類尋找被低密度區(qū)域分離的高密度區(qū)域。DBSCAN是一種簡單、有效的基于密度的聚類算法,它解釋了基于密度的聚類方法的許多重要概念。


基于中心的方法


在基于中心的方法中,數(shù)據(jù)集中特定點(diǎn)的密度通過對(duì)該點(diǎn)EpsEpsEps半徑之內(nèi)的點(diǎn)計(jì)數(shù)(包括點(diǎn)本身)來估計(jì)。如下圖所示,點(diǎn)A的EpsEpsEps半徑內(nèi)點(diǎn)個(gè)數(shù)為7,且包括A本身:

該方法實(shí)現(xiàn)簡單,但是點(diǎn)的密度取決于指定的半徑,例如,如果半徑足夠大,則所有點(diǎn)的密度都等于數(shù)據(jù)集中的點(diǎn)數(shù)m,同理,如果半徑太小,則所有點(diǎn)的密度都是1。


根據(jù)基于中心的密度進(jìn)行點(diǎn)分類

密度的基于中心的方法使得我們可以將點(diǎn)分類為(1)稠密區(qū)域內(nèi)部的點(diǎn)(核心點(diǎn)),(2)稠密區(qū)域邊緣上的點(diǎn)(邊界點(diǎn)),(3)稀疏區(qū)域中的點(diǎn)(噪聲或背景點(diǎn))。下圖展示了核心點(diǎn)、邊界點(diǎn)和噪聲點(diǎn)的概念:

  • 核心點(diǎn):這些點(diǎn)在基于密度的簇內(nèi)部。點(diǎn)的鄰域由距離函數(shù)和用戶指定的距離參數(shù)EpsEpsEps決定,核心點(diǎn)的定義是,如果該點(diǎn)的給定鄰域內(nèi)的點(diǎn)的個(gè)數(shù)超過給定的閾值
    MinPtsMinPtsMinPts,則該點(diǎn)為核心點(diǎn),其中MinPtsMinPtsMinPts也是一個(gè)用戶指定的參數(shù)。上圖中,點(diǎn)A是核心點(diǎn)。

  • 邊界點(diǎn):邊界點(diǎn)不是核心點(diǎn),但它落在某個(gè)核心點(diǎn)的鄰域內(nèi)。上圖中,點(diǎn)B是邊界點(diǎn)。邊界點(diǎn)可能落在多個(gè)核心點(diǎn)的鄰域內(nèi)。

  • 噪聲點(diǎn):噪聲點(diǎn)是既非核心點(diǎn)也非邊界點(diǎn)的任何點(diǎn)。上圖中,點(diǎn)C是噪聲點(diǎn)。


DBSCAN算法


給定核心點(diǎn)、邊界點(diǎn)和噪聲點(diǎn)的定義,DBSCAN算法可以非正式地描述如下,任意兩個(gè)足
夠靠近(相互之間的距離在Eps之內(nèi))的核心點(diǎn)將放在同一個(gè)簇中。同樣,任何與核心點(diǎn)足夠靠近的邊界點(diǎn)也放到與核心點(diǎn)相同的簇中中,如果一個(gè)邊界點(diǎn)靠近不同簇的核心點(diǎn),則可能需要解決平局問題。噪聲點(diǎn)被丟棄。下面是實(shí)現(xiàn)步驟:

  • 將所有點(diǎn)標(biāo)記為核心點(diǎn)、邊界點(diǎn)或噪聲點(diǎn);
  • 刪除噪聲點(diǎn);
  • 為距離在Eps之內(nèi)的所有核心點(diǎn)之間賦予一條邊;
  • 每組連通的核心點(diǎn)形成一個(gè)簇;
  • 將每個(gè)邊界點(diǎn)指派到一個(gè)與之關(guān)聯(lián)的核心點(diǎn)的簇中。

  • 時(shí)間復(fù)雜性和空間復(fù)雜性

    DBSCAN的基本時(shí)間復(fù)雜度是OOO(m*找出Eps鄰域中的點(diǎn)所需要的時(shí)間),其中m是點(diǎn)的個(gè)數(shù)。在最壞的情況下,時(shí)間復(fù)雜度是O(m2)O(m^2)O(m2).然而,在低維空間,有一些數(shù)據(jù)結(jié)構(gòu),比如kd樹,可以有效地檢索特定點(diǎn)給定距離內(nèi)的所有點(diǎn),時(shí)間復(fù)雜度將降至O(mlogm)O(mlogm)O(mlogm)

    即使對(duì)于高維數(shù)據(jù),DBSCAN的空間復(fù)雜度依然是O(m)O(m)O(m),因?yàn)閷?duì)每個(gè)點(diǎn),它只需要維持少量數(shù)據(jù),即簇標(biāo)號(hào)和每個(gè)點(diǎn)是核心點(diǎn)、邊界點(diǎn)還是噪聲點(diǎn)的標(biāo)識(shí)。


    選擇DBSCAN的參數(shù)

    當(dāng)然,還有如何確定Eps和MinPts的問題。基本方法是觀察點(diǎn)到它的k個(gè)最近鄰的距離(稱為k-距離)的特性。對(duì)于屬于某個(gè)簇的點(diǎn),如果k不大于簇的大小的話,則k-距離將很小(理解:因?yàn)樵谕粋€(gè)族內(nèi))。

    注意,盡管因簇的密度和點(diǎn)的隨機(jī)分布不同而有一些變化,但是如果簇密度的差異不是很極端的話,在平均情況下變化不會(huì)太大,然而,對(duì)于不在簇中的點(diǎn)(如噪聲點(diǎn)),k-距離將相對(duì)較大。因此,如果我們對(duì)于某個(gè)k,計(jì)算所有點(diǎn)的k-路離,以遞增次序?qū)⑺鼈兣判?#xff0c;然后繪制排序后的值,則我們會(huì)看到k-距離的急劇變化,對(duì)應(yīng)于合適的Eps值。如果我們選取該距離為Eps參數(shù),而取k的值為MinPts參數(shù),則k-距離小Eps的點(diǎn)將被標(biāo)記為核心點(diǎn),而其他點(diǎn)將被標(biāo)記為噪聲或邊界點(diǎn)。

    如果k的值太小,則少量鄰近點(diǎn)的噪聲或離群點(diǎn)將可能不正確地標(biāo)一記為簇。如果k的值太大,則小簇(尺寸小于k的簇)可能會(huì)標(biāo)記為噪聲。


    R語言實(shí)踐


    相關(guān)函數(shù):

    library(fpc) db = dbscan(data, eps, MinPts) plotcluster(data, db$cluster)

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。