學點高階技術:基於密度的聚類演算法——FDBSCAN演算法
機器學習、人工智慧各類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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 聚類(part3)--高階聚類演算法聚類演算法
- 機器學習——dbscan密度聚類機器學習聚類
- ML.NET技術研究系列-2聚類演算法KMeans聚類演算法
- 聚類演算法聚類演算法
- 密度聚類。Clustering by fast search and聚類AST
- Spark中的聚類演算法Spark聚類演算法
- 深度解讀DBSCAN聚類演算法:技術與實戰全解析聚類演算法
- 聚類之K均值聚類和EM演算法聚類演算法
- 聚類演算法綜述聚類演算法
- OPTICS聚類演算法原理聚類演算法
- 初探DBSCAN聚類演算法聚類演算法
- 為什麼說K-Means是基於距離的聚類演算法?聚類演算法
- 20分鐘學會DBSCAN聚類演算法聚類演算法
- 14聚類演算法-程式碼案例六-譜聚類(SC)演算法案例聚類演算法
- 程式設計實現DBSCAN密度聚類演算法,並以西瓜資料集4.0為例進行聚類效果分析程式設計聚類演算法
- 機器學習演算法筆記之8:聚類演算法機器學習演算法筆記聚類
- 【Python機器學習實戰】聚類演算法(1)——K-Means聚類Python機器學習聚類演算法
- 可伸縮聚類演算法綜述(可伸縮聚類演算法開篇)聚類演算法
- 聚類演算法——DBSCAN演算法原理及公式聚類演算法公式
- 部分聚類演算法簡介及優缺點分析聚類演算法
- 深度聚類演算法敘談聚類演算法
- 深度聚類演算法淺談聚類演算法
- 機器學習Sklearn系列:(五)聚類演算法機器學習聚類演算法
- 聚類模型的演算法效能評價聚類模型演算法
- 基於粒子群最佳化演算法的圖象聚類識別matlab模擬演算法聚類Matlab
- 09聚類演算法-層次聚類-CF-Tree、BIRCH、CURE聚類演算法
- 04聚類演算法-程式碼案例一-K-means聚類聚類演算法
- 【Python機器學習實戰】聚類演算法(2)——層次聚類(HAC)和DBSCANPython機器學習聚類演算法
- 【無監督學習】2:DBSCAN聚類演算法原理聚類演算法
- 一文盤點5種聚類演算法,資料科學家必備!聚類演算法資料科學
- KMeans演算法與GMM混合高斯聚類演算法聚類
- 機器學習中的聚類演算法演變及學習筆記機器學習聚類演算法筆記
- 得物技術基於自注意機制的影像識別演算法演算法
- 【技術點】計算機基礎演算法——排序 & 搜尋 & 字串匹配計算機演算法排序字串匹配
- MMM全連結聚類演算法實現聚類演算法
- 聚類演算法與K-means實現聚類演算法
- 聚類的基本問題及兩個常用演算法聚類演算法
- 高階演算法工程師招聘演算法工程師