关于数据挖掘中的Multicollinearity问题和时间序列预测

最近在学习Kaggle上关于预测俄罗斯地产价格的比赛。

这个比赛用到的数据集里,零零总总共有300多个特征,其中有不少特征高度相关,即Multicollinearity。面对这个问题,不少Kernel做了特征选择,有基于VIF去除高度相关特征的,有用PCA降维的。

此外,这个比赛的另一个难点在于,这是时间序列预测。

针对这几个方面(multicollinearity,特征选择,数据挖掘算法下的时间序列预测),我脑子里出现了一些疑问,并试着对这些疑问进行了解答。

以下是我关于这些问题和其答案的简要记录(不详细展开了,权当存档,方便以后回忆和进一步学习)。

Q1

XGBoost(或者说tree-based模型)可以处理collinearity,为什么还要做特地在建模前做特征选择/降维?

  • 防止过拟合,减少variance
  • 改善性能,节省存储和计算开销
  • 更好的模型可解释性

Q2

Feature engineering中主要的特征选择方法有哪些?

  • Filter:比如通过分析相关系数、variance选取特征
  • Wrapper:如Backward feature selection, RFE
  • Embedded:在模型训练过程中完成特征选择,包括基于树模型的特征选择法(DT算法每次都优先选择分类能力最强的特征),和基于惩罚项的特征选择法(如在LR算法中加入l1、l2范数)
  • Decomposition:PCA、LDA等,通过减少特征数来减少噪音和冗余、减少过度拟合的可能性(这篇解释PCA的文章写得很不错)

Q3

在数据挖掘/机器学习中,怎么处理time series forecasting问题?

  • 如果input足够多,像非time series data那样做就行,有自相关(autocorrelation)问题时加lag

Q4

Time series问题怎么处理multicollinearity?

  • 和multiple regression处理方法同理,或者用数据挖掘/机器学习特征选择的方法

以上。

你可能感兴趣的:(关于数据挖掘中的Multicollinearity问题和时间序列预测)