Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab LibSVM的奇怪行为_Matlab_Classification_Libsvm - Fatal编程技术网

Matlab LibSVM的奇怪行为

Matlab LibSVM的奇怪行为,matlab,classification,libsvm,Matlab,Classification,Libsvm,我经常通过对两个完全相同的法线(或者更精确地说:从相同的基础分布中提取的两个数据样本)或两个明显可分离的法线进行分类来测试分类器。然而,当使用非常简单的LibSVM代码和rbf核时,即使尝试对两个几乎相同的法线进行分类,结果仍然具有非常高的分类精度: clear all; close all; clc gamma = 100; % dummy data a = 15; b = 50; x = zeros(200,2); x(1:100,1) = a.*randn(100,1)

我经常通过对两个完全相同的法线(或者更精确地说:从相同的基础分布中提取的两个数据样本)或两个明显可分离的法线进行分类来测试分类器。然而,当使用非常简单的LibSVM代码和rbf核时,即使尝试对两个几乎相同的法线进行分类,结果仍然具有非常高的分类精度:

clear all; close all; clc


gamma = 100;

% dummy data    

a = 15;
b = 50;

x = zeros(200,2);

x(1:100,1) = a.*randn(100,1) + b;
x(101:200,1) = a.*randn(100,1) + b;

% labels    

y(1:100,1) = 1;
y(101:200) = 2;


% Libsvm options
% -s 0 : classification
% -t 2 : RBF kernel
% -g : gamma in the RBF kernel

model = svmtrain(y, x, sprintf('-s 0 -t 2 -g %g', gamma));

% Display training accuracy
[predicted_label, accuracy, decision_values] = svmpredict(y, x, model);
为什么呢?使用Matlab的svmtrain,无论我使用哪个内核,我都能获得机会级别的精度(大约50%)。此外,LibSVM为我自己的数据集提供了极为不同的结果,即使我随机交换数据集的标签,也能获得非常高的精确度


谢谢

使用rbf核,您应该可以获得非常高的训练精度。您所需要的只是足够高的C和gamma,并且您可以过度拟合任何数据集(即使数据点来自相同的分布,因为连续分布中实际绘制到相同数据点的概率为0)。谢谢,您说得对,将gamma和C设置为默认值,使我获得了与LIBSVM相同的数据以及大约50%的准确度……因此这是一个过度拟合的情况。但是我自己的数据仍然存在类似的问题:Matlab的默认SVM对线性分类的准确率为100%,对多项式或rbf分类的准确率为50%,尽管Libsvm给了我100%的准确度,不管是哪个内核,我对两个工具箱都使用相同的参数设置。这怎么可能呢?您对这两个工具箱都使用相同或默认的参数设置?每个工具箱都有不同的默认值。它们也有一些默认的预处理,可以有效地改变超参数的含义。Lynomial的参数比度多。有一个尺度和偏差,你应该得到非常高的训练精度与径向基函数核。您所需要的只是足够高的C和gamma,并且您可以过度拟合任何数据集(即使数据点来自相同的分布,因为连续分布中实际绘制到相同数据点的概率为0)。谢谢,您说得对,将gamma和C设置为默认值,使我获得了与LIBSVM相同的数据以及大约50%的准确度……因此这是一个过度拟合的情况。但是我自己的数据仍然存在类似的问题:Matlab的默认SVM对线性分类的准确率为100%,对多项式或rbf分类的准确率为50%,尽管Libsvm给了我100%的准确度,不管是哪个内核,我对两个工具箱都使用相同的参数设置。这怎么可能呢?您对这两个工具箱都使用相同或默认的参数设置?每个工具箱都有不同的默认值。它们也有一些默认的预处理,可以有效地改变超参数的含义。Lynomial的参数比度多。还有一个规模和偏见