【问题标题】:Classification algorithms that work well with high dimensional dataset?分类算法适用于高维数据集?
【发布时间】:2019-08-20 11:55:03
【问题描述】:

我有一个数据点少但维度/特征非常高的数据集。我想知道是否有任何分类算法可以很好地处理此类数据集,而无需执行 PCA、TSNE 等降维技术?

df.shape
(2124, 466029)

【问题讨论】:

  • 线性支持向量机也是一种选择

标签: python machine-learning


【解决方案1】:

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

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

一种更好的方法(恕我直言)是使用ridge-regression, lasso, or elastic net 进行正则化,但是请注意,它们的预言属性在实践中很少得到满足。

最后,有一些算法能够处理大量的预测变量(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:Lasso 是弹性网的一个特例,我依稀记得弹性网的预言属性也被证明过,但我可能错了。 PPS:感谢指正,因为我很久没有研究这些东西了,可能会有不准确的地方。

【讨论】:

  • 你能解释一下oracle properties的意思吗?
【解决方案2】:

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

【讨论】:

  • 谢谢,我试试看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-28
  • 1970-01-01
  • 2016-09-12
相关资源
最近更新 更多