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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

聚类分析与相关算法(Kmeans等)详解

發布時間:2024/1/17 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 聚类分析与相关算法(Kmeans等)详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

聚類分析與相關算法詳解

  • 1 距離度量
    • 1.1歐幾里得距離定義
    • 1.2其他距離度量的補充
    • 1.3余弦距離
    • 1.4簡單匹配系數
    • 1.5jaccard系數
    • 1.6海明距離
  • 2 聚類問題
    • 2.1非監督學習中的Kmeans算法
    • 2.2K-means算法 --均值作為聚類中心點
  • 3 聚類的其他算法
    • 3.1K-medoids聚類簡介 --中位數作為聚類中心點
    • 3.2層次聚類 --沒有中心點
    • 3.3基于密度的聚類(DBSCAN)
    • 3.4高斯混合聚類
  • 4 總結
  • 5 API補充
    • 5.1kmeans算法
    • 5.2DBSCAN算法
    • 5.3層次聚類

? 聚類是一種無監督學習技術(包括 聚類,屬性約減的 PCA),可以在事先不知道正確結果(即無類標簽,或預測輸出值)的情況下,發現數據本身蘊含的結構等信息
?聚類的 本質是一種分組方法,分組的標準是 組內的樣本之間相似度盡可能高,而 組間樣本之間的相似度盡可能低
?可將聚類理解為:對對象集合分組的過程

1 距離度量

1.1歐幾里得距離定義

1.2其他距離度量的補充


p =1 曼哈頓距離
p=2 歐幾里得距離

1.3余弦距離

余弦相似度也稱為余弦距離

余弦相似度為1,則x,y之間的夾角為0度,此時兩個向量完全一樣,如果余弦相似度為0,則x,y之間的夾角為90度,說明兩個向量不包含相同的詞

1.4簡單匹配系數

簡單匹配系數度量的是最簡單的二元屬性(屬性可以理解為特征)的對象(可以理解為向量)之間的相似性度量
所以要度量二元屬性的對象,對象中的二元屬性個數應該相同
假設x,y兩個數據對象,都由n個二元屬性組成,這樣的兩個對象做相似性度量可以生成四個量:

?此時簡單匹配數SMC的定義:

?度量值不匹配的屬性個數:

實例:

1.5jaccard系數

?當分析購買商品數據時,由于未被購買的商品數量遠遠大于被其購買的商品數量,像上述的SMC計算公式會判斷所有的事務都是類似的,所以引出jaccard系數來處理僅包含非對稱二元屬性的對象.

1.6海明距離

?在信息編碼中,兩個合法(長度相同)代碼(字符串/int/float類型)對應位上編碼不同的位數稱為碼距,又叫海明距離

它的意義:就是將一個字符串替換成另一個字符串所需要替換的字符個數
它的作用:
用于編碼的檢錯與糾錯,為了檢測d個1位錯誤,需要一個海明距離為d+1的方案.因為在這樣的編碼方案中,d個1位的錯誤不可能將一個有效碼字改編成另一個有效碼字.當接收方看到一個無效碼字時,他就知道已經發生了傳輸錯誤.類似的為了糾正d個1位錯誤,需要一個距離為2d+1的編碼方案,因為在這樣的編碼方案中,合法碼字之間的距離足夠遠,因而即使發生了d為變化,則還是原來的碼字離最近,從而可以唯一確定原來的碼字,達到糾錯的目的.

2 聚類問題

2.1非監督學習中的Kmeans算法

?聚類屬于非監督學習,無類別標簽,基于原型的算法
?原理就是相同類別的通過屬性之間的相似性聚集在一起,算法中并未涉及類別標記的問題.

2.2K-means算法 --均值作為聚類中心點

CLustering中的經典算法,數據挖掘十大算法之一
算法接受參數K(在實際生產環境中一般根據業務經驗設定),然后將事先輸入的n個數據對象劃分為k個聚類,得到的聚類滿足:同一聚類中對象的相似性高,不同聚類中對象的相似度低
算法思想:
?以空間中K個點為中心進行聚類,對最靠近他們的對象歸類(這里用到了距離度量,度量之前要先對對象中的特征做特征工程使得特征值滿足算法的需求).通過迭代的方法,逐次更新各個聚類中心的值(它是一個點,每一個對象都理解為一個點),直到得到最好的聚類結果(迭代之后K個聚類重心的值不再發生變化/或變化的范圍小于設定的閾值)
?變化的范圍:當前聚類中的對象在經過一次迭代移動到其他組的個數的范圍(暫時的理解)

算法描述:
?1.隨機選取k個聚類重心(值)
?2.在第j次迭代中,對任意一個樣本,求其到所有k個聚類重心的距離(這里使用了距離度量),將該樣本歸到距離最短的那個聚類中心點對應的聚類中
?3.訓練完樣本數據后得到k個聚類,利用均值等方法更新每一個聚類的重心(后面留意一下怎么更新的)
?均值更新聚類中心點:
??假如第n個聚類重心對應的聚類中有c個樣本,每個樣本中3個特征,把所有c個樣本中的特征對應相加,然后除3,得到了更新之后的第n個聚類重心
?4.對所有的k個聚類重心,如果利用2,3的迭代法更新后,各個重心保持不變(或變化的范圍小于閾值),則迭代結束,否則繼續迭代.

總結:
?簡單來說,K-Means是一種基于屬性/特征將對象分類或分組為K的算法組數,K是正整數
?K均值算法將會執行以下三個步驟,直到收斂
??1.確定初始重心坐標
??2.確定每個樣本與重心的距離
??3.根據最小距離對樣本進行歸類,更新聚類重心然后進行迭代
Means性能評價指標
一種度量K-Means算法的聚類效果的指標:誤差平方和SSE(Sum of Squared Error)



:表明用的是均值更新重心的方式,ci是每個聚類的重心
:一個聚類中,每個樣本與重心的差的平方
所以SSE求解的是:所有聚類的重心分別與對應聚類中所有樣本差的平方和
直觀的說SSE越小,表名樣本越接近他們的重心,聚類效果越好,因為對誤差取了平方,更加重視那些遠離重心的點
?可證明使簇的SSE最小的重心是均值:

在聚類算法的性能評價中,還有ARI指數(Adjusted Rand Index),值越接近1,性能越好
K-Means算法特點
優點:速度快,簡單
缺點:最終結果與初始點的選擇有關,容易陷入局部最優
?K均值中的K是現實給定的,而這個K值的選取往往是根據業務經驗選取的
?K均值的聚類算法需要不斷的進行樣本的分類調整,不斷的計算調整后的聚類重心,當數據量大的時候,算法開銷很大
?K均值是求得局部最優的算法,所以對于初始化時選取的k個聚類重心比較敏感,不同的重心選取策略可能得到不同的結果.

3 聚類的其他算法

3.1K-medoids聚類簡介 --中位數作為聚類中心點

K-medoids選擇數據集中有代表性的樣本(而不是均值)來代表整個簇,即選取靠近中心點(medoids)的那個樣本(中位數)代表整個簇
K-medoids的特點:
?是對kmeans的改進,由于k均值對噪聲,孤立點數據時敏感的,為了修改這種敏感行(距離矩陣的敏感行),將kmeans中的均值作為更新點,修改為聚類中位置最中心的那個對象,即中心點.
與kmeans的區別:
?k-medoids中心點的選取限制在當前簇中所包含的數據點集合中.一個是數據樣本的均值,一個是樣本數據的中位數,兩者的區別在于平均值的選取是連續空間中的任意值,后者只能在樣本給定的點中選擇

這樣做的優勢之處:
?k-medoids不容易受到誤差之類的原因產生離群點現象
?k均值要求數據只能落在二維的歐式空間中,但并不是所有的數據都可以滿足這樣的需求,特別是類別型的變量用歐氏距離是無法適用的
存在的問題:
?k-medoids:也會陷入局部最優解
?K-medoids選取初值點需要枚舉每個點,并要求他到所有點的距離之和,復雜度為O(N2),kmeans僅計算一個平均值,復雜度為O(N)

3.2層次聚類 --沒有中心點

?上述的兩種方式都需要手動的選取類的初始重心,層次聚類是一種樹狀的聚類算法,反復將數據進行分類和聚合,以形成一個層次序列的聚類問題,層次的基本方法可以分為:凝聚與分裂—這種方式沒有重心
?凝聚是由下向上構造樹的方法,將每一個對象作為一個類,然后合并這些原子聚類為越來越大的聚類,直到所有的對象都在一個聚類中,或者滿足某個終結條件(達到聚類數目)
?分裂是由上向下的方法,它的策略是將所有的對象都置于一個聚類中,然后逐漸細分為越來越小的聚類,直到每個對象自成一聚類,或者達到某個結束條件
算法原理:
假設有N個待聚類樣本,對于層次聚類來說,步驟:
?1.(初始化)把每個樣本歸為一類,計算每兩個類之間的距離,也就是各個樣本之間的相似度
?2.尋找各個類之間相似度最近的兩個類,把他們歸為一類(這樣類的總數就少了一個)
?3.重新計算新生成的這個類(均值?不是,后面會介紹)與各個剩下的類(舊類)之間的相似度
?4.重復2,3直到所有的樣本點都歸為一類,結束
如圖:

?假設有5個待聚類樣本,把每個樣本歸為一類(1,2,3,4,5),計算每兩個類之間的距離,得到樣本1,2是距離最近所對應的兩個樣本,將1,2歸為一類(均值?不是,看后面的解答)得到類6,然后計算3,4,5,6之間的距離,得到類7,然后迭代下去最后將所有的類歸為類9,迭代結束
?迭代終止的條件:
??1.所有的類都歸為一類
2??.在第二步上設置一個閾值,當最近的兩個類之間的距離大于這個閾值,則認為迭代可以終止
如何判斷兩個類之間的相似度(怎么求距離度量)有以下幾種方法
?1.SingleLinkage:又叫nearest-neighbor,就是取兩個類中距離最近的兩個樣本(分別來自兩個聚類)的距離作為這兩個聚類的距離
?這種方式容易造成一種叫做chaining的效果,兩個cluster明明從”大局”上看離得比較遠,但是由于其中個別點距離比較近就被合并了,并且這樣合并之后的chaining效應會進一步擴大,最后會得到比較松散的cluster
?2.CompleteLinkage:與SingleLinkage相反,取兩個聚類中相互距離最遠的兩個點作為聚類之間的距離
?這種方式兩個cluster之間即使已經很接近了,但是只有有不配合的點存在,就頑固到底,老死不相合并.這兩種相似度的定義方法的共同問題就是只考慮額某個特點得數據,而沒有考慮類中數據的整體特點
?3.Average-linkage:把兩個集合中的所有點兩兩的距離全都算出來,然后求一個平均值作為兩個集合的距離
?4.average-linkage:取兩個集合中所有點兩兩的距離的中值(中位數),與去平均值相比更加能夠解除個別偏離樣本對結果的干擾
基于原型的聚類 --層次聚類
?優勢1:它能夠使得我們繪制出樹狀圖(基于二叉層次聚類的可視化)
?優勢2:不需要事先指定簇數量

3.3基于密度的聚類(DBSCAN)

?聚類中除了上述的kmeans的聚類屬于基于原型的聚類,kmedoids是基于劃分的聚類,另外還有層次聚類和基于密度的聚類.基于原型意味著每個簇都對應一個模型(模型是選取中心點的規則:如均值).
?基于密度的聚類是基于距離的聚類的變型.純粹的基于距離的聚類只能發現球狀的分組,而在發現任意形狀的簇上遇到了困難.

