一、实验目的和内容

(一)实验目的

1、熟悉支持向量机SVM(Support Vector Machine)模型分类算法的使用。

2、用svm-train中提供的代码框架(填入SVM分类器代码)用train.data训练数据提供的矩阵来训练参数得到训练模型model,利用libsvm进行模型的训练,分类预测等。

3、利用model和svm-train的代码来分类测试数据集test.data,并报告其分类正确率。

(二)实验内容

支持向量机将向量映射到一个更高维的空间裡,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面。分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大,分类器的总误差越小。

1、数据预处理(将原始数据格式做一定的处理,转换成libsvm能够使用的而数据)

2、训练数据集的训练,产生训练模型。

3、测试数据集的分类预测,观察分析实验结果。

二、实验过程

实验步骤和详细实验内容

(一)实验步骤

1、对原始数据集进行预处理,将文本数据集转换成为libsvm能够使用的数据。

(1)原始数据格式:

条件属性a

条件属性b

条件属性c

条件属性d

条件属性e

条件属性f

条件属性g

条件属性h

条件属性i

条件属性j

决策属性

0.006129

-0.029258

-1.000000

-1.000000

-1.000000

-1.000000

-1.000000

-1.000000

-1.000000

-1.000000

1

(2)数据格式转换需要:

当数据较少时,可以用formatdatalibsvm轻松地将文本数据转换成为svm工具使用的数据。使用方法为:

打开train.data然后将数据粘贴到sheet1的单元格中。

‚再"工具"-->"宏"-->执行下面有一个选项(FormatDatatoLibsvm)-->执行,要选中这个然后运行就可以了 ,这时数据转换的问题就解决了(如果没有宏选项,点击“开始--excel选项---在功能区显示“开发工具”选项卡”)

ƒ可以copy到一个记事本中即可。但是注意在用libsvm的时候要在命令行输入.txt后缀。

决策属性

条件属性a

条件属性b

条件属性c

条件属性d

条件属性e

条件属性f

条件属性g

条件属性h

条件属性i

条件属性j

1

1:.006129

2:-.029258

3:-1

4:-1

5:-1

6:-1

7:-1

8:-1

9:-1

10:-1

2、将处理好的数据集train.txt通过libsvm包中的svm-train进行训练,生成训练模型train.model。

3、利用训练好的模型对测试数据集test.txt进行分类预测,观其分类结果和识别正确率。

4、分析得到的实验结果,思考有什么问题以及改进办法等。

(二)详细实验内容

1、对实验中给出的数据集train.data进行数据格式转换,能够更有效地将文本数据转换成为svm工具使用的数据。

2、利用1转换好的数据,通过实验指导书中给出的通用SVM 软件包Libsvm建立分类模型,生成训练模型train.model。

3、利用2所训练好的模型对测试数据集test.txt进行分类预测,观察分类结果以及分类正确率。

三、实验结果

实验结果数据(如果有评测要求应包括评测结果,例如分类的准确率)

分析:在原始训练数据集中可以发现,这实际上是一个非均衡数据集,正样本的数据和负样本的数据数量偏差十分大,决策属性1很少,而决策属性-1较多。

分析:自动选择最优参数,自动进行归一化。利用我们生成的模型对测试数据集进行预测,得到的预测准确率为94.3533%。

四、实验总结

完成试验后对实验中的问题进行总结(可包括实验结果讨论及下一步工作)

本次实验是通过LIBSVM进行模型的构建与预测,使用libsvm进行分类,只需要有属性矩阵和标签,然后就可以建立分类模型(model),然后利用得到的这个model进行分类预测了。对数据进行预处理之后,调用相关的软件包能够将训练数据集转换出训练模型,并且对测试数据集进行简单的分类,得到了最后的分类结果。

在实验过程中也发现了一些问题,就是训练数据样板不平衡。这本身是一个二元分类问题,分类器是由训练数据训练出来的模型,所以训练数据肯定会对其造成直接的影响,这里所说的不平衡性就是各个类别的训练 sample 数目不平衡。比如,在二元分类的情况下在原始训练数据集中可以发现,这实际上是一个非均衡数据集,正样本的数据和负样本的数据数量偏差十分大。因此导致测试的结果分类正确率accuracy只有94.3533%,最后的分类输出也只有-1了。

通过调研和分析,我收集到一些方法可以解决样本为非均衡数据集的方法:

1、在两类正负样本比例非常不均衡的情况下,就不能再用「分类正确率」(accuracy)来衡量模型性能,而要用少数类的「准确率」(precision)和「召回率」(recall),或者二者的综合(F1, equal error rate, area under curve 等等)。

2、增加数量较少决策属性的样本特征,把少数类的数据复制几份,并适当加噪声。这可以增强模型的鲁棒性,调整两类训练样本的权重,使得两类的总权重相等。

3、采样,选择每个正样本的k近邻,然后在该样本和近邻样本的连线上随机采样。

4、数据预处理。基本的目标就是把数据变平衡,常见的方法有over-sample,under-sample,smote等。

总结:

1、支持向量机的关键技术:支持向量机性能的优劣主要取决于核函数的选取,所以对于一个实际问题而言,如何根据实际的数据模型选择合适的核函数从而构造SVM算法.目前比较成熟的核函数及其参数的选择都是人为的,根据经验来选取的,带有一定的随意性.在不同的问题领域,核函数应当具有不同的形式和参数,所以在选取时候应该将领域知识引入进来.

2、在使用libsvm进行分类训练时,也要注意正负样本的均衡问题,我们可以采用上面提到的一些方法进行解决。

3、在接下来需要尝试将不同的训练样本训练出模型,调整正负样本的比例,寻找最优参数的设置,提高模型的分类预测正确率。

参考文献:

[1]姬水旺,姬旺田,支持向量机训练算法综述[J],微机发展,14(1),2004。

[2]刘江华,程君实,陈佳品,支持向量机训练算法综述[J],信息与控制,31(1),2002。

[3]Libsvm学习笔记(http://mirrorlake.bokee.com/5133582.html)

[4]LIBSVM使用方法及参数设置(http://blog.sina.com.cn/s/blog_60f842960101j5rw.html)

机器学习实验一SVM分类实验的更多相关文章

  1. 吴裕雄--天生自然python机器学习实战:K-NN算法约会网站好友喜好预测以及手写数字预测分类实验

    实验设备与软件环境 硬件环境:内存ddr3 4G及以上的x86架构主机一部 系统环境:windows 软件环境:Anaconda2(64位),python3.5,jupyter 内核版本:window ...

  2. case7 淋巴瘤子类分类实验记录

    case7 淋巴瘤子类分类实验记录 简介 分类问题:3分类 (identifying three sub-types of lymphoma: Chronic Lymphocytic Leukemia ...

  3. 视觉机器学习读书笔记--------SVM方法

    SVM是一种二类分类模型,有监督的统计学习方法,能够最小化经验误差和最大化几何边缘,被称为最大间隔分类器,可用于分类和回归分析.支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题, ...

  4. Relation Extraction中SVM分类样例unbalance data问题解决 -松弛变量与惩罚因子

    转载自:http://blog.csdn.net/yangliuy/article/details/8152390 1.问题描述 做关系抽取就是要从产品评论中抽取出描述产品特征项的target短语以及 ...

  5. 【机器学习】从SVM到SVR

    注:最近在工作中,高频率的接触到了SVM模型,而且还有使用SVM模型做回归的情况,即SVR.另外考虑到自己从第一次知道这个模型到现在也差不多两年时间了,从最开始的腾云驾雾到现在有了一点直观的认识,花费 ...

  6. 机器学习——支持向量机(SVM)

    机器学习--支持向量机(SVM) 支持向量机(Support Vector Machine)广泛地应用于分类问题,回归问题和异常检测问题.支持向量机一个很好的性质是其与凸优化问题相对应,局部最优解就是 ...

  7. 遵循统一的机器学习框架理解SVM

    遵循统一的机器学习框架理解SVM 一.前言 我的博客仅记录我的观点和思考过程.欢迎大家指出我思考的盲点,更希望大家能有自己的理解. 本文参考了李宏毅教授讲解SVM的课程和李航大大的统计学习方法. 二. ...

  8. SVM-支持向量机(二)非线性SVM分类

    非线性SVM分类 尽管SVM分类器非常高效,并且在很多场景下都非常实用.但是很多数据集并不是可以线性可分的.一个处理非线性数据集的方法是增加更多的特征,例如多项式特征.在某些情况下,这样可以让数据集变 ...

  9. SVM-支持向量机(一)线性SVM分类

    SVM-支持向量机 SVM(Support Vector Machine)-支持向量机,是一个功能非常强大的机器学习模型,可以处理线性与非线性的分类.回归,甚至是异常检测.它也是机器学习中非常热门的算 ...

随机推荐

  1. [bzoj2131]免费的馅饼 树状数组优化dp

    2131: 免费的馅饼 Time Limit: 10 Sec  Memory Limit: 259 MB[Submit][Status][Discuss] Description Input 第一行是 ...

  2. maven的java web项目启动找不到Spring ContextLoaderListener的解决办法

    用maven搭建的java web项目,上传到git仓库后,当同事clone下来项目,部署到tomcat运行时,就报了如下错误,即启动web项目时,加载web.xml文件,找不到spring的监听器, ...

  3. LDAP服务部署

    1.安装基本环境 # yum -y install openldap openldap-devel openldap-servers openldap-clients 2.配置LDAP服务端 (1)拷 ...

  4. LeetCode 485. Max Consecutive Ones (最长连续1)

    Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: [1, ...

  5. iOS初学,关于变量加下划线问题

    为什么做ios开发,变量前要加下划线才有用? 看到这个哥们的解释后,终于明白了,转帖到此. 链接在此:http://www.cocoachina.com/bbs/read.php?tid=234290 ...

  6. css是如何实现在页面文字不换行、自动换行、强制换行的

    强制不换行 div{ white-space:nowrap; } 自动换行 div{ word-wrap: break-word; word-break: normal; } 强制英文单词断行 div ...

  7. cocos-Lua中的class与require机制

    cocos-Lua中的class与require机制 local layer = require("PaiGow.src.GamePlayerListLayer")local Ga ...

  8. 安全框架Shiro入门

    Shiro简介 Apache Shiro是Java的一个安全框架,官网为shiro.apache.org,主要场景为控制登陆,判断用户是否有访问某个功能的权限等等. Shiro的核心功能(入门知识,只 ...

  9. 走进Spark生态圈:环境的安装与配置

    什么是Spark? Apache Spark 是一种大规模数据处理的快速通用引擎,使用基于内存的处理方式,较与MapReduce而言,解决了其shuffle多次IO操作带来的效率低问题,从而达到快速的 ...

  10. C# 插入排序(数据结构与算法)

    1                                                                   }