數據挖掘 課堂筆記(一)緒論、數據預處理、聚類分析

目錄

一.緒論

二.數據預處理

三.聚類分析

1.基本概念

2.聚類分析算法分類

3.k-means 算法

4.k-means 算法改進

4.1 改進思路分析

4.2 k-modes 算法

4.3 k-prototype 算法

4.4 k-modes 算法 VS k-prototype 算法

4.5 K-中心點算法(PAM)

5.層次聚類算法

5.1 AGNES (AGglomerative NESting)算法(多到少)

5.2 DIANA(Divisive ANAlysis)算法(少到多)

6.BIRCH算法

7.密度聚類算法


一.緒論

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.數據清理

常用方法如下:

  • 使用屬性的平均值填補空缺值,忽略了特殊性。
  • 使用與給定元組屬同一類的所有樣本的平均值:適用於分類數據挖掘。
  • 使用最可能的值填充空缺值,可使用迴歸、貝葉斯等方法確定空缺值,這是最常用的。

噪聲數據去除方法如下:

  1. 分箱:
  2. 聚類:
  3. 迴歸處理:
  4. 計算機和人工檢查結合

3.數據集成和數據轉換

  • 數據集成會導致 數據冗餘。
  • 常用的數據轉換方法如下:
  1. 平滑:包括分箱、聚類和迴歸 聚集:
  2. 對數據進行彙總和聚集操作 Avg(), count(), sum(), min(), max(),…
  • 在正式進行數據挖掘之前,尤其是使用基於對象距離的挖掘算法時,必須進行數據的 規範化
  • 數據變換規範化常用方法如下:
  1. 最小-最大規範化:
  2. 零-均值規範化(z-score規範化):
  3. 小數定標規範化:

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算法 在實際計算中 可能會出現 空簇,導致算法下一 輪循環無法進行
  • 選擇 替補中心 的方法:
  1. 選擇一個距離當前任何中心最遠的,並可消除 對總平方誤差影響最大 的點
  2. 從最大簇中選一個替補,並對該簇進行分裂
  • 股票市場交易分析,一些明顯的 離羣點 可能是最令人感興趣的
  • 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算法 時間複雜度更低 但還存在如下問題:      
  1. K值的確立       
  2. k-prototype 權重 a 的確立      
  3. k條初始記錄的選取

4.5 K-中心點算法(PAM)

4.5.1 基本思想

  • PAM:是 聚類分析中 基於劃分的 聚類算法,選用 簇中位置最中心的 對象 作爲 代表對象(中心點)
  • K-中心點算法(PAM)算法思想:
  • 隨機尋找 k個 中心點作爲初始中心點
  • 判斷 一個非代表對象 是否是 當前代表對象的好替代(使 平方誤差值E 減少 的對象),替換原中心點
  • 重新分配時,替換的總代價 = 每個對象 到 新中心點的距離變化 的累加和
  • 如果總代價是負的,那麼實際的平方 - 誤差將會減小,可以替換中心點;若總代價是正的,就不可以替換
  • 代價計算的四種情況(離誰近給誰):A、B 是兩個原中心點,P 替換 B 作爲新的中心點,場中存在點 O
  1. O 隸屬於 中心點對象 B,B 被 P 替代,O 距離 A 近,則 O 被分配給 A
  2. O 隸屬於 中心點對象 B,B 被 P 替代,O 距離 P 近,則 O 被分配給 P
  3. O 隸屬於 中心點對象 A,B 被 P 替代,O 距離 A 近,則 O 被分配給 A
  4. 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步:重新計算簇各個簇的中心點爲……重複上面步驟,得到下表:
  • 算法性能分析:
  1. AGNES算法思想比較簡單,但經常會遇到 合併點難以選擇 的困難
  2. AGNES算法的時間複雜性爲O(n2)
  3. 這種聚類方法 不具有 很好的可伸縮性
  4. 該算法僅可用於 規模較小的 數據集

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值的選取 也是敏感的
  • 算法性能分析:
  1. 時間複雜性爲O(n2)
  2. 不具有很好的可伸縮性
  3. 在 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樹存儲了層次聚類的簇的特徵,它有三個參數:枝平衡因子β、葉平衡因子λ、空間閾值τ
  1. 枝平衡因子β(內部節點的最大CF數)
  2. 葉平衡因子λ(葉子節點的最大CF數)
  3. 空間閾值τ(葉節點每個CF的最大樣本半徑)
  • 非葉節點中 包含不多於 β個 形如[CFi,childi] 的節點
  • 葉節點中 包含不多於 λ個 形如[CFi] 的條目,每個條目不是簡單的數據點,而是簇
  • 空間閾值τ:用於約束的樹的大小,葉節點內各條目對應簇的半徑C不得大於τ,τ越大,樹越小
  • 聚類特徵樹的生成:
  • BIRCH算法步驟: 
  1. 階段一:掃描數據集,建立初始的CF樹(一個數據的多層壓縮,保留數據內在的聚類結構),當一個對象被插入到最近的葉節點(子聚類)中時,隨着對象的插入,CF樹被動態地構造,故 BIRTH方法對增量或動態聚類非常有效
  2. 階段二:採用某個聚類算法對 CF樹的葉節點進行聚類。此階段可以執行任何聚類算法
  • BIRCH算法的主要優點:     
  1. 節約內存,所有的樣本都在磁盤上,CF Tree僅僅存了CF節點和對應的指針
  2. 聚類速度快,只需要一遍掃描訓練集就可以建立CF Tree,CF Tree的增刪改都很快
  3. 可以識別噪音點,還可以對數據集進行初步分類的預處理
  • BIRCH算法的主要缺點有:
  1. 由於CF Tree對每個節點的CF個數有限制,導致聚類的結果可能和真實的類別分佈不同.
  2. 對高維特徵的數據聚類效果不好,如果數據集的分佈簇不是類球型簇,則聚類效果不好
  3. 由於每個節點只能包含一定數目的子節點,最後得出來的簇可能和自然簇相差很大
  4. 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算法優點:
  1. 不需要事先知道要形成的簇的數量,可以發現任意形狀的簇
  2. 能夠識別出噪聲點,可以檢測離羣點
  3. 對於數據集中樣本的順序不敏感
  • DBSCAN算法缺點: 
  1. 不能很好反映高維數據
  2. 對用戶定義的密度(ε,MinPts)參數是敏感的,即 ε和 MinPts的設置將直接影響聚類的效果
  3. 如果樣本集的密度不均勻、簇間距離相差很大時,聚類質量較差
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章