【问题标题】:How do you know if your dataset suffers from high-dimensionality problems?您如何知道您的数据集是否存在高维问题?
【发布时间】:2020-06-04 08:12:24
【问题描述】:

似乎有许多降低维度的技术(pca、svd 等)以逃避维度的诅咒。但是你怎么知道你的数据集实际上存在高维问题?是否有最佳实践,例如可视化,或者甚至可以使用 KNN 来找出答案?

我有一个包含 99 个特征和 1 个连续标签(价格)和 30 000 个实例的数据集。

【问题讨论】:

    标签: python machine-learning dimensionality-reduction


    【解决方案1】:

    维度诅咒是指决定特征维度与数据大小之间关系的问题。有人指出,随着您的特征大小/维度的增长,为成功建模您的问题所需的数据量也将呈指数级增长。

    当您的数据呈指数增长时,问题就真正出现了。因为您必须考虑如何正确处理它(需要存储/计算能力)。 所以我们通常会尝试找出问题所需的正确尺寸(可能使用交叉验证),然后只选择那些特征。另外,请记住,使用大量特征会带来很高的过拟合风险。

    您可以使用特征选择或特征提取进行降维。LASSO 可用于特征选择或 PCA、LDA 进行特征提取。

    【讨论】:

    • 是的,谢谢,我知道这一点。但是您进行了哪些实验和可视化?还是我只是知道在评估最终模型的子集时比较准确性和运行时间存在维度问题?
    • 我已经提到了交叉验证方法来为您的问题选择相关功能。这意味着,您可以使用特征子集运行您的实验,并使用交叉验证查看您的模型是如何工作的。您可能会考虑在每个选择的特征上绘制准确性,并查看哪一个最适合您。如果你想看一个例子:sklearn feature elimination
    • 好的。假设您使用 CV 进行 RFE,然后最终得到一个较小的子集,使您的模型性能更好,您怎么知道这是由于常见的维度问题(例如数据变得稀疏和更加极端)造成的?难道不只是消除了一些噪音吗?
    • 我认为您还没有清除交叉验证的概念。交叉验证本身消除了嘈杂的数据,因为我们使用三个不同的子集(训练/验证/测试集)和 k 折验证在不同的集上运行,创建不同的代理模型,从而更准确地估计您的模型性能,丢弃数据中的噪音。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 2013-10-29
    相关资源
    最近更新 更多