python - 适合高维数据集的分类算法?

标签 python machine-learning

我有一个数据点较低但维度/特征非常高的数据集。我想知道是否有任何分类算法可以很好地处理此类数据集,而无需执行 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,如果它渐近能够:

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

存在三个假设,如果满足,则使套索oracle

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

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

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

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

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

PS:Lasso是弹性网的一个特例,我依稀记得弹性网的预言机特性也被证明了,但我可能是错的。 PPS:感谢指正,因为我已经很长时间没有研究这些东西了,可能有不准确的地方。

关于python - 适合高维数据集的分类算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55419156/

相关文章:

python - Tensorflow 图像分类 Python 总是说相同的答案

Python Scikit - LinearRegression 和 Ridge 返回不同的结果

r - R 中的神经网络公式

python - 使用边框从图像裁剪脸部

python - PyTorch:state_dict 和 parameters() 有什么区别?

python - CSV格式数据操作: why use python scripts instead of MS excel functions?

python - 使用 BeautifulSoup 通过 id 获取 div 的内容

python - 使用 Python 和 Selenium Webdriver 从文本区域获取文本(无值属性)

Python:修改 PATH 环境变量的平台无关方式

python - 机器学习: Getting error in Confusion Matrix