99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀聚類分析中幾種算法的比較
聚類分析中幾種算法的比較
2018-06-06
收藏

聚類分析中幾種算法的比較

將數(shù)據(jù)庫中的對象進(jìn)行聚類是聚類分析的基本操作,其準(zhǔn)則是使屬于同一類的個體間距離盡可能小,而不同類個體間距離盡可能大,為了找到效率高、通用性強(qiáng)的聚 類方法人們從不同角度提出了近百種聚類方法,典型的有K-means方法、K-medoids方法、CLARANS方法,BIRCH方法等,這些算法適用 于特定的問題及用戶。本文綜合提出了評價聚類算法好壞的5個標(biāo)準(zhǔn),基于這5個標(biāo)準(zhǔn),對數(shù)據(jù)挖掘中常用聚類方法作了比較分析,以便于人們更容易、更快捷地找 到一種適用于特定問題及用戶的聚類算法。

聚類算法研究及比較框架
  聚類算法一般有五種方法,最主要的是劃分方法和層次方法兩種。劃分聚類算法通過優(yōu)化評價函數(shù)把數(shù)據(jù)集分割為K個部分,它需要K作為 輸人參數(shù)。典型的分割聚類算法有K-means算法, K-medoids算法、CLARANS算法。層次聚類由不同層次的分割聚類組成,層次之間的分割具有嵌套的關(guān)系。它不需要輸入?yún)?shù),這是它優(yōu)于分割聚類 算法的一個明顯的優(yōu)點(diǎn),其缺點(diǎn)是終止條件必須具體指定。典型的分層聚類算法有BIRCH算法、DBSCAN算法和CURE算法等。
  對各聚類算法的比較研究基于以下5個標(biāo)準(zhǔn):
 ?、?是否適用于大數(shù)據(jù)量,算法的效率是否滿足大數(shù)據(jù)量高復(fù)雜性的要求;
 ?、?是否能應(yīng)付不同的數(shù)據(jù)類型,能否處理符號屬性;
 ?、?是否能發(fā)現(xiàn)不同類型的聚類;
 ?、?是否能應(yīng)付臟數(shù)據(jù)或異常數(shù)據(jù);
 ?、?是否對數(shù)據(jù)的輸入順序不敏感。
  下面將在該框架下對各聚類算法作分析比較。

數(shù)據(jù)挖掘常用聚類算法比較分析 
    3.1 K-pototypes算法
  K-pototypes算法結(jié)合了K-means方法和根據(jù)K-means方法改進(jìn)的能夠處理符號屬性的K-modes方法,同K-means方法相比,K-pototypes 算法能夠處理符號屬性。

3.2 CLARANS算法(劃分方法)
  CLARANS算法即隨機(jī)搜索聚類算法,是一種分割聚類方法。它首先隨機(jī)選擇一個點(diǎn)作為當(dāng)前點(diǎn),然后隨機(jī)檢查它周圍不超過參數(shù)Maxneighbor 個的一些鄰接點(diǎn),假如找到一個比它更好的鄰接點(diǎn),則把它移人該鄰接點(diǎn),否則把該點(diǎn)作為局部最小量。然后再隨機(jī)選擇一個點(diǎn)來尋找另一個局部最小量,直至所找 到的局部最小量數(shù)目達(dá)到用戶要求為止。該算法要求聚類的對象必須都預(yù)先調(diào)人內(nèi)存,并且需多次掃描數(shù)據(jù)集,這對大數(shù)據(jù)量而言,無論時間復(fù)雜度還是空間復(fù)雜度 都相當(dāng)大。雖通過引人R-樹結(jié)構(gòu)對其性能進(jìn)行改善,使之能夠處理基于磁盤的大型數(shù)據(jù)庫,但R*-樹的構(gòu)造和維護(hù)代價太大。該算法對臟數(shù)據(jù)和異常數(shù)據(jù)不敏 感,但對數(shù)據(jù)物人順序異常敏感,且只能處理凸形或球形邊界聚類。

