R 軟體 RandPro 套件: Random Projection 資料維度縮減

底下這篇論文顯示,不論是在有雜訊/無雜訊的影像維度縮減,或是大量文件比對相似性(Similarity)的誤差與計算複雜度,Random Projection 方法表現都非常的好。

Random projection in dimensionality reduction: Applications to image and text data

在文字探勘應用部分,作者比較的是兩篇文章在維度縮減前 vs. 維度縮減後的相似度計算誤差。

作者比較了 Random Projection vs. SRP,PCA,DCT,MF, 與 SVD 等維度降低方法,後面幾種的計算複雜度都頗高,而 Random Projection 只要產生一個隨機矩陣,再做一次矩陣相乘就搞定了。

我自己在作文字探勘「文件分類」的一些實務計算上,也發現 Random Projection 降低維度之後的資料,在文件分類的預測精確度,跟原來高維度的資料(數千、上萬個詞彙) 做出來的預測精確度差不多,這對於大量文件的快速文字探勘計算很有幫助。

R 軟體裡面的 Random Projection 套件是 RandPro

?View Code LANGUAGE
# 假設已經透過 tm 套件建立了 tdm 矩陣,e.g. 15000 個詞彙 x 4000 篇文章
 
tdm2 = as.matrix(tdm)
 
library(RandPro)
 
# 算出最低轉換維度 , 4000 為文章數量
find_dim_JL(4000,0.5)
# [1] 398
 
# 將 15000 個詞彙/變數縮減維度到 398 個變數
R2 = form_sparse_matrix(398,15000,FALSE) 
 
tdm3 = R2 %*% tdm2
 
dtm3 = t(tdm3) # 4000 篇文章 x 398 個變數
 
# 接下來這個 dtm3 就可以直接拿去做 clustering/classification