在机器学习领域,支持向量机(Support Vector Machine,SVM)是一种非常强大的监督学习算法,它既可以用于分类问题,也可以用于回归问题。MATLAB提供了丰富的工具箱来方便用户调用SVM模型。本文将详细介绍如何在MATLAB中使用SVM进行分类和回归。
1. SVM简介
SVM算法的核心思想是找到一个最优的超平面,使得分类边界最大化。在二维空间中,这个超平面可以是一条直线,而在多维空间中,它可能是一个超平面或一个超球面。SVM通过最大化分类边界来提高模型的泛化能力。
1.1 分类与回归
- 分类:SVM将数据分为两个或多个类别,每个类别对应一个超平面。
- 回归:SVM用于预测连续值,通过找到一个最优的超平面来拟合数据。
2. MATLAB中调用SVM模型
2.1 分类
在MATLAB中,可以使用fitcsvm函数来训练SVM分类器。以下是一个简单的例子:
% 加载数据
data = load('ionosphere.mat');
X = data(:, 1:34);
y = data(:, 35);
% 训练SVM分类器
model = fitcsvm(X, y, 'KernelFunction', 'linear');
% 预测
y_pred = predict(model, X);
% 评估模型
accuracy = sum(y_pred == y) / numel(y);
disp(['Accuracy: ', num2str(accuracy)]);
2.2 回归
在MATLAB中,可以使用fitrsvm函数来训练SVM回归器。以下是一个简单的例子:
% 加载数据
data = load('winequality-red.mat');
X = data(:, 1:11);
y = data(:, 12);
% 训练SVM回归器
model = fitrsvm(X, y, 'KernelFunction', 'rbf');
% 预测
y_pred = predict(model, X);
% 评估模型
mse = mean((y_pred - y).^2);
disp(['MSE: ', num2str(mse)]);
3. 调整SVM参数
SVM模型的性能取决于多个参数,如核函数、正则化参数C、核函数参数等。在MATLAB中,可以使用trainOptions函数来调整这些参数。
% 设置SVM参数
options = trainOptions('KernelFunction', 'rbf', ...
'Standardize', true, ...
'MaxIter', 100, ...
'Optimize', 'seq', ...
'Scale', 'off', ...
'Shrink', 'on', ...
'Verbose', 'off', ...
'Display', 'final', ...
'Plots', 'training-progress');
% 训练SVM分类器
model = fitcsvm(X, y, options);
% 预测
y_pred = predict(model, X);
% 评估模型
accuracy = sum(y_pred == y) / numel(y);
disp(['Accuracy: ', num2str(accuracy)]);
4. 总结
MATLAB提供了丰富的工具箱来方便用户调用SVM模型。通过调整SVM参数,可以进一步提高模型的性能。希望本文能帮助您在MATLAB中使用SVM进行分类和回归。