山东大学机器学习(实验五内容)——SVM

1.描述

这个练习让你练习如何使用SVMs进行线性和非线性分类。

2.SVM

第一部分是实现一个正则化的SVM分类器。它的细节可以在课堂幻灯片中找到。我们在此仅给出SVM的一个草图。正则化支持向量机可以表示为
min ⁡ ω , b , ξ 1 2 ∥ ω ∥ 2 + C ∑ i = 1 m ξ i s.t. y ( i ) ( ω T x ( i ) + b ) ≥ 1 − ξ i , ∀ i = 1 , ⋯   , m ξ i ≥ 0 , ∀ i = 1 , ⋯   , m \begin{array} { l l } { \min _ { \omega , b , \xi } } & { \frac { 1 } { 2 } \| \omega \| ^ { 2 } + C \sum _ { i = 1 } ^ { m } \xi _ { i } } \\ { \text {s.t.} } & { y ^ { ( i ) } \left( \omega ^ { T } x ^ { ( i ) } + b \right) \geq 1 - \xi _ { i } , \quad \forall i = 1 , \cdots , m } \\ { } & { \xi _ { i } \geq 0 , \quad \forall i = 1 , \cdots , m } \end{array} minω,b,ξs.t.21ω2+Ci=1mξiy(i)(ωTx(i)+b)1ξi,i=1,,mξi0,i=1,,m
其中 ξ i \xi_i ξi是松弛印象。它的对偶问题可以定义为
min ⁡ α ∑ i = 1 m α i − 1 2 ∑ i , j = 1 m y ( i ) y ( j ) α i α j < x ( i ) , x ( j ) > s.t. 0 ≤ α i ≤ C , ∀ i = 1 , ⋯   , m ∑ i = 1 m α i y ( i ) = 0 \begin{array} { c l } { \min _ { \alpha } } & { \sum _ { i = 1 } ^ { m } \alpha _ { i } - \frac { 1 } { 2 } \sum _ { i , j = 1 } ^ { m } y ^ { ( i ) } y ^ { ( j ) } \alpha _ { i } \alpha _ { j } < x ^ { ( i ) } , x ^ { ( j ) } > } \\ { \text {s.t.} } & { 0 \leq \alpha _ { i } \leq C , \quad \forall i = 1 , \cdots , m } \\ { } & { \sum _ { i = 1 } ^ { m } \alpha _ { i } y ^ { ( i ) } = 0 } \end{array} minαs.t.i=1mαi21i,j=1my(i)y(j)αiαj<x(i),x(j)>0αiC,i=1,,mi=1mαiy(i)=0
通过求解上述QP问题,我们可以得到一个SVM分类器。为了简单起见,我们可以利用现有的QP求解器(例如Matlab中的quadprog或Octave中的QP)。
  给出了两个数据集,每个数据集又分为训练和测试两部分。特别是,第一个数据集包含training_1.txt用于训练和test_1.txt用于测试。第二个包含training_2.txt和test_2.txt。在这些数据文件中,前两列是特征,最后一列是label。分别在两个数据集上尝试SVM,并回答下列问题

  1. 利用训练数据绘制支持向量机的决策边界。
  2. 利用测试数据对SVM分类器进行评价,并给出分类错误的测试实例的比例
  3. 尝试正则化项C的不同值,并报告您的观察结果

3. 手写字体识别

第二部分是应用SVM分类器识别手写数字。训练和测试的数据集在train-01-image.svm和test-01-images.svm给出。为了简化,我们只区分0和1。训练数据集包含12665张图片,测试数据集包含2115张图片。每一行表示一个图像,其中第一项是标签,而下面是像素的索引和相应的灰度值。注意,只给出非零灰度值的像素。请仔细阅读并尝试strimage.m,其中给出了如何处理数据的实例。在你的报告中展示一些数据例子。根据训练数据对SVM模型进行训练,并将其应用于识别测试数据集中给出的手写字体。请回答以下问题

  1. 使用train-01-images.svm训练一个普通的SVM(即没有正则化带有 ξ i for ⁡   ∀ i \xi_i \operatorname{for} \ \forall i ξifor i)。什么是训练误差,即训练数据中样本分类错误的比例?从一组分类错误的图像中,选择一个。附上你的解决方案,为什么你认为SVM在训练的过程中分类不正确?现在将SVM应用于test-01-image.svm,什么是测试错误,即测试数据中样本分类错误的比例?
  2. 用正则化项C的不同值进行实验。首先猜测/估计你认为C应该存在的范围。然后选择C的值(在该范围内),你将在其中评估SVM的性能。你不需要选择超过10个这样的值,尽管你可以选择任意多的值(或少的值)对于C的这些值,绘制相应的错误。**(i)C的哪个值使得数据集训练误差最大?(ii)这个C选项的测试错误与您在第(i)部分中计算的测试误差相比如何?(iii)**能否对C进行优化,使其得到最好的测试误差,而不是训练误差?你可以吗?