概念:
?核心對象:如果給定對象E領域內的樣本點個數大于等于設定的閾值,則稱該對象為核心對象
?直接密度可達:對于樣本集合D,如果樣本點2在1的E領域內,并且1為核心對象,那么對象2從對象1(核心)直接密度可達
&emsp==;密度可達==:對于樣本集合D,給定一串樣本點p1,p2…pn, 假如對象pi從pi-1直接密度可達,那么對象pn從對象p1密度可達(相當于密度直接可達的間接傳遞,簡單的說就是p1雖然從對象pn直接密度不可達,但是密度可達)
?密度相連:對于樣本集合D中的任意一點2,如果存在對象1到對象2密度可達,并且對象3到對象2密度可達,那么對象1到對象2密度相連(密度可達的間接傳遞)
算法思路:
?1.從數據中抽出一個未處理(還沒有歸類)的樣本
?2.統計該樣本周圍半徑E范圍內的樣本數量,如果小于閾值,則該點為噪聲點.回到步驟1繼續處理.
?3.如果大于閾值,則該點稱為一個新簇的核心點,將所有從該點密度可達的點加入到當前新簇中.最后由一個核心對象和其密度可達的所有對象構成一個聚類
?4.重復算法過程,直到所有樣本都被處理

A點分別與B,C點密度可達
B,C點之間密度相連
DBSCAN算法的最大特點就是:
?抗噪聲干擾
?可以發現任意形狀的聚類

3.4高斯混合聚類

?高斯混合聚類就是通過概率模型表示聚類原型,和K均值都是基于原型的聚類(假設聚類結構能夠通過一組原型或模型刻畫)
?這塊還沒弄懂.

4 總結

?在實際的應用中,對于給定的數據集,往往不太確定使用哪種算法是最為合適的,特別是面對難以或者無法進行可視化處理的高維數據集.另外,一個好的聚類算法并不是僅僅依賴與算法及其超參數的調整,相反,選擇合適的距離度量標準和專業的領域知識在實驗設定的應用可能很有用

5 API補充

5.1kmeans算法

?from sklearn.cluster import KMeans
Parameters:
??n_clusters:int類型,分類簇的數量 默認值為8
??max_iter:int類型,最大迭代次數 默認值為300
??n_init:int類型,指定K均值算法運行的次數
??init:初始均值向量,取值為:”k-meas++”,”random”,an ndarray
??precompute_distances:是否提前計算好樣本之間的距離
??tol:float類型,算法收斂的閾值 默認值le-4
??n_jobs:int類型,指定CPU的數量, 為什么我的只能指定為1
??random_state:設置了之后每次切分的數據內容是相同的

?Attributes:
??cluster_centers:給出分類簇的均值向量(重心)
??labels_:給出每個樣本所屬簇的標記(0,1…)
??inertia_:float類型,給出每個樣本距離他們各自最近的簇中心的距離,然后求和

?mehtods:
??==fit(X,y)==訓練模型
??fit_predict(X,y);訓練模型并預測每個樣本點所屬的簇,等價于先調用fit方法,再調用predict方法
??predict(X):預測樣本所屬的簇
??score(X,y):給出樣本距離各個簇中心偏移量的相反數 是屬性inertia相反數

5.2DBSCAN算法

?Parameters:
??eps:float類型,半徑 用于確定領域大小
??min_sample:int類型, MinPts:用于判定核心對象
??metric:string or Callable類型,用于計算距離
??algorithm:{“auto”,”ball_tree”,”kd_tree”,”brute”} ,用于計算兩個點之間的距離找到最近鄰的點
??leaf_size:int類型,BallTree,KDTree樹的參數,葉子節點的個數, 默認為30
??random_state:保證每次run時對數據集切分后的內容與前面幾次切分的都相同

?Attributes:
??core_sample_indices:核心樣本在原始訓練集中的位置
??components_:核心樣本點的一個副本
??labels_:每個樣本所屬的簇標簽

?Methods:
??fit(X,y):訓練模型
??fit_predict(X,y):訓練模型并預測每個樣本點所屬的簇,等價于先調用fit方法,再調用predict方法

5.3層次聚類

?from sklearn.cluster import AgglomerativeClustering
?Parameters:
??n_clusters:指定分類簇的數量 默認為2
??affinity:string類型,用于計算距離 默認值”euclidean” 歐幾里得
??memory:用于緩存輸出結果,默認不緩存
??linkage:{“ward”,”complete”,”average”}, 表示使用哪種方式作為聚類之間的距離,默認值是”ward”
??“ward”:SingleLinkage
??“complete”:CompleteLinkage
??“average”:Average-linkage:

?Attributes:
??labels_:每個樣本的簇的標記
??n_leaves:分層樹的葉子節點數量 --橫著
??children_:一個數組,給出了每個非葉子節點的子節點數量 --豎著

?Methods:
??fit(X,y):訓練模型
??fit_predict(X,y):訓練模型并預測每個樣本點所屬的簇,等價于先調用fit方法,在調用predict方法.

總結

以上是生活随笔為你收集整理的聚类分析与相关算法(Kmeans等)详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 999久久久国产精品 韩国精品一区二区 | 天堂√在线 | 97视频在线免费 | 欧美精品入口蜜桃 | 欧美精品99久久久 | 射久久| 自拍天堂 | 日韩电影一二三区 | 午夜激情免费视频 | 国产日韩欧美精品在线 | 在线观看免费人成视频 | 色眯眯影院 | 国产亚洲精品久久久久久 | 大胸美女被爆操 | 国产精品系列在线播放 | 日韩欧美的一区二区 | 午夜精品一区二区三区免费视频 | 国产成人亚洲一区二区 | 制服.丝袜.亚洲.中文.综合懂色 | 男女做受视频 | 欧美日韩一区二区中文字幕 | 亚洲视频免费在线 | 精品在线视频播放 | 久久精品视频网 | 超碰97在线播放 | 大色综合 | 亚洲人成电影一区二区在线 | 日本福利小视频 | 亚洲人成色777777精品音频 | 国产又黄又硬又粗 | 日韩美女视频一区二区 | 国产精品扒开腿做爽爽 | 久久香蕉网站 | 中字幕一区二区三区乱码 | 在线播放一区 | 色爱av综合 | 美女扒开粉嫩的尿囗给男生桶 | 爱爱视频网站免费 | 少妇2做爰交换朴银狐 | 色葡萄影院 | 欧美中文字幕一区二区三区 | 熟妇高潮喷沈阳45熟妇高潮喷 | 一级黄色片大全 | 在线电影一区二区三区 | 亚洲天堂男人网 | 青草视频免费在线观看 | 好姑娘在线观看高清完整版电影 | 91免费污视频 | 亚洲人视频| 国产精品一亚洲av日韩av欧 | www日本色| 日本大胆人体视频 | 国产在线观看中文字幕 | 精品久久一 | 亚洲一级av无码毛片精品 | 国产精品一区二区三区久久久 | 亚洲中文字幕无码不卡电影 | 第一区免费在线观看 | 丁香色欲久久久久久综合网 | 日本不卡在线观看 | 天天色天天色天天色 | sese久久| 97伊人久久 | 天堂av资源在线观看 | 久久噜噜 | 天天狠天天操 | 日韩极品视频在线观看 | 超碰在线观看免费 | 婷婷久久亚洲 | 黄色avv | 人妻在线一区 | 风韵丰满熟妇啪啪区老熟熟女 | 麻豆精品视频在线 | 中国少妇乱子伦视频播放 | 亚洲人视频在线 | 轻轻草在线视频 | 啊v视频在线 | 黄色大片在线免费观看 | 激情综合在线 | 国产乱大交 | 黄色片中国 | 久久精品一二三 | 性xxxx另类xxⅹ | av免费网站 | 高清国产一区二区 | 水果派解说av | 好男人影视www | 偷偷操av| 男男gay做受xx| 亚洲高清欧美 | 色翁荡息又大又硬又粗又爽 | 白白色视频在线 | 国产香蕉在线视频 | 国产一区免费观看 | 青青草视频在线看 | 操碰av| 女优一区二区三区 | 亚洲av中文无码乱人伦在线视色 | 日韩在线观看视频一区二区三区 |