目錄
4.4 k-modes 算法 VS k-prototype 算法
5.1 AGNES (AGglomerative NESting)算法(多到少)
5.2 DIANA(Divisive ANAlysis)算法(少到多)
一.緒論
1.數據挖掘定義
- 數據挖掘定義:從大量的、不完全的、有噪聲的、隨機的數據中,提取潛在有用的信息和知識的過程。
- 數據挖掘過程:數據整理、數據挖掘、結果的解釋評估。
- 數據挖掘是一個反覆迭代的人機交互處理過程。
2.數據挖掘的產生與發展
2.1 數據分析師介紹
- 互聯網具有 數字化和互動性 的特徵,給數據蒐集、整理、研究帶來了革命性的突破。
- 抽樣調查 是最經常採用的數據獲取方式,主要原因就是大範圍普查的成本太高。
與傳統的數據分析師相比,互聯網時代的數據分析師面臨的不是數據匱乏,而是 數據過剩。
2.2 數據處理的類型
- 操作型處理(OLTP):數據的收集整理、存儲、查、增、刪、改操作。
- 分析型處理(OLAP):數據的再加工,複雜的統計分析。
2.3 數據倉庫
- 關係型數據庫 RDBMS: Oracle, SQL Server, DB2, MySQL等等。
- 多維數據倉庫 Data Warehouse: Essbase, TM1, BW, SQL Server AS, Intcube OLAP等等。
- 關係型數據庫的語法標準是 SQL, 多維數據倉庫的語法標準是 MDX。不支持MDX的,不能稱爲數據倉庫產品。
3.大數據特徵
- 大數據具有自己顯著的特徵.,如:4V屬性(技術) :
- 數據規模大(Volume) :需要 數據挖掘 技術
- 數據聚集快(Velocity) :需要 高速數據流挖掘 技術
- 數據類型多(Variety) :需要 數據庫 web挖掘 多媒體挖掘 技術
- 數據價值大(Value).:數據轉換成知識 潛在知識作用大 用全部數據發現有用信息
二.數據預處理
1.數據預處理的目的
- 數據清理:通過填補空缺數據平滑噪聲(有錯的)數據,識別、刪除孤立點,並糾正不一致的數據、
- 數據集成:將來自不同數據源的數據合併成一致的數據存儲、
- 數據變換:將數據轉換成適於挖掘的形式的預處理過程、
- 數據歸約:從原有龐大數據集中獲得一個精簡的數據集合,並使這一精簡數據集與原有數據集基本相同。
2.數據清理
常用方法如下:
- 使用屬性的平均值填補空缺值,忽略了特殊性。
- 使用與給定元組屬同一類的所有樣本的平均值:適用於分類數據挖掘。
- 使用最可能的值填充空缺值,可使用迴歸、貝葉斯等方法確定空缺值,這是最常用的。
噪聲數據去除方法如下:
- 分箱:
- 聚類:
- 迴歸處理:
- 計算機和人工檢查結合
3.數據集成和數據轉換
- 數據集成會導致 數據冗餘。
- 常用的數據轉換方法如下:
- 平滑:包括分箱、聚類和迴歸 聚集:
- 對數據進行彙總和聚集操作 Avg(), count(), sum(), min(), max(),…
- 在正式進行數據挖掘之前,尤其是使用基於對象距離的挖掘算法時,必須進行數據的 規範化。
- 數據變換規範化常用方法如下:
- 最小-最大規範化:
- 零-均值規範化(z-score規範化):
- 小數定標規範化:
4.數據歸約
(1)數據立方體聚集:
(2)維歸約:刪除不相關的屬性(或維),減少數據庫的規模。【屬性子集選擇】
(3)數據壓縮 :無損壓縮、有損壓縮。
(4)數值歸約:直方圖; 聚類; 取樣。
5.數據離散化和概念分層
- 離散化分層:將氣溫劃分爲:冷、正常、熱。
- 概念分層:可以用樹表示,成年包括青年、中年、老年,青年包括....
5.特徵選擇與提取
- 特徵選擇:從一組特徵中廁最有效的,減少特徵。
- 特徵提取(降維):將特徵重新排列組合,不減少特徵。
三.聚類分析
1.基本概念
- 聚類(Cluster):劃分的類是未知的,聚類前並不知道將要劃分成幾個組和什麼樣的組。
- 簇的形成完全是 數據驅動 的,屬於一種 無指導的學習方法。
- 分類(Classification):事先定義好類別,類別的數量在過程中 保持不變。
- 使用 距離 衡量對象間的相異度,距離越近越相似。
- q=1,d 稱爲曼哈坦距離(不常用)
- q=2,d 稱爲歐氏距離(常用)
- 好的聚類算法:高的簇內相似性(簇內距離小)、低的簇間相似性(簇間距離大)。
- 數據集S的一個聚類C={C1,C2,…,Ck},它的質量包括 每個簇Ci的質量 和 C的總體質量。
- 前者用 簇內距離 來刻畫,後者用 簇間距離 來衡量。
2.聚類分析算法分類
按照聚類算法 所處理的數據類型,可分爲以下三種:
- 數值型數據聚類算法:所分析的數據的屬性只限於數值數據
- 離散型數據聚類算法:只能處理離散型數據
- 混合型數據聚類算法:能同時處理數值和離散數據
按照聚類的 相似性度量標準,可分爲以下三種:
- 基於距離的聚類算法:用距離來衡量數據對象之間的相似度,如k-means、k-medoids、BIRCH、CURE等算法。
- 基於密度的聚類算法:相對於基於距離的聚類算法,基於密度的聚類方法主要是依據合適的密度函數等。
- 基於互連性(Linkage-Based)的聚類算法:通常基於圖或超圖模型。高度連通的數據聚爲一類。
按照聚類算法的思路劃分,可分爲:
3.k-means 算法
3.1 算法詳細步驟
- 設數據集S={(1,1), (2,1), (1,2), (2,2), (4,3), (5,3), (4,4), (5,4)},令k=2, 試用 k-means算法 將 X 劃分爲 k個簇。
- 數據集 S 可表示爲一張二維表:
- 因爲 k=2,故S的聚類 C={C1,C2},由 k-means算法 的循環計算過程如下:
- (1) 任選 X1=(1,1), X3=(1,2) 分別作爲 簇的中心,即 C1={x1} 和 C2={x3};
- (2) 第一輪循環:計算各數據點的歸屬:
- ①計算X2的歸屬:因爲 d(X2,X1)2= 1, d(X2,X3) 2=2,且1< 2,所以 X2 歸 X1代表的簇,即C1={X1,X2};
- ②計算X4的歸屬:因爲 d(X4,X1)2= 2, d(X4,X3) 2=1,且 2>1,所以 X4 歸 X3代表的簇,即C2={X3,X4};
- ③同理 X5 , X6, X7, X8 也歸入 X3 代表的簇;
- ④故得初始簇爲:C1={X1,X2}, C2={X3,X4,X5,X6,X7,X8};
- ⑤重新計算得 C1 和 C2 的 中心點 分別是:
- (3)第二輪循環:將X1, X2,…,X8分配到最近的簇中心,重複第一輪循環,最後又能得到兩個簇 和 新的 中心點;
- 不斷循環到 簇中心已沒有變化,算法停止;
- 輸出 S 的聚類: C={C1,C2}={{X1,X2,X3,X4}, X5,X6,X7,X8}}。
3.2 優缺點
優點:
- k-means算法簡單、經典,常作爲其它聚類算法的參照或被改進。
- k-means算法以k個簇的誤差平方和最小爲目標,當簇是密集的,且簇與簇之間區別明顯時,其聚類效果較好。
- k-means算法處理大數據集高效,具較好的可伸縮性
缺點:
- k-means算法對初始中心點的選擇比較敏感。
- k-means算法對參數k比較敏感。
- 在連續屬性的數據集上很容易實現,但在具有離散屬性的數據集上卻不能適用。
- 主要發現圓形或者球形簇,對不同形狀和密度的簇效果不好。
- k-means算法對噪聲和離羣點非常敏感。
4.k-means 算法改進
4.1 改進思路分析
- k-means算法 在實際計算中 可能會出現 空簇,導致算法下一 輪循環無法進行
- 選擇 替補中心 的方法:
- 選擇一個距離當前任何中心最遠的,並可消除 對總平方誤差影響最大 的點
- 從最大簇中選一個替補,並對該簇進行分裂
- 股票市場交易分析,一些明顯的 離羣點 可能是最令人感興趣的
- k-modes 算法:對 離散數據 快速聚類,保留 k-means算法 的效率,同時將應用範圍擴大到 離散數據
- k-prototype 算法:對 離散與數值屬性混合數據 進行聚類,定義了對數值與離散屬性都計算的相異性度量標準
- k-中心點算法:不採用 簇中平均值 作爲參照點,選用 簇中位置最中心的 對象,即 中心點 作爲參照點
4.2 k-modes 算法
- 記錄之間 的 相似性D 計算公式:比較記錄所有屬性,屬性值不同則 D+1,D越大,記錄越不相似
- 更新簇中心:使用簇中 每個屬性 出現頻率最大的 屬性值 代表 簇中心的屬性值
- 例如:對於簇{[a,1] [a,2] [b,1] [a,1] [c,3]},簇中心爲[a,1]
4.3 k-prototype 算法
- 混合屬性 的 相似性D 度量標準:數值屬性 採用 K-means算法 得到P1,離散屬性 採用 K-modes算法 的得到P2,D = P1 + a*P2,a 是權重如果覺得離散屬性重要,則增加 a,否則減少 a,a=0 時即只有數值屬性
- 更新簇中心:結合 K-means 與 K-modes 的簇中心更新方式
4.4 k-modes 算法 VS k-prototype 算法
- 這兩種方法將 只針對 數值屬性的 k-means算法,擴展到 可以解決 離散屬性與混合屬性
- k-modes算法 時間複雜度更低 但還存在如下問題:
- K值的確立
- k-prototype 權重 a 的確立
- k條初始記錄的選取
4.5 K-中心點算法(PAM)
4.5.1 基本思想
- PAM:是 聚類分析中 基於劃分的 聚類算法,選用 簇中位置最中心的 對象 作爲 代表對象(中心點)
- K-中心點算法(PAM)算法思想:
- 隨機尋找 k個 中心點作爲初始中心點
- 判斷 一個非代表對象 是否是 當前代表對象的好替代(使 平方誤差值E 減少 的對象),替換原中心點
- 重新分配時,替換的總代價 = 每個對象 到 新中心點的距離變化 的累加和
- 如果總代價是負的,那麼實際的平方 - 誤差將會減小,可以替換中心點;若總代價是正的,就不可以替換
- 代價計算的四種情況(離誰近給誰):A、B 是兩個原中心點,P 替換 B 作爲新的中心點,場中存在點 O
- O 隸屬於 中心點對象 B,B 被 P 替代,O 距離 A 近,則 O 被分配給 A
- O 隸屬於 中心點對象 B,B 被 P 替代,O 距離 P 近,則 O 被分配給 P
- O 隸屬於 中心點對象 A,B 被 P 替代,O 距離 A 近,則 O 被分配給 A
- O 隸屬於 中心點對象 A,B 被 P 替代,O 距離 P 近,則 O 被分配給 P
4.5.2 PAM 算法實例
- 若中心點 AB 分別被 非中心點 CDE 替換,需要計算下列代價:
- TCAC表示:中心點A 被 非中心點C 代替的代價,TCBE表示:中心點B 被 非中心點E 代替的代價,其他同理
- 用 中心點A 被 非中心點C 代替的代價計算過程作爲例子:
- 含義:中心點A 被 非中心點C 代替時,D的代價。(替換後距離 - 替換前距離)
- A被C替換以後,因爲A離B 比 A離C近,A被分配到B簇,CAAC=d(A,B)-d(A,A)=1。
- B是中心點,A被C替換以後,B不受影響,CBAC=0。
- C是新中心點,A被C替換以後, CCAC=d(C,C)-d(C,A)=0-2=-2。
- D原先屬於A簇,A被C替換以後,離 D最近的中心點是C,CDAC=d(D,C)-d(D,A)=1-2=-1。
- E原先屬於B簇,A被C替換以後,離 E最近的中心點是B,CEAC=0。
- 因此,TCAC=CAAC+ CBAC+ CBAC+ CDAC+ CEAC=1+0-2-1+0=-2。(以上累加)
- 各點 替換 中心點A 的代價:
- 各點 替換 中心點B 的代價:
- 通過上述計算,已經完成了 k-中心點算法的 第一次迭代。
- 在下一迭代中,將用其他的非中心點{A、D、E}替換中心點{B、C},找出具有最小代價的替換。
- 一直重複所有迭代過程,直到代價不再減小爲止。
4.5.3 k-中心點算法 性能分析
- 消除了 k-平均算法 對 孤立點 的敏感性
- 不易被 極端數據 影響,方法更健壯,但執行代價高
- 必須指定聚類數目k,並且 k的取值 對 聚類質量 影響很大
- 對 小的數據集 非常有效,對 大數據集 效率不高,特別是 n 和 k 都很大的時候
4.5.4 K-中心點 VS K-means
- 共同缺點:事先得表示K值
- K-means:適合處理 分羣數據明確集中的 數據集,只適合於數值數據
- K-中心點:適合處理 存在噪聲 或 離羣點的數據集,計算較爲複雜煩瑣
5.層次聚類算法
- 凝聚的層次聚類:一種自底向上的策略,首先將每個對象作爲一個簇,然後合併原子簇爲越來越大的簇,直到某個終結條件被滿足。代表算法是AGNES算法。
- 分裂的層次聚類:採用自頂向下的策略,首先將所有對象置於一個簇,然後逐漸細分爲越來越小的簇,直到達到了某個終結條件。代表算法是DIANA算法。
5.1 AGNES (AGglomerative NESting)算法(多到少)
- 初始步:每個對象爲一個簇:{X1},{X2},{X3},{X4},{X5},{X6},{X7},{X8}
- 第1步:使用 簇間中心距離平方,此例開始時有8個簇,需計算28個簇間距離平方
- d(X1,X2)2= d(X1,X3)2= d(X2,X4)2= d(X3,X4)2= 1
- d(X5,X6)2= d(X5,X7)2= d(X6,X8)2= d(X7,X8)2= 1
- 其它對象之間的中心距離平方都大於1,數據對象座標編號小者順序優先合併,即選擇{X1},{X2}合併爲{X1,X2}
- 即得 7個簇{X1,X2},{X3},{X4},{X5},{X6},{X7},{X8}
- 第2步:重新計算簇{X1,X2}的中心點爲C(1)=(1, 1.5),並增加計算C(1)與{X3},…,{X8}的距離平方
- d(C(1),X3)2=1.25,d(C(1),X4)2=1.25 其它d(C(1),X5)2,…
- 因d(X3,X4)2=1,故簇{X3}和{X4}合併爲{X3,X4}
- 第3步:重新計算簇各個簇的中心點爲……重複上面步驟,得到下表:
- 算法性能分析:
- AGNES算法思想比較簡單,但經常會遇到 合併點難以選擇 的困難
- AGNES算法的時間複雜性爲O(n2)
- 這種聚類方法 不具有 很好的可伸縮性
- 該算法僅可用於 規模較小的 數據集
5.2 DIANA(Divisive ANAlysis)算法(少到多)
- 算法要使用 簇的直徑 和 平均相異度 兩種測度方法
- 初始步:將所有對象作爲一個簇Co={X1,X2,X3,X4,X5,X6,X7,X8}
- 第一步:爲將Co分裂成兩個簇,要計算每個對象Xi到其它對象Xj (j=1, 2, …, 8; i≠j}的 平均相異度(平均距離)
- 第一輪平均相異度:
- d({X1},{*}) 和 d({X8},{*})=2.96 是最大平均距離,按照 對象下標編號小者優先 原則,將X1從Co中分裂出去
- 即得兩個新簇:Cs={X1},Co={X2,X3,X4,X5,X6,X7,X8}
- 第二步:從Co={X2,X3,X4,X5,X6,X7,X8}中取一點X2,計算 它到Cs最小距離 和 到Co中其它點的最小距離
- 因d(X2,Cs) <= d(X2,X4),所以將X2從Co中分裂出去給Cs
- 即得兩個新簇:Co={X3,X4,X5,X6,X7,X8},Cs={X1 , X2}
- 第三步:不斷重複一二步,得到:Co={X5,X6,X7,X8}, Cs={X1 , X2, X3, X4}
- 擴展:如果指定k=4,則算法需要進入第二輪和第三輪循環
- 第二輪循環 FOR h=2,得聚類:C={{X1, X2, X3},{X4},{X5,X6,X7,X8}}={C1, C2, C3}
- 第三輪循環 FOR h=3,得聚類:C={{X1, X2},{ X3},{X4},{X5,X6,X7,X8}}={C1,C2,C3,C4}
- 即 DIANA算法 得到了包括 4個簇的 聚類,算法結束
- 4個簇聚類的圖不如 2個簇聚類的圖靠譜,故 DIANA算法 對 k值的選取 也是敏感的
- 算法性能分析:
- 時間複雜性爲O(n2)
- 不具有很好的可伸縮性
- 在 n 很大的情況就不適用
6.BIRCH算法
- BIRCH:利用 層次方法的平衡 迭代規約和聚類
- BIRCH算法 利用 樹型結構(類似於平衡B+樹) 快速聚類
- 利用 有限內存 完成對大數據集的高質量聚類,同時通過 單遍掃描數據集 最小化 I/O代價
6.1 聚類特徵
- 聚類特徵(CF)是 BIRCH增量聚類算法的核心,聚類特徵樹(CF樹)中的節點都由CF組成
- CF中存儲 簇中所有數據點的特性統計和,基於這個特徵,BIRCH聚類可以很大程度對數據集 進行壓縮
- CF是一個三元組,代表了簇的所有信息: CF=(N,LS,SS)
- N是 簇中樣本數量,LS是 N個樣本點的向量和,SS是 N個樣本點各個特徵的平方和
- CF可以求和:CF1=(n1,LS1,SS1),CF2=(n2,LS2,SS2),CF1+CF2=(n1+n2, LS1+LS2, SS1+SS2)
- 簇C1 有 3個數據點:(2,3),(4,5),(5,6), 則CF1 = {3,(2+4+5,3+5+6),(2²+4²+5², 3²+5²+6²)} = {3,(11,14),(45,70)}
6.2 聚類特徵樹
- CF樹存儲了層次聚類的簇的特徵,它有三個參數:枝平衡因子β、葉平衡因子λ、空間閾值τ
- 枝平衡因子β(內部節點的最大CF數)
- 葉平衡因子λ(葉子節點的最大CF數)
- 空間閾值τ(葉節點每個CF的最大樣本半徑)
- 非葉節點中 包含不多於 β個 形如[CFi,childi] 的節點
- 葉節點中 包含不多於 λ個 形如[CFi] 的條目,每個條目不是簡單的數據點,而是簇
- 空間閾值τ:用於約束的樹的大小,葉節點內各條目對應簇的半徑C不得大於τ,τ越大,樹越小
- 聚類特徵樹的生成:
- BIRCH算法步驟:
- 階段一:掃描數據集,建立初始的CF樹(一個數據的多層壓縮,保留數據內在的聚類結構),當一個對象被插入到最近的葉節點(子聚類)中時,隨着對象的插入,CF樹被動態地構造,故 BIRTH方法對增量或動態聚類非常有效
- 階段二:採用某個聚類算法對 CF樹的葉節點進行聚類。此階段可以執行任何聚類算法
- BIRCH算法的主要優點:
- 節約內存,所有的樣本都在磁盤上,CF Tree僅僅存了CF節點和對應的指針
- 聚類速度快,只需要一遍掃描訓練集就可以建立CF Tree,CF Tree的增刪改都很快
- 可以識別噪音點,還可以對數據集進行初步分類的預處理
- BIRCH算法的主要缺點有:
- 由於CF Tree對每個節點的CF個數有限制,導致聚類的結果可能和真實的類別分佈不同.
- 對高維特徵的數據聚類效果不好,如果數據集的分佈簇不是類球型簇,則聚類效果不好
- 由於每個節點只能包含一定數目的子節點,最後得出來的簇可能和自然簇相差很大
- BIRCH算法在整個過程中一旦中斷,一切必須從頭再來
7.密度聚類算法
- 密度聚類算法的指導思想:只要一個區域中對象的密度大於某個閾值,就把它加到與之相近的簇中去
- 可發現任意形狀的簇,對噪聲數據也不敏感
- DBSCAN算法 是基於密度的聚類算法代表
- 假設給定Σ=2.5,MinPts=8,則點 X就是S的一個核心對象:
- 但如果指定 MinPts=10,即使 Σ取值不變,X也不再是S的核心對象了
- Y在那個鄰域裏稱作 X到Y直接密度可達,而Z就不是直接密度可達
- 從X到Y關於(Σ,MinPts)是 密度可達的:
- Y和Z關於(Σ,MinPts)是 密度相連的:
- 核心對象、邊界點、噪聲點:
- DBSCAN算法例題:
- 在S中選擇X1,以 X1爲中心,Σ=1半徑的圓內僅包含2個點{ X1,X4},即Σ( X1)=2<MinPts,因此它不是核心點
- X1:不是核心點
- X2:不是核心點
- X3:不是核心點
- 以 X4爲中心,Σ=1爲半徑的圓內包含5個點{ X1, X3, X4, X5, X10},即Σ( X4)=5>=MinPts
- 因此 X4是關於密度(Σ=1,MinPts=4)的一個核心點 / 對象:
- X4直接密度可達X10 ,以 X10爲中心,Σ=1半徑的圓內包含4個點{ X10, X4, X9, X12 },即Σ(X1)=4=MinPts
- 因此 X10也是一個核心對象,直接密度可達X4, X9, X12:
- 從X4 出發密度可達的點有:直接密度可達4個,密度可達3個
- 因此 以核心點 X4出發密度可達的所有對象形成的簇,記作C1={ X1, X3, X4, X5, X9, X10, X12}
- 在S中選擇一點X5,由於X5已在簇C1中,因此無需判斷是否爲核心點,繼續選擇下一個點
- 在S中選擇一點X6,它也不是核心點,繼續選下一個點:
- 在S中選擇一點X7,它是核心點:
- 因此 以核心點X7出發密度可達的所有對象形成的簇,記作 C2={ X2, X6, X7, X8, X11}
- 類似地,依次選擇一點X8, X9, X10, X11, X12,其計算結果彙總於下表:
- 聚類結果:
- DBSCAN算法優點:
- 不需要事先知道要形成的簇的數量,可以發現任意形狀的簇
- 能夠識別出噪聲點,可以檢測離羣點
- 對於數據集中樣本的順序不敏感
- DBSCAN算法缺點:
- 不能很好反映高維數據
- 對用戶定義的密度(ε,MinPts)參數是敏感的,即 ε和 MinPts的設置將直接影響聚類的效果
- 如果樣本集的密度不均勻、簇間距離相差很大時,聚類質量較差