【发布时间】:2019-08-20 11:55:03
【问题描述】:
我有一个数据点少但维度/特征非常高的数据集。我想知道是否有任何分类算法可以很好地处理此类数据集,而无需执行 PCA、TSNE 等降维技术?
df.shape
(2124, 466029)
【问题讨论】:
-
线性支持向量机也是一种选择
我有一个数据点少但维度/特征非常高的数据集。我想知道是否有任何分类算法可以很好地处理此类数据集,而无需执行 PCA、TSNE 等降维技术?
df.shape
(2124, 466029)
【问题讨论】:
这是经典的维度诅咒(或p>>n)问题(p 是预测变量的数量,n 是观察的数量)。
已经开发了许多技术来尝试解决这个问题。
您可以随机限制变量(选择不同的随机子集),然后使用 cross-validation 评估它们的重要性。
一种更好的方法(恕我直言)是使用ridge-regression, lasso, or elastic net 进行正则化,但是请注意,它们的预言属性在实践中很少得到满足。
最后,有一些算法能够处理大量的预测变量(tweaks 在它们的实现中可以提高 p>>n 时的性能)。
此类模型的示例是支持向量机或随机森林。
有很多关于这个主题的资源,可以免费获得。
你可以看看这些来自杜克大学的slides。
我不会用合理的数学方式解释,但我会简要地给你一些直觉。
Y= dependent variable, your target
X= regressors, your features
ε= your errors
我们定义一个收缩过程oracle,如果它能够渐近:
如果满足三个假设,则制作套索oracle。
在实践中,您很少能满足这些假设。
在这种情况下,您的收缩不一定会保留 right 变量。
这意味着您无法对最终模型做出统计上合理的推断(您不能说 X_1 解释了 Y 出于这个和这个其他原因)。
直觉很简单。如果不满足假设 1,则可能会错误地删除其中一个真实变量。如果不满足假设 2,则与真实变量之一高度相关的变量可能会被错误地保留,而不是正确的。
总而言之,如果您的目标是预测,您不必担心。你的预测还是不错的!唯一的区别是,从数学上讲,您不能再说您正在以概率 -> 1 选择正确的变量。
PS:Lasso 是弹性网的一个特例,我依稀记得弹性网的预言属性也被证明过,但我可能错了。 PPS:感谢指正,因为我很久没有研究这些东西了,可能会有不准确的地方。
【讨论】:
oracle properties的意思吗?
您可以尝试套索/岭/弹性网络逻辑回归。
【讨论】: