04.05 ML:教你聚類並構建學習模型處理數據(附數據集)

ML:教你聚類並構建學習模型處理數據(附數據集)

翻譯: 王雨桐

校對: 顧佳妮

本文約1500字,建議閱讀6分鐘。

本文以Ames住房數據集為例,對數據進行聚類,並構建迴歸模型。

摘要

本文將根據41個描述性分類特徵的維度,運用無監督主成分分析(PCA)和層次聚類方法對觀測進行分組。將數據聚類可以更好地用簡單的多元線性模型描述數據或者識別更適合其他模型的異常組。此方法被編寫在python類中,以便將來能實現類似網格搜索的參數優化。

ML:教你聚類並構建學習模型處理數據(附數據集)

結果與討論

本項目中,我們將機器學習技術應用於Ames住房數據集,用79個解釋變量來預測房屋的銷售價格,其中包括41個分類變量(分類型變量),38個連續數值變量(連續型變量)。在最初探索性數據分析(EDA)和特徵選擇的過程中,為了更好地理解數據,我們僅用兩個連續變量來擬合數據,以便通過三維散點圖反映數據和模型。通過列舉38個連續數值變量的所有雙變量排列組合並分別擬合線性迴歸模型,我們選出了兩個對銷售價格預測能力最強的變量。在考慮整個訓練集時,地上居住面積和整體質量參數是最佳的預測指標,但這隻解釋了房屋銷售價73.9%的方差。通過使用41個分類特徵來識別數據集內的組群,我們可以將數據集分解為方差更小的子集,並找到更好地描述每個特定房屋子集的模型。

附Ames housing數據集:

https://www.kaggle.com/c/house-prices-advanced-regression-techniques

ML:教你聚類並構建學習模型處理數據(附數據集)

一個簡單的線性迴歸模型可以體現地上居住面積和整體質量對住宅銷售價格的影響,它解釋了74%的房價變動

由於分類變量較多,並且對Ames房屋市場的專業知識有限,我們使用無監督的聚類方法找到變量裡的模式並在此基礎上分組。首先通過PCA對數據集進行降維,以避免大量分類變量造成的“維度災難”效應。PCA還有其他的好處,它能把對總體方差沒有貢獻的變量數量降到最低,並且將維度降低到三維以便我們直觀地改進聚類算法的圖形表示(並且將維度降低至三維,給了我們一個圖形化的分類效果展示,以便做出直觀地改進)。下圖展示了由PCA將分類變量降到3維的圖形:

ML:教你聚類並構建學習模型處理數據(附數據集)

由41個分類變量濃縮後的三維PCA空間數據表示

通過對此圖的初步觀察,數據大部分的差異體現在新的Y(垂直)維度。在X(寬度)和Z(深度)維度中,差異來源於設定的類別,進而導致數據形成垂直方向的條紋。由於群集的各向異性,我們利用有k-nearest neighbor connector參數的層次聚類算法來定義組,這樣就不會將條帶分割成多個部分。(我們利用層次聚類算法中的k鄰近算法,在不把豎狀條紋割開的基礎上重新定義各個組。)(在Python的sklearn庫中,AgglomerativeClustering方法可以用於聚類。本案例中,基於Ward linkage標準把類的數量設置為6,以及由kneighbors_graph包生成連接數組,其中參數n_neighbors設置為20)。

ML:教你聚類並構建學習模型處理數據(附數據集)

層次聚類分組的PCA空間表示

ML:教你聚類並構建學習模型處理數據(附數據集)

基於鄰近地區著色和PCA降維的觀測有助於發現影響降維及聚類的因素

由PCA 、聚類方法生成的群集非常好地區別了分組中的垂直“條紋”。為了找到無監督聚類和其所對應的房屋特徵之間的相似點,這些群集也基於每個分類變量著色。其中一些彩色的散點圖類似於無監督聚類,表明這些特定的房子特徵在確定每個數據點的最終PCA向量時起較大的作用。特別注意的是,基於鄰近區域(neighborhood)著色突出了與無監督方法相似的垂直分組,這表明鄰近區域是影響分解子集的一個重要因素。為了此類應用,我們需要設計更精確的方法來確定每個因素對最終PCA維度的整體“貢獻”。

為了確定每個組中哪兩大因素是銷售價格最好的預測因素,我們用這6個集群把連續數值數據分為子集,並假設一個簡單的二元線性迴歸模型

<table><tbody>

組別

最有影響力的自變量

判定係數

1

Overall Quality : GrLivArea

79.5%

2

Overall Quality : GarageArea

68.2%

3

Overall Quality : GarageCars

73.5%

4

Overall Quality : 1stFlrSF

62.5%

5

Overall Quality : GarageCars

85.9%

/<tbody>/<table>

雖然有些節點比其他節點更適合線性迴歸,但相比於將數據作為整體來處理,用模型擬合這些群集在精度上沒有累積差異。然而,這只是概念驗證的初始迭代,還沒有優化關鍵參數,如n_nodes、(

節點數量),PCA dimensions(PCA維度)和KNN connectivity parameters(KNN連通度)。將這些方法編碼到一個python類中,它可以協助使用類似於網格搜索的優化過程來確定最佳的集群參數,從而最大化簡單線性迴歸模型的準確性。請參考下列GitHub鏈接中的"MC_regressor_Code.ipynb":

https://github.com/dgoldman916/housing-ml。

未來工作

此時,“概念驗證”的關鍵缺失是對新數據進行訓練和分類的能力。在引入測試集時,要先基於訓練得到的參數將新數據被分為有標記的組。這就需要一個有監督的聚類方法,比如決策樹或支持向量機(SVM)。在添加此類函數之後,可以將其應用到組的其他工作流程中。我們可以通過預期的最終迭代在擬合穿過節點的更復雜的模型,並將這些模型的結果集中在一起。

原文標題:

Machine Learning: Unsupervised dimension reduction and clustering to process data for pooled regression models

原文鏈接:

https://nycdatascience.com/blog/student-works/machine-learning-unsupervised-dimension-reduction-and-clustering-to-process-data-for-pooled-regression-models/

譯者簡介

ML:教你聚類並構建學習模型處理數據(附數據集)

王雨桐,統計學在讀,數據科學碩士預備,跑步不停,彈琴不止。夢想把數據可視化當作藝術,目前日常是摸著下巴看機器學習。


分享到:


相關文章: