机器学习SVM(支持向量机)实验报告

实 验 报 告

实验名称: 机器学习:线性支持向量机算法实现

学 员: 张麻子 学 号: *********** 培养类型: 硕士 年 级: 专 业: 所属学院: 计算机学院 指导教员: ****** 职 称: 副教授 实 验 室: 实验日期:

1

一、实验目的和要求

实验目的:验证SVM(支持向量机)机器学习算法学习情况 要求:自主完成。

二、实验内容和原理

支持向量机(Support Vector Machine, SVM)的基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大。SVM是用来解决二分类问题的有监督学习算法。通过引入了核方法之后SVM也可以用来解决非线性问题。

但本次实验只针对线性二分类问题。

SVM算法分割原则:最小间距最大化,即找距离分割超平面最近的有效点距离超平面距离和最大。

对于线性问题:

假设存在超平面可最优分割样本集为两类,则样本集到超平面距离为:

需压求取:

由于该问题为对偶问题,可变换为:

可用拉格朗日乘数法求解。

但由于本实验中的数据集不可以完美的分为两类,即存在躁点。可引入正则化参数C,用来调节模型的复杂度和训练误差。

2

作出对应的拉格朗日乘式:

对应的KKT条件为:

故得出需求解的对偶问题:

本次实验使用python编译器,编写程序,数据集共有270个案例,挑选其中70%作为训练数据,剩下30%作为测试数据。进行了两个实验,一个是取C值为1,直接进行SVM训练;另外一个是利用交叉验证方法,求取在前面情况下的最优C值。

三、实验器材

实验环境:windows7操作系统+python编译器。

四、实验数据(关键源码附后)

实验数据:来自UCI机器学习数据库,以Heart Disease数据集为例。

五、操作方法与实验步骤

1、选取C=1,训练比例7:3,利用python库sklearn下的SVM()函数进

3

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4