高維組合特徵在處理時,如何將高維特徵用低維的k維向量表示?
在百面機器學習一書中,第一章特徵工程中的第三節高維組合特徵處理,有2個一階離散特徵,每個特徵的可選擇類別分別為m和n,如果進行常規組合特徵,可以得到的m*n個組合特徵,在m和n非常大的情況下,會使得模型的參數非常龐大(例如邏輯回歸),因此需要對高維組合特徵進行處理。
書中提到將這兩個特徵分別用低維的k維向量表示,這裡具體是如何表示?如此處理,模型參數會從m*n減少到m*k+n*k,這又是如何得到的?
這裡貼出百面機器學習知乎上的電子書:https://www.zhihu.com/pub/book/119582175
謝謝大家!
poly2-》fm
利用矩陣分解 將m*n的矩陣分解為一個m*k和一個k*n的矩陣乘積
PCA和全連接都可以
降維可以嗎?傳統的pca,或者dl裏用一個小一點的全連接層fine tune一下
特意去了翻了一下紙質書,其實書中(1.4)的公式下面第三行已經說了,「熟悉推薦系統的同學應該看出這個就等價於矩陣分解」。設這個原始的高維稀疏矩陣是 ,需求就是要找到兩個低維稠密矩陣 和 ,使得:
這樣就等於我們用兩個參數量為m*k的矩陣P以及n*k的矩陣Q,來近似表示原來有m*n個參數的矩陣R。
求解兩個低維矩陣P,Q參數的過程用到了機器學習的方法,用恢復最小誤差作為目標函數,具體的求解過程你可以去搜索關鍵詞 推薦系統的Matrix Factorization。
當然,高維稀疏特徵的低維表示除了文中提到的這種方法,還有SVD,NMF等等,也可以去搜索相應的關鍵詞。
特徵降維其實從大的方面來講有兩種思路可以走:
- 基於原有的特徵進行降維
- 基於原有的特徵進行篩選
第一種降維方法中,常見的有:PCA、LDA、SVD、稀疏自編碼、word2vec等
第二種篩選的方法主要是對原有特徵和目標label進行重要性分析,將那些不重要的特徵進行剔除,比如使用gbdt、random forest等模型進行簡單的模型訓練,並輸出特徵的權重,繼而進行篩選
但有時為了能更有效地找出輸入數據內部的結構和模式,會尋找一組超完備基向量,其維度可能比輸入的特徵維度還要高。
補充一下特徵降維的好處:
- 數據維度降低,存儲所需的空間減少
- 減少計算和訓練模型的時間
- 剔除無用或關係不大的特徵,減小對模型的影響,提高模型可用性
- 刪除冗餘特徵(比如某幾維特徵存在多重共線性)
- 便於數據可視化
更多關於演算法和特徵方面的知識可以關注我的公眾號進行技術交流。
http://mp.weixin.qq.com/mp/homepage?__biz=MzI2MDU3OTgyOQ==hid=1sn=8fd2e718341c2dfb59493084c3ed7a76scene=18#wechat_redirect?mp.weixin.qq.comPCA,SVD等傳統降維方法,當然DNN也可以幹這個事
類似於fm模型,將每個特徵處理為低維特徵
推薦閱讀: