天天看點

使用譜聚類(spectral clustering)進行特征選擇

作者:deephub

在本文中,我們将介紹一種從相關特征的高維資料中選擇或提取特征的有用方法。

譜聚類是一種基于圖論的聚類方法,通過對樣本資料的拉普拉斯矩陣的特征向量進行聚類,進而達到對樣本資料聚類的目的。譜聚類可以了解為将高維空間的資料映射到低維,然後在低維空間用其它聚類算法(如KMeans)進行聚類

使用譜聚類(spectral clustering)進行特征選擇

本文使用2021-2022年正常賽NBA球員的賽季資料。從特征之間的相關矩陣中繪制一個圖表,顯示可能相似的特征組,然後将研究譜聚類如何在這個資料集中工作。

資料中存在相關特征

在資料集進行EDA時,可能會得到一個結論:某些特征沒有那麼豐富的資訊,一個簡單的線性模型可以通過其他特征來準确預測它們。 這種現象稱為“多重共線性”,它不利于模型的泛化和可解釋性。在理想情況下,我們希望特征都是彼此獨立的,這樣可以更好地解釋和滿足一些統計過程的假設,因為大多數統計模型假設随機變量是獨立的。

我們可以用譜聚類算法對特征進行聚類來解決這個問題。

我們的資料集包括三張表:2021-2022賽季NBA球員的平均資料、進階資料和每百次控球資料。在球員姓名欄中加入特征後,我們計算特征的方差膨脹系數(VIF)來研究多重共線性。結果得到了下表:

使用譜聚類(spectral clustering)進行特征選擇

因為合并了三個表,是以這些表中的一些特征彼此相關。

從相關矩陣建立圖

為了能夠看到相關的特征,我們畫了一個特征圖,将高度相關的特征連接配接在一起,希望能夠找到公共相關性,循環相關性應該建立一些區域,其中每個特征依賴于其他特征。

# We only display correlations higher than 0.7 in absolute value
G = nx.Graph()
for i in range(len(columns)):
col1 = columns[i]
for j in range(i):
col2 = columns[j]
val = corr_matrix.values[i,j]
if abs(val) > vis_threshold:
G.add_edge(columns.index(col1), columns.index(col2) , color=get_color(abs(val), color_threshold))           
使用譜聚類(spectral clustering)進行特征選擇

圓圈内的每一個整數都對應這個圖中的一個特征。看看在圖的右下角形成一個五邊形的公共相關性,10-3323-3-4。

10:投籃命中率,33:進攻效率,23:真實命中率,3:有效投籃命中率。這幾個都表示進攻的效率。

而中心的密集連接配接使我們無法手工選擇所有的特征。是以需要一種數學方法來找到這些規律。

拉普拉斯特征圖

首先需要為一對特征定義“連結”或“鄰居”的概念。 我們的目标是将上圖分解為不相連的部分,其中每個部分都由成對相關的特征組成,不同的部分應盡可能獨立。 由于我們隻顯示高于 0.7 的相關性(絕對值,相關性也可以為負,這裡不關心符号),是以使用以下鄰接矩陣定義:

使用譜聚類(spectral clustering)進行特征選擇

我們有D個特征,矩陣B是鄰接矩陣。

而我們希望在K維空間中找到這些特征的表示形式,其中K是使用者定義的數字,指定将使用多少個坐标來表示每個特征。拉普拉斯特征映射方法的目的是尋找特征的表示法,使相鄰特征盡可能接近地表示。這是通過以下損失函數[1]來實作的。

使用譜聚類(spectral clustering)進行特征選擇

y向量是K維特征的表示。E函數懲罰相鄰表示之間的距離。我們與論文不同,将y按行而不是列堆疊,以便更容易地看到特征向量的坐标解釋。D是資料中特征的數量。

通過顯式地寫出這個和的項,可以很容易地看到這個問題實際上是一個軌迹最小化問題。

使用譜聚類(spectral clustering)進行特征選擇