4. 非线性SVM

支持非线性支持向量机的一种方法是引入内核。回想一下,线性不可分的特征在映射到高维特征空间后通常会变成线性可分。然而,我们不需要计算特征映射 ϕ ( x ( i ) ) \phi(x^{(i)}) ϕ(x(i)),明确:我们只需要使用他们的内核,这更容易计算。因此,基于高维(甚至无限维)特征映射创建非常复杂的决策边界是可能的,但由于核表示的原因,仍然具有高效的计算能力。
  在这个练习中,你将使用LIBSVM中的径向基函数(RBF)内核。这个核有公式
K ( x ( i ) , x ( j ) ) = ϕ ( x ( i ) ) T ϕ ( x ( j ) ) = exp ⁡ ( − γ ∥ x ( i ) − x ( j ) ∥ 2 ) , γ > 0 K \left( x ^ { ( i ) } , x ^ { ( j ) } \right) = \phi \left( x ^ { ( i ) } \right) ^ { T } \phi \left( x ^ { ( j ) } \right) = \exp \left( - \gamma \left\| x ^ { ( i ) } - x ^ { ( j ) } \right\| ^ { 2 } \right) , \quad \gamma > 0 K(x(i),x(j))=ϕ(x(i))Tϕ(x(j))=exp(γx(i)x(j)2),γ>0
请注意,这是和高斯一样的内核,除了这一项 1 2 σ 2 \frac { 1 } { 2 \sigma ^ { 2 } } 2σ21在高斯内核中已被 γ \gamma γ取代。再一次,记住任何时候你需要直接计算 ϕ ( x ) \phi(x) ϕ(x)。事实上, ϕ ( x ) \phi(x) ϕ(x)对于这个内核是无限维的,所以将其存储在内存中是不可能的。
  现在我们来看RBF核是如何选择非线性决策边界的。加载数据集training 3.txt并导入Matlab/Octave工作区中。这是一个二分类问题。用不同的颜色标出正负号。此数据集是否存在线性决策边界?
  根据上面的练习用一个RBF内核与 γ = 100 \gamma=100 γ=100训练支持向量机模型。一旦你有了模型,你需要可视化决策边界,参考代码如下

%Make classification predictions over a grid of values
xplot = linespace(min(features(:,1)),max(features(:,1)),100)';
yplot = linespace(min(features(:,2)),max(features(:,2)),100)';
[X,Y] = zeros(size(X));
......
%Plot the SVM boundary
colormap bone
contour(X,Y,vals,[0 0],'LineWidth',4);

回想一下,这是函数 ∑ i α i y ( i ) K ( x ( i ) , x ) + b \sum _ { i } \alpha _ { i }y^{(i)} K \left( x ^ { ( i ) } , x \right) + b iαiy(i)K(x(i),x)+b的决策值用来分类。一个例子 x x x被分类为一个正的标签,如果 ∑ i α i y ( i ) K ( x ( i ) , x ) + b ≥ 0 \sum _ { i } \alpha _ { i }y^{(i)} K \left( x ^ { ( i ) } , x \right) + b \geq 0 iαiy(i)K(x(i),x)+b0,否则,被分类为一个负的标签。
  现在使用 γ = 1 , 10 , 100 \gamma=1,10,100 γ=1,10,100 1000 1000 1000训练你的模型并画出每个模型的决策边界(使用countour填充)。不同的 γ \gamma γ决策边界如何变化?

5. 最小优先序列

这是一项可选的附加工作。如果你使用最小优先序列(SMO)算法来替换标准QP求解程序,那么你可以获得额外的学分。

你可能感兴趣的:(机器学习,机器学习,SVM,支持向量机)