最近在學習Kaggle上關于預測俄羅斯地產價格的比賽。
這個比賽用到的數(shù)據(jù)集里,零零總總共有300多個特征,其中有不少特征高度相關,即Multicollinearity。面對這個問題,不少Kernel做了特征選擇,有基于VIF去除高度相關特征的,有用PCA降維的。
此外,這個比賽的另一個難點在于,這是時間序列預測。
針對這幾個方面(multicollinearity,特征選擇,數(shù)據(jù)挖掘算法下的時間序列預測),我腦子里出現(xiàn)了一些疑問,并試著對這些疑問進行了解答。
以下是我關于這些問題和其答案的簡要記錄(不詳細展開了,權當存檔,方便以后回憶和進一步學習)。
Q1
XGBoost(或者說tree-based模型)可以處理collinearity,為什么還要做特地在建模前做特征選擇/降維?
- 防止過擬合,減少variance
- 改善性能,節(jié)省存儲和計算開銷
- 更好的模型可解釋性
Q2
Feature engineering中主要的特征選擇方法有哪些?
- Filter:比如通過分析相關系數(shù)、variance選取特征
- Wrapper:如Backward feature selection, RFE
- Embedded:在模型訓練過程中完成特征選擇,包括基于樹模型的特征選擇法(DT算法每次都優(yōu)先選擇分類能力最強的特征),和基于懲罰項的特征選擇法(如在LR算法中加入l1、l2范數(shù))
- Decomposition:PCA、LDA等,通過減少特征數(shù)來減少噪音和冗余、減少過度擬合的可能性(這篇解釋PCA的文章寫得很不錯)
Q3
在數(shù)據(jù)挖掘/機器學習中,怎么處理time series forecasting問題?
- 如果input足夠多,像非time series data那樣做就行,有自相關(autocorrelation)問題時加lag
Q4
Time series問題怎么處理multicollinearity?
- 和multiple regression處理方法同理,或者用數(shù)據(jù)挖掘/機器學習特征選擇的方法
以上。