學點高階技術:基於密度的聚類演算法——FDBSCAN演算法

博為峰網校發表於2022-10-25

機器學習、人工智慧各類KNN演算法層出不窮,DBSCAN具有強代表性,它是一個基於密度的聚類演算法,最大的優點是能夠把高密度區域劃分為簇,能夠在高噪聲的條件下實現對目標的精準識別,但該演算法當前已遠不能滿足人們對於高效率、高精準度的演算法要求,由此FDBSCAN演算法應運而生。 加我VX:atstudy-js 回覆“測試”,進入 自動化測試學習交流群~~

01

FDBSCAN聚類演算法在KD-樹的加持下,時間複雜度達到了O(nlogn),目標識別效率已指數級別上升。

02

Kd-樹:它是一種樹形結構,主要應用於多維空間關鍵資料的搜尋。由於他的增加、刪除、查詢時間複雜度都是O(logn),所以才造就了FDBSCAN演算法的高效率。

想必大家對於樹形結構也不是特別陌生,但是對於四維及以上的樹形結構,就難以體現其具體的結構了。kd-樹的三維立體空間如下圖所示:

03

FDBSCAN演算法的高效就體現在它使用了KD樹作為自己遍歷資料的工具,透過樹形結構,能夠最大限度的提高遍歷效率。在演算法執行之前,首先對待處理資料建立Kd-樹,使用KD樹自有的空間搜尋演算法來進行資料劃分。可以看到整個資料劃分流程圖:

04

下面對FDBSCAN演算法虛擬碼進行展示:

FDBSCAN演算法虛擬碼:

DBSCAN(D, eps, MinPts)

C = 0 //類別標示

for each unvisited point P in dataset D //遍歷

mark P as visited //已經訪問

NeighborPts = regionQuery(P, eps) //計算這個點的鄰域

if sizeof(NeighborPts) < MinPts //不能作為核心點

mark P as NOISE //標記為噪音資料

else //作為核心點,根據該點建立一個類別

C = next cluster

expandCluster(P, NeighborPts, C, eps, MinPts) //根據該核心店擴充套件類別

expandCluster(P, NeighborPts, C, eps, MinPts)

add P to cluster C //擴充套件類別,核心店先加入

for each point P' in NeighborPts //然後針對核心店鄰域內的點,如果該點沒有被訪問

if P' is not visited

mark P' as visited //進行訪問

NeighborPts' = regionQuery(P', eps) //如果該點為核心點,則擴充該類別

if sizeof(NeighborPts') >= MinPts

NeighborPts = NeighborPts joined with NeighborPts'

if P' is not yet member of any cluster //如果鄰域內點不是核心點,並且無類別,比如噪音資料,則加入此類別

add P' to cluster C

regionQuery(P, eps) //計算鄰域

return all points within P's eps-neighborhood

kdtree (list of points pointList, int depth) {

var tree_node node;

node.location := median;

node.leftChild := kdtree(points in pointList before median, depth+1);

node.rightChild := kdtree(points in pointList after median, depth+1);

return node;

}

05

機器學習、深度學習、影像識別、人工智慧、大資料、區塊鏈、網際網路+等各種新興技術層出不窮,人們對於演算法的效率、精度要求也是越來越嚴格。各位大佬們,傳統DBSCAN聚類演算法對於一個高解析度,數以千百萬級的畫素點的影像來說,是遠遠不夠的,那就讓FDBSCAN演算法來助你一臂之力吧!

最後:

可以到我的個人V:atstudy-js,可以免費領取一份10G軟體測試工程師面試寶典文件資料。以及相對應的影片學習教程免費分享!其中包括了有基礎知識、Linux必備、Mysql資料庫、抓包工具、介面測試工具、測試進階-Python程式設計、Web自動化測試、APP自動化測試、介面自動化測試、測試高階持續整合、測試架構開發測試框架、效能測試等。

這些測試資料,對於做【軟體測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2920252/,如需轉載,請註明出處,否則將追究法律責任。

相關文章