對使用 D 矩陣縮放的 Y 施加正交限制,可以從與 K 個最小非零特征值相關聯的歸一化拉普拉斯算子的特征向量中獲得此優化問題的解 Y [1]。

使用譜聚類(spectral clustering)進行特征選擇

Y矩陣的初始定義是将表示疊加到行上,但這裡我們将特征向量疊加到列上,表明每個特征向量為表示增加一個次元。

我們最初的目标是将鄰接圖切割成小塊,其中每個小塊是一組獨立于其他小塊的特征。

這裡我們想用損失函數來模拟目标。是以假設有m個不相交的鄰接圖頂點子集,懲罰子集之間的交叉連接配接,也就是說,不希望一個子集中的頂點連接配接到另一個子集[1]中的頂點。

使用譜聚類(spectral clustering)進行特征選擇

這裡的F是符合目标的損失函數。分子在一個頂點的交叉連接配接上求和,用總的簇内連接配接歸一化。這裡可以将總和中的項解釋為給定子集的交叉連接配接與内部連接配接的比率。不相交的子集實際上就是要尋找的特征的譜簇。

下一步就是要證明拉普拉斯特征映射誤差F和E之間的相似性。對于特征(上面定義的V集)的給定劃分(聚類),定義一個矩陣Z,其形狀為(D, m)。

使用譜聚類(spectral clustering)進行特征選擇

該矩陣的清單示簇的元素。為了更清楚地說明這一點,這裡示範了當D = 4和m = 3時這個矩陣是怎樣的

使用譜聚類(spectral clustering)進行特征選擇

上圖隻是為了示範

函數F是

使用譜聚類(spectral clustering)進行特征選擇

這裡的L是上面定義的拉普拉斯矩陣。與拉普拉斯特征映射的軌迹恒等式相同,但限制條件不同。

這樣,我們将找到簇的問題變為找到一個最小化這條軌迹的上述形式的矩陣 Z。 盡管有相似性,但這與拉普拉斯特征圖不是同一個問題,因為 Z 的選擇僅限于上述形式。 如果不局限于這種形式,則Z的列一定是前m個特征向量。

為了放寬此限制并使用拉普拉斯特征圖的機制,并且觀察到 Z 矩陣的每一行都配置設定給一個簇,這與拉普拉斯特征映射類似,是以可以用Y矩陣代替Z, Y矩陣的行是K維特征的表示。是以要使用這兩個最小化問題之間的聯系,Z可以被認為是Y行的聚類版本。為了簡化問題,隻要設定Z等于與前m個非零最小特征值相關的前m個特征向量的堆棧,然後将其行聚類。

聚類步驟

取拉普拉斯算子的前 7 個特征向量來構造 Z,并采用分層聚類方法尋找Z行内的聚類。

使用譜聚類(spectral clustering)進行特征選擇

我們檢查樹圖,決定設定n_cluster = 6。這些特征簇是:

使用譜聚類(spectral clustering)進行特征選擇

這6個組都有有意義的解釋。

  • 第一個有點複雜,因為圖的中心有一個非常密集的區域但是可以看到投籃次數、罰球次數、PER、使用率和場均時間統計資料被收集在這裡,其他資料随着球員上場時間和進攻責任的增加而增加。是以可以得出結論,這個簇對應于進攻活動。
  • 第二個是組織能力,因為持球者通常有更高的失誤。
  • 第三個對應進攻效率。
  • 第四個隻有一個特征,表示球員的防守技巧
  • 第五個是籃闆能力。
  • 最後一個是球員的三分球技術。

這裡一個很好的發現是,我們的方法成功地區分了籃闆和防守技能。好的籃闆手并不總是好的防守(籃闆包含進攻和防守,而防守不僅僅隻有籃闆),但是他們之間可能存在相關性。

該方法可以說的确成功地找到了鄰接圖的分組

總結

本文中我們繪制了特征的鄰接圖,展示了如何通過拉普拉斯矩陣的行發現特征之間的公共相關性,并進行聚類。

作者:Yiğithan Gediz

繼續閱讀