1. 程式人生 > >機器學習工程師 - Udacity 非監督學習 Part One

機器學習工程師 - Udacity 非監督學習 Part One

一、聚類

1.k-means
首先隨意給出聚類中心,然後進行分配和優化。
初始位置非常重要,不同的初始位置可能會使最後的聚類結果完全不一樣。並且可能會使結果陷入區域性最優:

2.sklearn中的k-means
最重要的三個引數:
n_cluster:聚類數量,預設為8;
max_iter:最大迭代次數,預設為300;
n_init:    不同初始化的數量,預設為10。

3.選擇 K
可以通過多種方式選擇聚類 k。我們將研究一種簡單的方式,叫做“肘部方法”。肘部方法會繪製 k 的上升值與使用該 k 值計算的總誤差分佈情況。
如何計算總誤差? 一種方法是計算平方誤差。假設我們要計算 k=2 時的誤差。有兩個聚類,每個聚類有一個“圖心”點。對於資料集中的每個點,我們將其座標減去所屬聚類的圖心。然後將差值結果取平方(以便消除負值),並對結果求和。這樣就可以獲得每個點的誤差值。如果將這些誤差值求和,就會獲得 k=2 時所有點的總誤差。


我們對每個 k(介於 1 到資料集中的元素數量之間)執行誤差計算,繪製圖表,即可確定合適的K值。

4.k 均值通常不喜歡缺失值。
為了使 sklearn 對缺少值的資料集執行 k 均值聚類,我們首先需要將其轉型為稀疏 csr 矩陣型別(如 SciPi 庫中所定義)。
要從 pandas dataframe 轉換為稀疏矩陣,我們需要先轉換為 SparseDataFrame,然後使用 pandas 的 to_coo() 方法進行轉換。
注意:只有較新版本的 pandas 具有to_coo()。

5.電影評分的 k 均值聚類
我們使用 k 均值根據使用者的評分對使用者進行聚類。這樣就形成了具有相似評分的使用者聚類,因此通常具有相似的電影品位。基於這一點,當某個使用者對某部電影沒有評分時,我們對該聚類中所有其他使用者的評分取平均值,該平均值就是我們猜測該使用者對該電影的喜歡程度。


關於協同過濾的更多資訊
這是一個簡單的推薦引擎,展示了“協同過濾”的最基本概念。有很多可以改進該引擎的啟發法和方法。為了推動在這一領域的發展,Netflix 設立了 Netflix 獎項 ,他們會向對 Netflix 的推薦演算法做出最大改進的演算法獎勵 1,000,000 美元。
在 2009 年,“BellKor's Pragmatic Chaos”團隊獲得了這一獎項。這篇論文介紹了他們採用的方式,其中包含大量方法。
Netflix 最終並沒有使用這個榮獲 1,000,000 美元獎勵的演算法,因為他們採用了流式傳輸的方式,併產生了比電影評分要龐大得多的資料集——使用者搜尋了哪些內容?使用者在此會話中試看了哪些其他電影?他們是否先看了一部電影,然後切換到了其他電影?這些新的資料點可以提供比評分本身更多的線索。

深入研究
我們實際上可以使用幾乎一樣的程式碼進行商品級推薦。例如亞馬遜的“購買(評價或喜歡)此商品的客戶也購買了(評價了或喜歡)以下商品:” 。我們可以在應用的每個電影頁面顯示這種推薦。為此,我們只需將資料集轉置為“電影 X 使用者”形狀,然後根據評分之間的聯絡對電影(而不是使用者)進行聚類。

 

二、層次聚類法與密度聚類
1.k-meand幾乎能幫你從任何資料中提取模式。但它並不是完美無缺的。

這就是把類定義為到質心距離的弊端。這使得k-means總是試圖尋找高維領域呈圓形、球形或超球面形的類。

2.層次聚類
層次聚類的結果能讓我們直觀地瞭解類之間的關係:

密度聚類。
主要關注其中的DBSCAN(具有噪聲的基於密度的聚類方法)。它一般把一些密集分佈的點聚類,再講其他剩餘的點標記為噪音。這個演算法對雙月牙型資料集非常適用。

 

3.層次聚類:單連線聚類法