3.3 BIRCH算法(層次方法)
  BIRCH算法即平衡迭代削減聚類法,其核心是用一個聚類特征3元組表示一個簇的有關(guān)信息,從而使一簇點(diǎn)的表示可用對應(yīng)的聚類特征,而不必用具體的一 組點(diǎn)來表示。它通過構(gòu)造滿足分支因子和簇直徑限制的聚類特征樹來求聚類。BIRCH算法通過聚類特征可以方便地進(jìn)行中心、半徑、直徑及類內(nèi)、類間距離的運(yùn) 算。算法的聚類特征樹是一個具有兩個參數(shù)分枝因子B和類直徑T的高度平衡樹。分枝因子規(guī)定了樹的每個節(jié)點(diǎn)子女的最多個數(shù),而類直徑體現(xiàn)了對一類點(diǎn)的直徑大 小的限制即這些點(diǎn)在多大范圍內(nèi)可以聚為一類,非葉子結(jié)點(diǎn)為它的子女的最大關(guān)鍵字,可以根據(jù)這些關(guān)鍵字進(jìn)行插人索引,它總結(jié)了其子女的信息。
  聚類特征樹可以動態(tài)構(gòu)造,因此不要求所有數(shù)據(jù)讀人內(nèi)存,而可以在外存上逐個讀人。新的數(shù)據(jù)項(xiàng)總是插人到樹中與該數(shù)據(jù)距離最近的葉子中。如果插人后使得 該葉子的直徑大于類直徑T,則把該葉子節(jié)點(diǎn)分裂。其它葉子結(jié)點(diǎn)也需要檢查是否超過分枝因子來判斷其分裂與否,直至該數(shù)據(jù)插入到葉子中,并且滿足不超過類直 徑,而每個非葉子節(jié)點(diǎn)的子女個數(shù)不大于分枝因子。算法還可以通過改變類直徑修改特征樹大小,控制其占內(nèi)存容量。
  BIRCH算法通過一次掃描就可以進(jìn)行較好的聚類,由此可見,該算法適合于大數(shù)據(jù)量。對于給定的M兆內(nèi)存空間,其空間復(fù)雜度為O(M),時間間復(fù)雜度 為O(dNBlnB(M/P)).其中d為維數(shù),N為節(jié)點(diǎn)數(shù),P為內(nèi)存頁的大小,B為由P決定的分枝因子。I/O花費(fèi)與數(shù)據(jù)量成線性關(guān)系。BIRCH算法 只適用于類的分布呈凸形及球形的情況,并且由于BIRCH算法需提供正確的聚類個數(shù)和簇直徑限制,對不可視的高維數(shù)據(jù)不可行。
  3.4 CURE算法(層次方法)
  CURE算法即使用代表點(diǎn)的聚類方法。該算法先把每個數(shù)據(jù)點(diǎn)看成一類,然后合并距離最近的類直至類個數(shù)為所要求的個數(shù)為止。CURE算法將傳統(tǒng)對類的 表示方法進(jìn)行了改進(jìn),回避了用所有點(diǎn)或用中心和半徑來表示一個類,而是從每一個類中抽取固定數(shù)量、分布較好的點(diǎn)作為描述此類的代表點(diǎn),并將這些點(diǎn)乘以一個 適當(dāng)?shù)氖湛s因子,使它們更靠近類的中心點(diǎn)。將一個類用代表點(diǎn)表示,使得類的外延可以向非球形的形狀擴(kuò)展,從而可調(diào)整類的形狀以表達(dá)那些非球形的類。另外, 收縮因子的使用減小了嗓音對聚類的影響。CURE算法采用隨機(jī)抽樣與分割相結(jié)合的辦法來提高算法的空間和時間效率,并且在算法中用了堆和K-d樹結(jié)構(gòu)來提 高算法效率。
  3.5 DBSCAN算法(基于密度的方法)
  DBSCAN算法即基于密度的聚類算法。該算法利用類的密度連通性可以快速發(fā)現(xiàn)任意形狀的類。其基本思想是:對于一個類中的每個對象,在其給定半徑的 領(lǐng)域中包含的對象不能少于某一給定的最小數(shù)目。在DBSCAN算法中,發(fā)現(xiàn)一個類的過程是基于這樣的事實(shí):一個類能夠被其中的任意一個核心對象所確定。為 了發(fā)現(xiàn)一個類,DBSCAN先從對象集D中找到任意一對象P,并查找D中關(guān)于關(guān)徑Eps和最小對象數(shù)Minpts的從P密度可達(dá)的所有對象。如果P是核心 對象,即半徑為Eps的P的鄰域中包含的對象不少于Minpts,則根據(jù)算法,可以找到一個關(guān)于參數(shù)Eps和Minpts的類。如果P是一個邊界點(diǎn),則半 徑為Eps的P鄰域包含的對象少于Minpts,P被暫時標(biāo)注為噪聲點(diǎn)。然后,DBSCAN處理D中的下一個對象。
  密度可達(dá)對象的獲取是通過不斷執(zhí)行區(qū)域查詢來實(shí)現(xiàn)的。一個區(qū)域查詢返回指定區(qū)域中的所有對象。為了有效地執(zhí)行區(qū)域查詢,DBSCAN算法使用了空間查 詢R-樹結(jié)構(gòu)。在進(jìn)行聚類前,必須建立針對所有數(shù)據(jù)的R*-樹。另外,DBSCAN要求用戶指定一個全局參數(shù)Eps(為了減少計(jì)算量,預(yù)先確定參數(shù) Minpts)。為了確定取值,DBSCAN計(jì)算任意對象與它的第k個最臨近的對象之間的距離。然后,根據(jù)求得的距離由小到大排序,并繪出排序后的圖,稱 做k-dist圖。k-dist圖中的橫坐標(biāo)表示數(shù)據(jù)對象與它的第k個最近的對象間的距離;縱坐標(biāo)為對應(yīng)于某一k-dist距離值的數(shù)據(jù)對象的個數(shù)。 R*-樹的建立和k-dist圖的繪制非常消耗時間。此外,為了得到較好的聚類結(jié)果,用戶必須根據(jù)k-dist圖,通過試探選定一個比較合適的Eps值。 DBSCAN算法不進(jìn)行任何的預(yù)處理而直接對整個數(shù)據(jù)集進(jìn)行聚類操作。當(dāng)數(shù)據(jù)量非常大時,就必須有大內(nèi)存量支持,I/O消耗也非常大。其時間復(fù)雜度為 O(nlogn)(n為數(shù)據(jù)量),聚類過程的大部分時間用在區(qū)域查詢操作上。DBSCAN算法對參數(shù)Eps及Minpts非常敏感,且這兩個參數(shù)很難確定。
  3.6 CLIQUE算法(綜合了基于密度和基于網(wǎng)格的算法)
  CLIQUE算法即自動子空間聚類算法。該算法利用自頂向上方法求出各個子空間的聚類單元。CLUQUE算法主要用于找出在高維數(shù)據(jù)空間中存在的低維 聚類。為了求出d維空間聚類,必須組合給出所有d-1維子空間的聚類,導(dǎo)致其算法的空間和時間效率都較低,而且要求用戶輸入兩個參數(shù):數(shù)據(jù)取值空間等間隔 距離和密度闊值。這2個參數(shù)與樣木數(shù)據(jù)緊密相關(guān),用戶一般難以確定。CLIQUE算法對數(shù)據(jù)輸人順序不敏感。

4 總結(jié)
基于上述分析,我們得到各聚類算法的比較結(jié)果,結(jié)論如下: 
算法 算法效率 適合的數(shù)據(jù)類型 發(fā)現(xiàn)的聚類類型 對臟數(shù)據(jù)或異常數(shù)據(jù)的敏感性 對數(shù)據(jù)輸入順序的敏感性
BIRCH       高          數(shù)值             凸形或球形            不敏感                  不太敏感
DBSCAN   一般         數(shù)值            任意形狀                敏感                       敏感
CURE       較高         數(shù)值           任意形狀               不敏感                  不太敏感
K-poto     一般      數(shù)值和符號      凸形或球形             敏感                     一般
CLARANS 較低         數(shù)值            凸形或球形            不敏感                 非常敏感
CUQUE    較低         數(shù)值             凸形或球形             一般                    不敏感
由于每個方法都有其特點(diǎn)和不同的適用領(lǐng)域,在數(shù)據(jù)挖掘中,用戶應(yīng)該根據(jù)實(shí)際需要選擇恰當(dāng)?shù)木垲愃惴ā?


數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }