gpt4 book ai didi

matlab - 如何提高SVM的性能?

转载 作者:行者123 更新时间:2023-11-30 09:02:11 25 4
gpt4 key购买 nike

我使用 LIBSVM 和 MatLab 将 34x5 数据分为 3 类。我应用了10折Kfold交叉验证方法和RBF核。输出是正确率为 0.88(88% 准确度)的混淆矩阵。这是我的混淆矩阵

9   0   0
0 3 0
0 4 18

我想知道支持向量机内部需要考虑哪些方法来提高机器学习技术中的准确性或其他分类方法。有什么帮助吗?

这是我的 SVM 分类代码

load Turn180SVM1; //load data file
libsvm_options = '-s 1 -t 2 -d 3 -r 0 -c 1 -n 0.1 -p 0.1 -m 100 -e 0.000001 -h 1 -b 0 -wi 1 -q';//svm options

C=size(Turn180SVM1,2);

% cross validation
for i = 1:10
indices = crossvalind('Kfold',Turn180SVM1(:,C),10);
cp = classperf(Turn180SVM1(:,C));
for j = 1:10
[X, Z] = find(indices(:,end)==j);%testing
[Y, Z] = find(indices(:,end)~=j);%training


feature_training = Turn180SVM1([Y'],[1:C-1]); feature_testing = Turn180SVM1([X'],[1:C-1]);
class_training = Turn180SVM1([Y'],end); class_testing = Turn180SVM1([X'], end);
% SVM Training
disp('training');
[feature_training,ps] = mapminmax(feature_training',0,1);
feature_training = feature_training';
feature_testing = mapminmax('apply',feature_testing',ps)';
model = svmtrain(class_training,feature_training,libsvm_options);
%

% SVM Prediction
disp('testing');
TestPredict = svmpredict(class_testing,sparse(feature_testing),model);
TestErrap = sum(TestPredict~=class_testing)./length(class_testing)*100;
cp = classperf(cp, TestPredict, X);
disp(((i-1)*10 )+j);
end;
end;
[ConMat,order] = confusionmat(TestPredict,class_testing);
cp.CorrectRate;
cp.CountingMatrix;

最佳答案

存在许多方法。如果您的调整过程是最佳的(例如执行良好的交叉验证),您的选择包括:

  1. 改进预处理,或许可以根据领域知识定制新的聚合功能。最重要(也是最有效):确保您的输入正确标准化,例如将每个维度缩放到 [-1,1]。

  2. 使用其他内核:众所周知,RBF 内核在各种设置中都表现良好,但对于许多任务也存在专门的内核。除非您知道自己在做什么,否则不要考虑这一点。由于您正在处理低维问题,如果您的数据不是结构化的,RBF 可能是一个不错的选择。

  3. 重新衡量训练实例:当您的数据集不平衡时尤其重要(例如,某些类的实例比其他类少得多)。您可以使用 libsvm 中的 -wX 选项来执行此操作。存在各种重新加权方案,包括增强的变体。我不太喜欢这种方法,因为这种方法很容易过度拟合。

  4. 更改交叉验证成本函数以满足您的具体需求。准确度真的是您所追求的吗?或者您想要高准确度 F1或高ROC-AUC ?令人惊讶的是,有多少人优化了他们并不真正感兴趣的绩效指标。

关于matlab - 如何提高SVM的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18709495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com