适用于高维数据集的分类算法?

时间:2019-03-29 14:03:43

标签: python machine-learning

我有一个数据点少但数据量大/功能高的数据集。我想知道是否有任何分类算法可以很好地处理此类数据集,而无需执行降维技术,例如PCA,TSNE?

df.shape
(2124, 466029)

2 个答案:

答案 0 :(得分:1)

您可以尝试套索/岭/弹性网逻辑回归。

答案 1 :(得分:1)

这是维数(或p>>n)问题的经典诅咒(p是预测变量的数量,n是观测数量的数量)。

已开发出许多技术来尝试解决此问题。
您可以随机限制变量(选择不同的随机子集),然后使用cross-validation评估其重要性。

更可取的方法(imho)是使用ridge-regression, lasso, or elastic net进行正则化,但是请注意,实际上它们的oracle属性很少满足。

最后,有些算法可以处理大量的预测变量(并且在实现中使用tweaks可以提高p >> n时的性能)。
支持向量机或随机森林就是这类模型的例子。

该主题上有很多资源,可以免费获得。
例如,您可以查看杜克大学的slides

Oracle属性(套索)

我不会以合理的数学方式进行解释,但我会简要地给您一些直觉。

Y= dependent variable, your target  
X= regressors, your features  
ε= your errors

我们定义一个收缩过程 oracle ,如果它能够渐近地做到:

  1. 确定回归变量的正确子集(即,仅保留与因变量具有真正因果关系关系的要素。
  2. 具有最佳估算率(我将省略细节)

有三个假设,如果满足,则将套索设为 oracle

  1. Beta-min条件:“真实”回归变量的系数高于某个阈值。
  2. 您的回归变量彼此不相关。
  3. X和ε是正态分布且同构的

实际上,您很少满足这些假设。

在这种情况下,发生的情况是收缩量不一定会保留 right 变量。
这意味着您不能对最终模型进行统计上合理的推断(由于这个原因和其他原因,您不能说X_1解释了Y)。

直觉很简单。如果不满足假设1,则可能会错误地删除其中一个真实变量。如果不满足假设2,则可能会错误地保留与真实变量之一高度相关的变量,而不是正确的变量。

总而言之,如果您的目标是预测,则不必担心。您的预测仍然会很好!唯一的区别是,在数学上您不能再说选择概率为-> 1的正确变量了。

PS:套索是弹性网的特例,我隐约记得弹性网的预言性也得到了证明,但我可能是错的。 PPS:感谢我很长时间没有研究这些内容,并且可能存在不正确之处,因此进行了更正。