我有一个数据点较少但维度/特征非常高的数据集。我想知道是否有任何分类算法能够在不需要进行降维技术(如PCA、TSNE)的情况下,处理这样的数据集?
df.shape(2124, 466029)
回答:
这是经典的维度灾难(或p>>n
)问题(其中p
是预测变量的数量,n
是观测值的数量)。
许多技术被开发出来试图解决这个问题。
你可以随机限制你的变量(你选择不同的随机子集),然后使用交叉验证来评估它们的重要性。
我个人认为更可取的方法是使用岭回归、Lasso或弹性网进行正则化,不过要注意它们的oracle属性在实践中很少能满足。
最后,有一些算法能够处理非常多的预测变量(以及在p>>n
时改进性能的调整)。
此类模型的例子包括支持向量机或随机森林。
关于这个话题有许多免费的资源。
你可以查看来自杜克大学的这些幻灯片作为例子。
Oracle属性(Lasso)
我不会以严谨的数学方式解释,但我会简要地给你一些直觉。
Y= 因变量,你的目标 X= 回归变量,你的特征 ε= 你的误差
如果一个收缩过程在渐进上能够做到以下两点,我们就称之为oracle:
- 识别出正确的回归变量子集(即仅保留那些与你的因变量有真正因果关系的特征)。
- 具有最优的估计率(我就不详细说明了)。
有三个假设,如果满足了,这些假设会使Lasso成为oracle。
- Beta-min条件:”真实”回归变量的系数高于某个阈值。
- 你的回归变量彼此之间不相关。
- X和ε是正态分布的且同方差
在实践中,这些假设很少能被满足。
在这种情况下,你的收缩过程不一定会保留正确的变量。
这意味着你无法对最终模型进行统计上合理的推断(你不能说X_1
因为这个或那个原因解释了Y)。
直觉很简单。如果假设1不满足,那么一个真实变量可能会被错误地移除。如果假设2不满足,那么一个与某个真实变量高度相关的变量可能会被错误地保留而不是正确的那个变量。
总的来说,如果你的目标是预测,你不必担心。你的预测仍然会很好!唯一的区别是,从数学上讲,你不能再声称你以概率->1选择了正确的变量。
PS:Lasso是弹性网的一个特例,我隐约记得弹性网的oracle属性也被证明了,但我可能记错了。PPS:欢迎更正,因为我已经很久没有研究这些东西了,可能会有不准确之处。