7號點到橘色分類的距離如何計算是區分不同層次聚類方法的一個標準,是7號點到6號點的距離,還是7號點到8號點的距離,還是這兩個距離的平均值,還是另有答案。單連線聚類法關注的是類的最短距離,也就是6和7這兩點的距離,因為6是距7最近的點。
那麼類在哪裡?
我們要給單連線聚類法的輸入是我們要找的類的數量。只需要砍樹就行:

弊端:單連線聚類法有時候會產生狹長的類,但大多數時候,我們想要的,都是緊湊的類;有時候還會導致所形成的類,一個類囊括大多數資料的情況,因此,我們才需要學習其他的層次聚類方法。
分類效果及系統樹:

分類效果圖只能展示二維資料,系統樹能展示任意維資料,所以它能幫我們對資料集做視覺化處理。

4.三種不同的層次聚類法
sklearn中是沒有單連線聚類法的。但以下三種都有,它們都屬於sklearn框架中凝聚聚類(agglomerative clustering)成分中的一部分,凝聚聚類法並不包括單連線聚類,但包括全連線聚類。
全連線聚類:關注的是兩個類中,兩點之間的最遠距離,將它定義為兩類之間的距離。這是全連線聚類和單連線聚類唯一的區別。這種距離衡量方法使得產生的類比較緊湊。但最佳距離衡量方法取決於資料集和目標效果。
組平均聚類:計算任意兩類中任意兩點之間的距離,然後取平均值,即為兩類間的距離。
離差平方和:

5.sklearn中使用層次聚類:

離差平方和(ward)是預設方法
畫系統樹需要使用SciPy:

6.標準化對聚類的影響
如果某列的值比其他列要小,那麼它的方差對聚類處理流程的影響更新(因為聚類是基於距離的)。我們需要對資料集進行標準化 ,使每個維度都位於 0 到 1 之間,以便在聚類流程中具有相等的權重。方法是讓每列減去最小值,然後除以範圍。sklearn 提供了一個叫做 preprocessing.normalize() 的實用工具,可以幫助我們完成這一步。

7.層次聚類優缺點及其應用
優點:
得到的層次表達資訊豐富;
把資料集的聚類結構視覺化;
特別是當資料內部有層次關係的時候,例如進化生物學。
缺點:
對噪音和離群值很敏感(所以要提前清理資料集中的噪音和離群值);
計算量大。
應用:
採用組平均聚類把分泌蛋白聚類,並建立不同的類表示不同種類的真菌:Using Hierarchical Clustering of Secreted Protein Families to Classify and Rank Candidate Effectors of Rust Fungi.
採用全連線聚類法繪製人體微生物的圖表:Association between composition of the human gastrointestinal microbiome and development of fatty liver with choline deficiency

8.DBSCAN

DBSCAN的引數只有鄰域和點的最小數量。

9.sklearn中的DBSCAN

10.DBSCAN優缺點及其應用
優點:
不需要指明類的數量;
能靈活地找到並分離各種形狀和大小的類;
能強有力地處理資料集中的噪聲和離群值。
缺點:
從兩個類可達的邊界點被分配給了其中一個類,因為這個類先發現的這個邊界點。由於各個點是被隨機拜訪的,如果出現這種情況的話DBSCAN不能保證傳回相同的聚類。幸運的是,大多數資料集不會面臨這個問題;
找到不同密度的類方面有一定的困難。對於這種情況,我們可以使用DBSCAN的變體HDBSCAN,即具有噪聲的基於密度的高層次空間聚類演算法。
應用:
研究網路流量,試圖用聚類演算法將其分類:Traffic Classification Using Clustering Algorithms.
對溫度資料做異常檢測Anomaly detection in temperature data using dbscan algorithm.

 

三、高斯混合模型(GMM)與聚類驗證
1.高斯混合模型是一種溫和的聚類,資料集中的每個樣本,都屬於現有的每個類,但是它們在每個類中的隸屬度不一樣:

2.期望最大化演算法
為了進行聚類,我們需要對高斯混合模型採用期望最大化演算法。
第一步,初始化k個高斯分佈。基本上,我們需要給它們均值和標準差。樸素的方法是將它們設定為資料集本身的平均值。但在實踐中有一種更好的方法,是在資料集上使用k均值,然後使用有k均值生成的聚類初始化高斯分佈。
第二步,將資料軟聚類成初始化的k個高斯,稱為期望步驟,或E步驟。

圖中的N(...)基本上是正態分佈的概率密度函式。
第三步,基於軟聚類重新估計高斯,稱為最大化步驟,或M步驟。
計算新的均值:

計算新的方差:

第四步,評估對數似然來檢查收斂。如果不收斂,回到第二步,反覆進行。
對數似然計算公式:

3.sklearn中的GMM實現

4.GMM優缺點及其應用
優點:
提供軟聚類(軟聚類是多個聚類的示例性隸屬度)。例如文件分類,你希望每個文件都是多個主題,GMM就很有幫助;
在聚類外觀方面很具靈活性。它可以允許一個聚類中包含另一個聚類。
缺點:
對初始值敏感;
有可能收斂到區域性最優;
收斂速度慢。
應用:
讀懂大量的感測器讀數。所使用的一個數據集就是加速度計讀數,GMM在建立不同活動的外觀方面非常有用,通過GMM讀取裝在人們口袋中的加速度計讀數,可以估計此人是在通勤,還是在辦公室:Nonparametric discovery of human routines from sensor data.
分類天文學中的脈衝星:Application of the Gaussian mixture model in pulsar astronomy.
生物識別。例如說話人確認,簽名識別,指紋和其他型別的生物識別:Speaker Verification Using Adapted Gaussian Mixture Models.
目前為止,GMM最酷的應用還是計算機視覺。把圖片提供給這個模型,同時也把這個圖片所在的流式視訊提供給模型,它就可以檢測背景,並從最初的影象中移除它。實際上是給每個畫素一個高斯混合模型,然後用流式視訊學習一個模型,一個實際發生在多個幀的畫素中的高斯混合,使用它可以檢測背景:Adaptive background mixture models for real-time tracking.視訊

5.聚類分析過程

第一步,特徵選擇和特徵提取。特徵選擇是從一組特徵中選擇特徵,我們不必對所有的資料集,即資料集的每一列都使用聚類方法。有時我們的資料集有數以千計的維度,進行聚類需要很多資源,我們可以使用一些方法和工具來減少特徵,並選取結果最好的特徵;特徵提取是對資料進行轉換,以生成新的有用特徵,最好的例子是主成分分析(PCA);
第二步,選擇一個聚類演算法。根據你需要做什麼和資料的外觀,你必須試驗哪一個演算法可以給你最好的結果,沒有任何演算法可以普遍地適用於我們可能面臨的問題。在這一步,我們必須選擇一個鄰近度度量,一般情況下會使用歐氏距離來衡量兩點間的幾何距離,但如果你的資料是文件或詞嵌入,鄰近度度量將是餘弦距離。如果你的資料更多的是基因表達型別資料,那麼你將使用Pearson相關係數;
第三步,聚類評價。除了在可能的情況下對聚類結果進行視覺化以外,我們還可以使用一些評分方法來評估基於特定標準的聚類結構的質量,這些評分方法被稱為指數。每一個指數稱為聚類有效性指標;
第四步,聚類結果解釋。結果解釋決定了我們可以從最終的聚類結構中學習到什麼樣的見解。這一步需要領域專業知識為叢集提供標籤,並試圖從中推斷出一些見解。

6.聚類驗證
聚類評價指數有三種:
外部指標:處理有標籤資料時使用的評分;
內部指標:處理沒有標籤資料時使用的評分,僅使用資料來衡量資料和結構之間的吻合度;
相對指標:基本上,所有外部指標都能作為相對指標。
大多數指標是通過緊湊性和可分性來定義的。緊湊性基本上是衡量一個聚類中的元素彼此之間的距離,而可分性表示不同聚類之間的距離。

7.外部評價指標
可用的評分方法的一個子集:

調整蘭德係數:

8.內部評價指標

輪廓係數:

我們也可以利用輪廓係數來比較聚類演算法。
注意:當我們使用DBSCAN時,不應該使用輪廓係數,因為輪廓係數沒有噪音的概念;同時,輪廓係數不會獎勵雙環形分割,它想找到從其他類分割開的那些緊湊,密集的環形類。基於密度的聚類驗證(DBCV)在處理DBSCAN時的效果更好。