Presentation is loading. Please wait.

Presentation is loading. Please wait.

课件及程序代码.

Similar presentations


Presentation on theme: "课件及程序代码."— Presentation transcript:

1 课件及程序代码

2 支持向量机(SVM) 第〇部分 引例 第一部分 支持向量分类机 第二部分 支持向量回归机 第三部分 Libsvm软件简介

3 第〇部分 引例

4 案例1:意大利葡萄酒种类识别 wine数据(chapter12_wine.mat)记录的是意大利同一地区3中不同品种的葡萄酒13中化学成分含量。共有178个样本。 利用SVM建立分类模型,达到自动分类葡萄酒品种的目的。

5 分类问题的数学表示 分类问题目标属性是离散的 已知:训练集包含 个样本点: 说明: 是输入向量,其分量称为特征或属性 是输出指标.
已知:训练集包含 个样本点: 说明: 是输入向量,其分量称为特征或属性 是输出指标. 问题:对一个新的数据 ,推断它所对应的输出 分类问题目标属性是离散的

6 案例2:上证指数开盘指数预测 Chapter14_sh.mat数据记录的是从1990年12月19日到2009年8月19日期间4579个交易日每日上证综合指数的各项指标。分别记录当天上证指数的开盘指数:指数最高值,指数最低值,收盘指数,当日交易量,当日交易额。 利用SVM建立的回归模型对开盘指数进行预测。

7 回归问题的数学表示 回归问题目标属性是连续的 已知:训练集包含 个样本点: 说明: 是输入向量,其分量称为特征或属性 是输出数值.
已知:训练集包含 个样本点: 说明: 是输入向量,其分量称为特征或属性 是输出数值. 问题:对一个新的数据 ,推断它所对应的输出 回归问题目标属性是连续的

8 第一部分 支持向量分类机

9 1.线性可分问题 代表+1 代表 -1 wT x + b>0 w Tx + b=0 怎样将数据分类? w Tx + b<0

10 代表 +1 代表 -1

11

12 哪一个“最好”呢?

13 最大间隔 代表 +1 代表 -1 支持向量

14 目标1:将所有的点正确分类 目标2:最大化间隔宽度
间隔宽度M “Predict Class = +1” zone wTx+b=1 “Predict Class = -1” zone wTx+b=0 wTx+b=-1 目标1:将所有的点正确分类 目标2:最大化间隔宽度

15 只要求得该问题的最优解 ,从而可以构造出划分
只要求得该问题的最优解 ,从而可以构造出划分 超平面 ,得出决策函数 。 最优分类面问题可以表示成约束优化问题

16 2.近似线性可分问题 不要求所有训练点都被正确分类 ,对每个训练点引入松弛变量 并满足约束。 可用 度量错划分程度。
不要求所有训练点都被正确分类 ,对每个训练点引入松弛变量 并满足约束。 wTx+b=1 wTx+b=0 wTx+b=-1 可用 度量错划分程度。 两个目标:1. 间隔尽可能大 2. 错划程度尽可能小 参数C由用户给定

17 3.非线性可分问题 Φ: x → φ(x)

18 为以上优化问题对应的对偶优化问题的最优解
参数C由用户给定 为以上优化问题对应的对偶优化问题的最优解

19 常用核函数 线性核: 多项式核: 高斯核(RBF): Sigmoid核:

20 -SVC 参数由用户给定

21 多分类问题 a.一对其余法(OvR):训练时依次把某个类别的样本归为一类,其他剩余的样本归为另一类,这样就训练出了N个SVM。当对一个未知样本进行分类时,得票最多的类别即为该未知样本的类别。 b.一对一法(OvO):在任意两类样本之间设计一个SVM,因此N个类别的样本就需要设计 N(N-1)/2个SVM。当对一个未知样本进行分类时,得票最多的类别即为该未知样本的类别。

22 OvO与OvR示意图

23 第二部分 支持向量回归机

24 y=wTx+b+ y=wTx+b- y=wTx+b

25 -SVR 参数由用户给定 有少量的样本落在-带外,对落在-带外的样本进行惩罚。 y=wT.x+b+ y=wT.x+b 

26 -SVR 参数由用户给定

27 第三部分 Libsvm简介

28 MATLAB自带的svm实现函数是svmtrain和svmclassify函数,实现C-SVC模型,且仅支持二分类问题。
LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的软件。 libsvm工具箱有C-SVC, -SVC, -SVR, -SVR等多种模型可供使用。 libsvm采用OvO算法支持多分类问题。 

29 Libsvm的使用 准备工作:将libsvm3.22解压
准备工作:安装Visual C++编译器(不同的matlab版本需要安装不同的编译器,matlab2015,matlab2016安装Visual Studio 2015即可)

30 全选 否则有可能导致 编译不通过

31 1. 选择编译器:在命令窗口中输入mex -setup 注:步骤1和2均在 …\libsvm-3.22\matlab目录下操作

32 2. 编译文件(make):在命令窗口中输入make
此时可以使用libsvm软件包了

33 利用svmtrain建立模型 model=svmtrain(traindata_y,traindata_x,’options’) 利用svmpredict预测 [predict_y, accuracy(mse),decision_values] = svmpredict(testdata_y, testdata_x, model);

34 可用的选项如下   -s svm类型:SVM设置类型(默认0)   0 -- C-SVC   1 --  -SVC   2 – 一类SVM   3 --  -SVR   4 --  -SVR   -t 核函数类型:核函数设置类型(默认2)   0 – 线性:u'v   1 – 多项式:(r*u'v + coef0)^degree   2 – RBF函数:exp(-r|u-v|^2)   3 –sigmoid:tanh(r*u'v + coef0)

35   -d degree:核函数中的degree设置(针对多项式核函数)(默认3)
  -g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)(默认1/ k)   -r coef0:核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)   -c cost:设置C-SVC,  -SVR和 -SVR的参数(损失函数)(默认1)   -n nu:设置 -SVC,一类SVM和 -SVR的参数(默认0.5)   -p p:设置 -SVR 中损失函数p的值(默认0.1) -v n: n折交叉验证。

36 以上这些参数设置可以按照SVM的类型和核函数所支持的参数进行任意组合。如果设置的参数在函数或SVM类型中没有也不会产生影响,程序不会接受该参数;如果应有的参数设置不正确,参数将采用默认值。

37 参数设置不同,模型的性能往往有显著差别。对参数的设 置进行设定,就是所谓的“参数调节(调参)”。 将训练数据分为训练集和验证集。基于验证集上的性能来 进行模型选择和调参。
回归问题常用的性能度量:均方误差 分类问题常用的性能度量:分类错误率

38 k-折交叉验证:将训练数据A分为训练集和验证集,将数据集A随机分为k组数据,每次将其中一组数据作为验证集,剩下k-1组数据作为训练集进行训练。k一般取5或者10。
10折交叉验证示意图

39 当svmtrain使用-v参数时,此时svmtrain返回的不再是一 个结构体,而是交叉验证的精度。 对于分类问题,返回的是交叉验证下的平均分类准确率; 对于回归问题,返回的是交叉验证下的平均均方根误差。 怎样选择合适的参数? 对不同的参数,模型会有不同的精度,尽可能地选择使交 叉验证精度最优的参数。把参数当成自变量,精度当成因 变量,选择参数的问题就相当于一个优化问题。可考虑用 网格搜索法,智能优化算法比如遗传算法、粒子群算法等 等。

40 数据规范化:We recommend linearly scaling each attribute to the range [-1,1] or [0,1].
Min-max 规范化(Matlab命令:mapminmax) mapminmax processes input and target data by mapping it from its original range to the range [-1 1]. z-score规范化(Matlab命令:mapstd) mapstd processes input and target data by mapping its mean and standard deviations to 0 and 1 respectively.

41 利用SVM建模步骤 数据提取和预处理 建立SVM模型(确定模型的参数) 利用建立的SVM模型进行预测 结果分析


Download ppt "课件及程序代码."

Similar presentations


Ads by Google