原做者:Kelvin Salton do Pradohtml
連接:https://towardsdatascience.com/how-dbscan-works-and-why-should-i-use-it-443b4a191c80git
**基於密度的帶噪應用空間聚類算法(DBSCAN)**是數據挖掘和機器學習中經常使用的一種數據聚類算法。github
基於一組點(讓咱們在圖中所示的二維空間中思考),DBSCAN能夠基於距離測量(一般是歐幾里德距離)和最小點數將彼此接近的點組合在一塊兒。它還將低密度區域中的點標記爲異常值。web
參數:
DBSCAN算法基本上須要兩個參數:算法
eps: 指定要將點視爲簇的一部分,它們之間的距離應如何。這意味着,若是兩點之間的距離小於或等於該值(eps),則這些點被視爲相鄰點。數據庫
minPoints: 造成密集區域的最小點數。例如,若是將minPoints參數設置爲5,則至少須要5個點才能造成稠密區域。機器學習
參數估計:
參數估計是每個數據挖掘任務都要解決的問題。要選擇好的參數,咱們須要瞭解它們是如何使用的,而且至少對將要使用的數據集有一個基本的先前知識。ide
eps: 若是選擇的eps值過小,則大部分數據將不會羣集。它將被視爲異常值,由於不知足建立密集區域的點數。另外一方面,若是選擇的值過高,則集羣將合併,而且大多數對象將位於同一集羣中。eps應該根據數據集的距離來選擇(咱們能夠使用k-距離圖來找到它),但通常來講,較小的eps值是可取的。學習
minPoints: 通常來講,最小minPoints能夠從數據集中的許多維度(D)導出,做爲minPoints≥D+1。較大的值一般更適合有噪聲的數據集,並將造成更重要的簇。minPoints的最小值必須是3,可是數據集越大,應該選擇的minPoints值就越大。ui
你能夠在這裏找到更多關於參數估計的信息。
爲何要使用DBSCAN?
DBSCAN算法應該用於查找數據中的關聯和結構,這些關聯和結構很難手動找到,但對於查找模式和預測趨勢是相關的和有用的。
聚類方法經常使用於生物學、醫學、社會科學、考古學、市場營銷、字符識別、管理系統等領域。
讓咱們考慮一下DBSCAN的實際應用。假設咱們有一個電子商務,咱們想經過向客戶推薦相關產品來提升銷售額。咱們不知道咱們的客戶到底在尋找什麼,但基於一個數據集,咱們能夠預測並向特定客戶推薦相關產品。咱們能夠將DBSCAN應用於咱們的數據集(基於電子商務數據庫),並根據用戶購買的產品查找集羣。使用這個集羣咱們能夠發現客戶之間的類似之處,例如,客戶A購買了1支鋼筆、1本書和1把剪刀,客戶B購買了1本書和1把剪刀,而後咱們能夠向客戶B推薦1支鋼筆。這只是DBSCAN使用的一個小例子,但它能夠在多個領域的許多應用中使用。
怎樣實現
正如我已經寫過的(提示:不要相信我寫的全部東西)DBSCAN是一個衆所周知的算法,所以,您沒必要擔憂本身實現它。您能夠使用能夠在internet上找到的庫/包之一。下面是一個連接列表,您能夠找到DBSCAN實現:Matlab, R, R, Python, Python。
我還開發了一個應用程序(用葡萄牙語)來解釋DBSCAN如何以教學的方式工做。應用程序是用C++編寫的,你能夠在Github上找到它。
PS:我是黑胡桃實驗室社區的一名成員,最近常常在看一些老外作的有趣的人工智能項目,若是有興趣或疑問能夠在評論區留言或私信與我交流鴨~