Matlab SVM-有效/无效';不适用于大范围的数字?

Matlab SVM-有效/无效';不适用于大范围的数字?,matlab,machine-learning,artificial-intelligence,svm,Matlab,Machine Learning,Artificial Intelligence,Svm,我一直在玩SVM,我偶然发现了一些有趣的东西 这可能是我做错了什么,因此我发表了评论和澄清的帖子 我有大约3000 x 30的数据集 每个值都在-100到100之间。另外,它们不是整数。它们是浮点数。它们分布不均匀 就像, 数字是-99.659,-99.758,-98.234,然后我们只有-1.234,-1.345这样的数字才能得到 因此,即使范围很大,数据也会聚集在某些点上,并且它们通常会因分数值的不同而不同。 (我认为,从我的阅读和理解来看,这在理想情况下不会影响SVM分类的准确性。如果我错

我一直在玩SVM,我偶然发现了一些有趣的东西

这可能是我做错了什么,因此我发表了评论和澄清的帖子

我有大约3000 x 30的数据集

每个值都在-100到100之间。另外,它们不是整数。它们是浮点数。它们分布不均匀

就像, 数字是-99.659,-99.758,-98.234,然后我们只有-1.234,-1.345这样的数字才能得到

因此,即使范围很大,数据也会聚集在某些点上,并且它们通常会因分数值的不同而不同。
(我认为,从我的阅读和理解来看,这在理想情况下不会影响SVM分类的准确性。如果我错了,请纠正我。请用“我是对的”或“我是错的”来评论这一点。

我的分类标签是0和1

然后,我取30 x 30的测试数据,尝试测试我的SVM

当内核函数作为mlp时,我得到了大约50%的精确度

在其他方法中,我只得到0和NaN作为结果,这很奇怪,因为输出中没有1,我不理解输出标签中的NaN

所以,mlp基本上给了我最好的结果,这也只是50%

然后我将该方法用作'QP','mlp'用作内核函数,代码已经运行了8个小时。我不认为,像3400 x 30这样小的东西会花那么多时间

所以问题是,对于我所拥有的数据,支持向量机是一个错误的选择吗?(如上所述)。 或者我遗漏了什么导致准确度显著下降

另外,我知道输入数据没有出错,因为我使用神经网络测试了相同的数据,并且能够获得非常好的精度


有没有办法让支持向量机工作?因为,从我在互联网上读到的,在这个标签决定问题上,支持向量机通常比神经网络工作得更好

听起来您可能遇到了一些数值稳定性问题,这些问题是由数据集群的小规模造成的(尽管我不确定为什么会这样:它真的不应该)。SVM作为一种算法不应该关心您所描述的分布:事实上,在正常情况下,当呈现如此明显分离的内容时,它应该做得相当好


要调查的一件事是,您的任何列是否具有非常强的相关性。由于性能原因,真正的强相关列组应该由单个列替换,并且我已经看到当遇到列中几乎完美的相关性时,实现在数值上变得不稳定。

听起来您可能遇到了一些数值稳定性问题,这些问题是由较小的数据量引起的集群(尽管我不确定为什么会这样:它真的不应该)。SVM作为一种算法不应该关心您所描述的分布:事实上,在正常情况下,当呈现如此明显分离的内容时,它应该做得相当好


要调查的一件事是,您的任何列是否具有非常强的相关性。由于性能原因,真正的强相关列组应该由单个列替换,并且我看到过当遇到列中几乎完美的相关性时,实现在数值上变得不稳定。

虽然独立功能很好,但毕竟算法不需要,我们事先说,我们不知道哪些特征会对数据产生影响。您正在扩展数据吗?另外,30个数据点对于创建一个训练集来说可能有点小。我们能看看你的代码吗?

虽然独立的功能很好,但算法并不需要,毕竟,我们事先说我们不知道哪些功能对数据有贡献。您正在扩展数据吗?另外,30个数据点对于创建一个训练集来说可能有点小。我们可以看看您的代码吗?

如果您有多个列有效地表示相同的数据,您能举一个小例子说明强相关是什么意思吗。例如,我遇到的数据库都记录了重量和体积,但测量结果都是相同的物质。这意味着我们可以从体积中得出重量。这并不能很好地利用处理器时间(性能方面的原因),它会导致一些算法产生无穷小,从而产生下溢条件。哦,好的。我将对此进行检查,但我怀疑是否存在此类列。另一种解释是,您使用的支持向量机存在固有的稳定性问题。如果您的数据像您描述的那样是一个清晰的集群,那么SVM在划分超平面时应该没有问题。紧密聚集的数据更容易分离,而不是更难分离。^这正是我感到困惑的原因。如果有什么区别的话,这应该是一个非常高的准确度!你说我使用的支持向量机有内在的稳定性问题是什么意思?我正在使用内置的MATLAB SVM。如何检查此稳定性问题?我的意思是,我是否可以进行某种测试来提示我这一点?你能举一个小例子说明什么是强相关吗?如果你有多个列有效地表示相同的数据。例如,我遇到的数据库都记录了重量和体积,但测量结果都是相同的物质。这意味着我们可以从体积中得出重量。这并不能很好地利用处理器时间(性能方面的原因),它会导致一些算法产生无穷小,从而产生下溢条件。哦,好的。我将对此进行检查,但我怀疑是否存在此类列。另一种解释是,您使用的支持向量机存在固有的稳定性问题。如果您的数据是清晰群集的