我正在做一个项目,我使用 Spark Mllib 线性 SVM 对一些数据进行分类(l2 正则化)。我有 200 个正面观察和 150 个(生成的)负面观察,每个都有 744 个特征,代表一个人在房屋不同区域的活动水平。
我已经运行了一些测试,“areaUnderROC”指标是 0.991,看起来该模型在对我提供给它的数据进行分类方面做得很好。我做了一些研究,我发现线性 SVM 在高维数据中很好,但问题是我不明白线性的东西如何能如此好地划分我的数据。
我认为在 2D 中,也许这就是问题所在,但查看底部图像,我 90% 确信我的数据看起来更像是一个非线性问题
所以我在测试中取得好成绩是正常的吗?难道我做错了什么?我应该改变方法吗?
我认为您的问题是关于“为什么线性 SVM 可以很好地对我的高维数据进行分类,即使数据应该是非线性的”
某些数据集在低维中看起来像非线性,就像您右侧的示例图像一样,但实际上很难说数据集在高维上绝对是非线性的,因为 nD 非线性在 (n+1)D 空间中可能是线性的。所以我不知道为什么你 90% 确定你的数据集是非线性的,即使它是一个高维度的。
最后,我认为您在测试样本中获得良好的测试结果是正常的,因为它表明您的数据集在高维度上只是线性或接近线性的,否则效果不佳。也许交叉验证可以帮助您确认您的方法是否合适。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句