这是小弟的第一篇技术博客,功力尚浅,写的不准确不专业的地方,还请各位同仁,多多包涵。
blog归正传。
Kernel是什么,几乎没有一本机器学习或模式识别的书,Kernel思想及应用不是贯穿全书,也就是说Kernel思想刷新了模式识别的许多经典算法(下面会说到,只要涉及空间的变换、涉及内积的运算,都是Kernel大展身手的舞台)。
不卖关子,如title所说,核机制:更高维空间内积的快速计算。也就是说,核机制的本质是计算内积(只不过这里参与内积运算的两点属于更高维的空间)。
如果数据在当前空间中不是线性可分的,则需做transform,将数据变换到更高的维度空间中。
也就是:
Kernel = transform + inner product
Kernel机制的必要性和有效性可通过对比传统的高维空间计算内积的方法显现。
传统的方法要分两步,
核的方法:
一切从SVM对偶问题的标准型说起。
核机制真正进入人们的视野是用作为简化SVM最优化问题的工具(kernel trick)提出。我们来看SVM的对偶问题:
现在我们来考察,核机制是如何不经历升维变换便可直接计算对应高维空间的内积的。
我们以二阶多项式核变换为例(假设原始数据属于 Rd 空间):
从理论到应用,不可逾越的鸿沟还是一层窗户纸?
这里不妨扯个闲篇,或者我站着说话不腰疼,为什么从数学家们推导出来的理论到实现出来,其实只隔着一层窗户纸呢?这里只举一例,压缩感知,压缩过程(compressing phase)的实现,只需对原始矩阵左乘一个 Φ 矩阵,当然这里的 Φ 需要满足一定的性质,具体哪些性质、这些性质怎么来的,这是数学家们的工作。如果不对理论进行更多的探索,而是直接使用现成的结论的话,从原始的数据域转换 P 到压缩域 X ,只需简单的一步(RP,random projection):
如何从压缩域(也就是观测数据)以高概率重构出原始数据,就是另外的话题了,这也是压缩感知关注的唯二的重点。
本文的主角是Kernel机制,而不是如何解SVM优化问题。为了说明问题,这里采用最为原始的二次规划(solver:Quadratic Programming,QP)解SVM问题,并将高斯核函数应用其中。
在写代码之前,先考虑如何将原始SVM对偶问题适配(adapt)matlab QP二次规划工具箱函数。
原始SVM对偶问题:
%% training set
rng('default');
N = 150;
X = 10*rand(150, 2)-5;
y = zeros(N, 1)-1;
y((X(:, 1).^3+X(:, 1).^2+X(:, 1)+1)/20>X(:, 2)) = 1;
scatter(X(y==-1, 1), X(y==-1, 2), 'k.'), hold on
scatter(X(y==1, 1), X(y==1, 2), 'g.'),
t = -5:.01:5;
plot(t, (t.^3+t.^2+t+1)/20, 'r' ),
数据服从[-5, 5]的二维平均分布,分类线为 y=(x3+x2+x+1)/20 。
- 生层测试样本(test data)
N2 = 200;
X2 = 10*rand(N2, 2) - 5;
y2 = zeros(N2, 1) - 1;
y2((X2(:, 1).^3+X2(:, 1).^2+X2(:, 1)+1)/20 > X2(:, 2)) = 1;
sigma = 3;
K = zeros(N, N);
for i = 1:N,
for j = i:N,
t = X(i, :)-X(j, :);
K(i, j) = exp(-(t*t')/sigma^2);
K(j, i) = K(i, j);
end
end
H = (y*y').*K;
f = -ones(N, 1);
A = -eye(N); b = zeros(N, 1);
Aeq = y'; beq = 0;
alpha = quadprog(H, f, A, b, Aeq, beq);
idx = find(abs(alpha) > 1e-4); # 画出支持向量
plot(X(idx, 1), X(idx, 2), 'ro')
b = y(idx(1)) - (alpha.*y)'*K(:, idx(1));
K2 = zeros(N, N2);
for i = 1:N2,
t = sum((X - (X2(i, :)'*ones(1, N))').^2, 2);
K2(:, i) = exp(-(t)/sigma^2);
end
y_pred = sign( (alpha.*y)'*K2 + b)';
sum(y2==y_pred)/N2 #计算精确度 0.9850
注意,当高斯核函数唯一的参数 σ 取不同的值( σ=0.1 , σ=2 )时,会较大程度的影响最后的分类精确。