Random Projection在k-means的應用
1. 隨機投影 (Random Projection)
首先,這是一種降維方法。之前已經介紹過相對普遍的PCA的降維方法,這裡介紹另一種降維方法Random Project。相比於PCA,他的好處可以這樣說:
Random Projection與PCA不一樣,其操作簡單,只要構建一個投影矩陣即可,而PCA降維還要做SVD,計算開銷比較大
1.1 Brief Introduction
隨機投影的理論依據是 ofollow,noindex" target="_blank">J-L Lemma ,公式的核心思想總結一句話就是: 在高維歐氏空間裡的點集對映到低維空間裡相對距離得到某誤差範圍內的保持 。至於為什麼要保持,主要是很多機器學習演算法都是在以利用點與點之間的距離資訊展開計算分析的(如k-means)。
1.2 Johnson–Lindenstrauss lemma
其實並不想這麼數學,但是這麼重要的定理不說不行。
定理表示:對於任意一個樣本大小為 m 的集合,如果我們通過隨機投影將其維度降到一個合適的範圍 \(n>8ln(m)/ \epsilon^2\) 內,那麼我們將以較高的概率保證投影后的資料點之間的距離資訊變化不大。這樣我們在做K-mean之類的演算法時,就可以先將高維度的資料利用隨機投影進行降維處理,然後在執行演算法。
式中, \(f\) 為投影到n維空間的正交投影。顯然,這樣的正交投影操作通常會減少樣本點之間的平均距離。但是該定理Lemma可以看成這樣操作:首先,你通過演算法獲得隨機投影,這可能減少平均距離,然後您scale up距離,以便平均距離返回到其先前的值。 這個操作將不再是一個NP-hard問題,時間複雜度降為多項式複雜度。
1.3 Method
介紹完JL Lemma,接下來就很簡單了。如果 \(X_{d \times N}\) 是d維的原始樣本矩陣,那麼 \(X^{RP}_{k \times N} = R_{k\times d}X_{d \times N}\) 是降維後的k維樣本矩陣。這個計算過程十分簡單,生成隨機矩陣 \(R\) 且將 \(X\) 對映從 \(d\) 為到 \(k\) 維空間中的時間複雜度為 \(O(nkd)\) 。
1.4 高斯隨機投影 Gaussian random projection
可以使用高斯分佈生成隨機矩陣 \(R\) 。第一行是從 \(S ^ {d-1}\) 均勻選擇的隨機單位向量。 第二行是來自與第一行正交的空間的隨機單位向量,第三行是來自與前兩行正交的空間的隨機單位向量,依此類推。 在這種選擇 \(R\) 的方式中, \(R\) 是正交矩陣(其轉置的倒數),並且滿足以下屬性:
- 球對稱(Spherical symmetry):對於任何正交矩陣 \(A \in O(d)\) , \(RA\) 和 \(R\) 具有相同的分佈。
- 正交性:R的行彼此正交。
- R的行是單位長度向量。
要討論高斯隨機投影為什麼有效,我們需要先來討論下一個核心問題,高斯投影是否可以從理論上保證投影降維前後,資料點的空間分佈距離基本保持不變呢?這個問題其實可以等價於證明另一個問題,即高斯投影能否做到將高維空間的點均勻的投影到低維空間中,如果能做到這一點,那麼我們也可以證明其具備“投影降維前後,資料點的空間分佈距離基本保持不變”的能力。
我們來考慮一個取樣問題,就是怎樣在高維單位球體的表面上均勻的取樣。首先,考慮二維的情況,就是在球形的周長上取樣。我們考慮如下方法:第一,先在一個包含該圓形的外接正方形內均勻的取樣;第二,將取樣到的點投影到圓形上。具體地說就是,第一,先獨立均勻的從區間[−1,1](我們假設圓形跟正方形的中心點都在原點)內產生兩個值組成一個二維的點(x1,x2);第二,將該二維點投影到圓形上。例如,如下圖所示,如果我們產生點是圖中的A,B兩點,那麼投影到圓形上就是C點,如果產生的是點D,那麼投影到圓形上就是E點。但是,用這樣的方法得到點在圓形上並不是均勻分佈的,比如產生C點的概率將大於產生E點概率,因為可以投影到C點對應的那條直線比E點對應的那條直線要長。解決的辦法是去掉圓形外面的點,也就是如果我們首先產生的點在圓形外的話(比如點B),那麼我們就丟棄該點,重新在產生,這樣的話產生的點在圓形上是均勻分佈的。
那麼,我們能否將此方法擴充套件到高維的情況下呢?答案是不行的。因為在高維的情況下球與正方體的體積比將非常非常小,幾乎接近於零。也就是我們在正方體內產生的點幾乎不可能落到球體內部,那麼也就無法產生有效的點。那麼,在高維的球體上,我們應該怎樣才能產生一個均勻分佈與球體表面的點呢?答案是利用高斯分佈。即將上述第一步改成:以均值為零方差為1的高斯分佈獨立地產生d個值,形成一個d維的點x=(x1,x2,⋯,xd);然後第二步:將點x歸一化x̃ =x/‖x‖。用這種方法產生點必定均勻分佈在高維球體表面。
2. Random Projection在k-means中的應用
對於k-means來說,將樣本劃分為距離最近的一個聚簇,這個過程可以使用下面的式子來表示:
每個資料點樣本都要和聚簇中心做一次上述操作,所以一次迭代過程中計算複雜度為 , 是 指 樣本 維度。觀察上面的式子,
的計算是可以預先完成的,
可以在每次迭代時預先計算好,而不必對每個樣本都計算一次。所以更新的關鍵操作就是
的計算,即計算資料樣本矩陣
和 聚簇 中心
的內積
。所以我們可以想辦法在樣本矩陣上做操作來減小計算的複雜度。
這時候,隨機投影的降維操作就派上了用場,下圖是隨機投影在隨機投影在k-means上操作的流程: