我知道已经有一段时间了,但我会试一试,以防其他人提出这个问题。
假设我们有一个 2D 训练集来训练一个 SVM 模型,换句话说,特征空间是一个 2D 空间。我们知道核 SVM 模型会导致以下形式的得分(或决策)函数:
f(x) = sum i=1 to N ( a i y i k( x , x i )) + b
其中 N 是支持向量的数量,x i是第i个支持向量,a i是估计的拉格朗日乘数, y i是相关的类标签。决策函数的值(分数)以方式描述了观察x与决策边界的距离。
现在假设对于 2D 特征空间中的每个点 (X,Y),我们都可以找到决策函数的相应分数。我们可以在 3D 欧几里得空间中绘制结果,其中 X 对应于第一个特征向量f1的值,Y 对应于第二个特征f2的值,Z 对应于每个点 (X,Y) 的决策函数的返回。这个 3D 图形与 Z=0 平面的交点为我们提供了进入二维特征空间的决策边界。换句话说,假设决策边界由分数等于 0 的 (X,Y) 点形成。看起来合乎逻辑吧?
现在在 MATLAB 中,您可以轻松地做到这一点,首先在 X,Y 空间中创建一个网格:
d = 0.02;
[x1Grid,x2Grid] = meshgrid(minimum_X:d:maximum_X,minimum_Y:d:maximum_Y);
d根据所需的网格分辨率选择。
然后对于经过训练的模型SVMModel找到每个网格点的分数:
xGrid = [x1Grid(:),x2Grid(:)];
[~,scores] = predict(SVMModel,xGrid);
最后绘制决策边界
figure;
contour(x1Grid,x2Grid,reshape(scores(:,2),size(x1Grid)),[0 0],'k');
等高线为我们提供了一个 2D 图形,其中有关第 3 维的信息在 2D 平面中被描绘为实线。这些线表示等响应值,换句话说,具有相同 Z 值的 (X,Y) 点。在我们的场合,轮廓给了我们决策边界。
希望我能帮助让这一切更清楚。您可以在以下链接中找到非常有用的信息和示例:
MATLAB 的例子
3D 空间中决策函数的表示