我有一个数据点较低但维度/特征非常高的数据集。我想知道是否有任何分类算法可以很好地处理此类数据集,而无需执行 PCA、TSNE 等降维技术?
df.shape
(2124, 466029)
最佳答案
这是经典的维数灾难(或 p>>n
)问题(p
是预测变量的数量,n
是观察次数)。
已经开发了许多技术来尝试解决这个问题。
您可以随机限制变量(选择不同的随机子集),然后使用cross-validation评估它们的重要性。 .
更好的方法(恕我直言)是使用 ridge-regression, lasso, or elastic net对于正则化,但要注意,它们的预言特性在实践中很少得到满足。
最后,有一些算法能够处理大量的预测变量(并且在其实现中 tweaks 可以提高 p>>n 时的性能)。
此类模型的示例包括支持向量机或随机森林。
有关该主题的许多资源都是免费提供的。
你可以看看这些slides以杜克大学为例。
Oracle 属性(Lasso)
我不会以合理的数学方式进行解释,但我会简要地给您一些直觉。
Y= dependent variable, your target
X= regressors, your features
ε= your errors
我们定义一个收缩过程oracle,如果它渐近能够:
- 确定回归量的正确子集(即仅保留与因变量具有真正因果关系的特征。
- 具有最佳估算率(我将省略详细信息)
存在三个假设,如果满足,则使套索oracle。
- Beta-min 条件:“真实”回归量的系数高于特定阈值。
- 您的回归变量彼此不相关。
- X 和 ε 呈正态分布且同方差
实际上,这些假设很少得到满足。
在这种情况下,您的收缩不一定会保留正确的变量。
这意味着您无法对最终模型做出统计上合理的推断(您不能说 X_1
由于这个原因和其他原因解释了 Y)。
直觉很简单。如果不满足假设 1,则可能会错误地删除真实变量之一。如果不满足假设 2,则与真实变量之一高度相关的变量可能会被错误地保留,而不是正确的变量。
总而言之,如果您的目标是预测,您不必担心。你的预测仍然会很好!唯一的区别是,从数学上讲,您不能再说您正在以概率 -> 1 选择正确的变量。
PS:Lasso是弹性网的一个特例,我依稀记得弹性网的预言机特性也被证明了,但我可能是错的。 PPS:感谢指正,因为我已经很长时间没有研究这些东西了,可能有不准确的地方。
关于python - 适合高维数据集的分类算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55419156/