Random Projection在k-means的應用
1. 隨機投影 (Random Projection)
首先,這是一種降維方法。之前已經介紹過相對普遍的PCA的降維方法,這里介紹另一種降維方法Random Project。相比於PCA,他的優勢可以這樣說:
Random Projection與PCA不一樣,其操作簡單,只要構建一個投影矩陣即可,而PCA降維還要做SVD,計算開銷比較大
1.1 Brief Introduction
隨機投影的理論依據是J-L Lemma,公式的核心思想總結一句話就是:在高維歐氏空間里的點集映射到低維空間里相對距離得到某誤差范圍內的保持。至於為什么要保持,主要是很多機器學習算法都是在以利用點與點之間的距離信息展開計算分析的(如k-means)。
1.2 Johnson–Lindenstrauss lemma
其實並不想這么數學,但是這么重要的定理不說不行。
定理表示:對於任意一個樣本大小為m的集合,如果我們通過隨機投影將其維度降到一個合適的范圍 n>8ln(m)/ϵ2n>8ln(m)/ϵ2 內,那么我們將以較高的概率保證投影后的數據點之間的距離信息變化不大。這樣我們在做K-mean之類的算法時,就可以先將高維度的數據利用隨機投影進行降維處理,然后在執行算法。
上式中,ff為投影到n維空間的正交投影。顯然,這樣的正交投影操作通常會減少樣本點之間的平均距離。該定理Lemma可以看成這樣操作:首先,你通過算法獲得隨機投影,這可能減少平均距離,然后你scale up這個距離,以便平均距離返回到其先前的值。 這個操作將不再是一個NP-hard問題,時間復雜度降為多項式復雜度。
1.3 Method
介紹完JL Lemma,接下來就簡單了。如果Xd×NXd×N 是d維的原始樣本矩陣,那么XRPk×N=Rk×dXd×NXk×NRP=Rk×dXd×N是降維后的k維樣本矩陣。這個計算過程十分簡單,生成隨機矩陣RR且將XX映射從dd為到kk維空間中的時間復雜度為O(nkd)O(nkd)。
1.4 高斯隨機投影 Gaussian random projection
可以使用高斯分布生成隨機矩陣 RR。隨機矩陣的第一行是從Sd−1Sd−1均勻選擇的隨機單位向量,第二行是來自與第一行正交的空間的隨機單位向量,第三行是來自與前兩行正交的空間的隨機單位矢量,依此類推。 在這種選擇 RR 的方式中,RR 是正交矩陣(其轉置的倒數),並且滿足以下屬性:
- 球對稱(Spherical symmetry):對於任何正交矩陣A∈O(d)A∈O(d),RARA 和 RR 具有相同的分布。
- 正交性: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上操作的流程:
Reference: