Weka参数优化与SVM

Download Report

Transcript Weka参数优化与SVM

一、Weka Optimizing parameters 参数优化
二、SVM 入门
报告人:车玉馨
2014/12/2
一、Optimizing parameters 参数优化
Weka提供的自动优化最优参数的meta-classifiers
1. CVParameterSelection
2. GridSearch
Optimizing Parameters 参数优化
2
CVParameterSelection参数优化
Example:J48 and it's confidence interval ("-C")
 在Explorer中选择你的数据集。
 选择weka.classifiers.meta.CVParameterSelection为分类器。
 选择weka.classifiers.trees.J48为CVParameterSelection的基分类器。
 打开CVParameters的ArrayEditor,然后输入以下的字符串(然后
点Add)
“C 0.1 0.5 5”
它的意思是测试参数C,从0.1到0.5的效果,步长是0.1(=5步)。
 关闭对话框,运行。你会得到类似下面的结果。
Cross-validated Parameter selection.
Classifier: weka.classifiers.trees.J48
Cross-validation Parameter: '-C' ranged from 0.1 to 0.5 with 5.0 steps
Classifier Options: -C 0.2 -M 2
3
CVParameterSelection参数优化
CVParameterSelection参数优化
它的意思是测试参数
C,从0.1到0.5的效果,
步长是0.1(=5步)。
CVParameterSelection参数优化
4
CVParameterSelection参数优化
小贴士 2:
优点: 可以优化任意多个参数的基分类器
缺点:
1.参数的组合爆炸
2.不能内嵌参数,只能优化基分类器的直接参数
参数所有可能的组合数太多:
一个参数有2个取值,另一
个参数有5个取值,可能的
组合就是10个
可以优化weka.classifiers.functions.SMO的
参数C,但不能优化在
weka.classifiers.functions.SMO中的kernel
的参数C。
CVParameterSelection参数优化
5
gridSearch参数优化
Example: Optimizing RBFKernel with SMO

载入一个离散类别的数据集。
Filter:
weka.filters.AllFilter
Classifier:
选择评价方式为Accuracy.
weka.classifiers.functions.SMO -C 2.0 -L 0.0010 -P 1.0E-12 -N
0 -V -1 -W 1 -K
 设置过滤器为weka.filters.AllFilter,因为我们不需要对数据进行
"weka.classifiers.functions.supportVector.RBFKernel -C 250007 -G 0.0"
任何的特殊处理,在这种情况下,我们不对过滤器进行优化。
X property:
设置weka.classifiers.functions.SMO为分类器,并使用核函数
classifier.c
weka.classifiers.functions.supportVector.RBFKernel。
Y property:
classifier.kernel.gamma
 设置XProperty为“classifier.c”,XMin为“1”,XMax为
Evaluation: Accuracy
“16”,XStep为“1”,XExpression为“l”。这表示会测试
Coordinates: [2.0, 0.0]
SMO分类器参数从1变化到16的情况。
Values:
**2.0** (X coordinate), **1.0** (Y coordinate)
 设置YProperty为“classifier.kernel.gamma”,YMin为“5”,YMax为“2”,YStep为“1”,YBase为“10”,
YExpression为“pow(BASE,I)”。这会测试RBFKernel中的
gamma参数值10-5,10-4,…,102。
8
运行后会输出与下面相似的结果。
gridSearch参数优化
gridSearch参数优化
Example: Optimizing PLSFilter with LinearRegression
 载入一个连续值类别的数据集。
 选择评价方式为Correlation coefficient。
weka.filters.supervised.attribute.PLSFilter -C 5 -M -A PLS1 -P center
 Filter:
设置过滤器为weka.filters.supervised.attribute.PLSFilte。
weka.classifiers.functions.LinearRegression -S 1 -C -R 5.0
 Classifier:
设置weka.classifiers.functions.LinearRegression为分类器,并使用
attribute
selection和no elimination of collinear attributes(极大
Xno
property:
filter.numComponents
Y提高LinearRegression的速度)。
property: classifier.ridge
 设置XProperty为“filter.numComponents”,XMin为“5”,XMax
Evaluation:
Correlation coefficient
为“20”(这与你所用的数据集有很大关系,它不应该大于某个
Coordinates: [5.0, 5.0]
值),XStep为“1”,XExpression为“l”。这表示会测试FLSFilter
Values:
**5.0** (X coordinate), **100000.0** (Y coordinate)
component从5到20的情况。
 设置YProperty为“classifier.ridge”,YMin为“-10”,YMax为
“5”,YStep为“1”,YBase为“10”,YExpression为
“pow(BASE,I)”。这会测试RBFKernel中的gamma参数值10-10到105。
9
gridSearch参数优化
gridSearch参数优化
Base
用于pow计算的底。
Expression
对进行属性测试的参数值
的数学表达式,是用
weka.core.MathmaticalExpre
ssion类来处理的,因支持以后
函数,abs,sqrt,log,exp,
sin,cos,tan,rint,floor,
pow,ceil。这些函数可以在
BASE,FROM,TO,STEP,I
中使用,I变化范围为从FROM
到TO。
Min、Max
开始的最小值、最大值
Property
要进行优化的忏悔是用点
分隔的路径指定的,为了区别
过滤器的路径和分器类的路径
,你现在将分别的过滤器和分
器的路径加上filter.或classifier.
的前缀
Step
从min到max的步长
Notes:
分类器的属性以classfier.开头
过滤器的属性以filter.开头
对象的数组用[<index>]方法
表示,index从0开头,比如在
GridSearch中使用
weka.filters.MultiFilters包含一
个ReplaceMissingValues和一
个PLSFilter,你可以用
filter.filter[1].numComponent
s来表示FLSFilter的
numComponents属性。
这会测试RBFKernel中的gamma参数
不过率数据,全部数据都通过过滤器
gridSearch参数优化
gridSearch参数优化
小贴士 2:
优化两个参数的meta-classifier
一个分类器的两个参数
一个基分类器和一个过滤器的参数
所以可以指定一个想优化的属性的路径,比如
weka.classifiers.meta.Bagging的bagSizePercent,或
weka.classifiers.meta.Bagging的分类器的属性。
缺点:参数只能两个
11
gridSearch参数优化
gridSearch参数优化
小贴士 2:
可以对以下指标进行优化:
Correlation coefficient (= CC) 相关系数
Root mean squared error (= RMSE) 均方根误差
Root relative squared error (= RRSE) 相对平方根误差
Mean absolute error (= MAE) 平均绝对误差
Root absolute error (= RAE) 平均绝对误差平方根
Combined: (1-abs(CC)) + RRSE + RAE 结合的
Accuracy (= ACC) 正确率
注意:Correction coefficient只适用于连续值类别;
Accuray只适用于离散类别
12
gridSearch参数优化
二、SVM 入门
2.1 什么是支持向量机(Support Vector Machines)
2.2 logistic 回归
2.3 形式化表示
2.4 函数间隔与几何合间隔
2.5 最优间隔分类器
2.6 核函数
2.7 使用松弛变量处理离群点
2.8 SMO优化算法
参照:斯坦福大学公开课:《机器学习课程》 by
Andrew Ng
斯坦福大学机器学习课程个人学习笔记(上) by JerryLead
支持向量机通俗导论——理解SVM的三层境界 by July·pluskid
13
SVM 入门
2.1 什么是支持向量机(Support Vector Machines)
小贴士 2:
 支持向量:支持或支撑平面上把两类类别划分开来的超
平面的向量点
 “机(machine,机器)”,就是一种用于分类的监督
学习的算法
14
什么是支持向量机(Support Vector Machines)
2.2 logistic 回归
线性回归:
h ( x)   T X   0  1 x1   2 x2  ...   n xn
损失函数:
评估机制:去对x(i)的估计值与真实值y(i)差的
平方和作为错误估计函数,前面乘上的1/2是为
了在求导的时候,这个系数就不见了。
logistic回归:
(对数回归)
1,
z≥0
0,
z<0
g(z)=
Logistic 回归目的是将自变量(−∞,+∞)
映射到了(0, 1),而这个模型是将特性的
线性组合作为自变量。
15
logistic 回归
2.2 logistic 回归
× ×
Logistic回归强调所有点尽可能地远离中间
那条线。学习出的结果也就中间那条线。
考虑全局(已经远离的点可能通过调整中间
线使其能够更加远离)。
×
×
×
×
支持向量
×
×
×
×
𝜃𝑇𝑥=0
SVM更关心靠近中间分割线的点,让他们
尽可能地远离中间线,而不是在所有点上达
到最优。这样的话,要使得一部分点靠近中
间线来换取另外一部分点更加远离中间线。
考虑局部(不关心已经确定远离的点)。
16
logistic 回归
2.3 SVM形式化表示
 T X   0  1 x1  1 x1  ...   n xn
b  1 x1  1 x1  ...  n xn   T X  b
假设函数:
SVM形式化表示
17
2.4 函数间隔与几何间隔
函数间隔:
训练样本(𝑥(𝑖),𝑦(𝑖)),x是特征,y是结果标签。
=
函数间隔代表了我们认为特征是正例还是反例的确信度。
因为
越大,我们就更确信它是正例或者反例
同时扩大w和b对结果是无影响的,为了限制w和b,可能需
要加入归一化条件。
全局样本上的函数间隔:
SVM形式化表示
18
2.4 函数间隔与集合间隔
几何间隔:
(𝑥(𝑖),𝑦(𝑖))
𝑤
B是A在分割面上的投影A到该面的距离以𝛾(𝑖)表示。
向量BA的方向是𝑤,单位向量是𝑤/||𝑤||.
A点是(𝑥(𝑖),𝑦(𝑖)),B点是(x,y) 。


x(i )  x   (i )
x  x(i )   (i )


带入𝑤𝑇𝑥+𝑏=0得:
(x,y)
x
x(i)
全局样本上的函数间隔:
SVM形式化表示
19
2.5 最优间隔分类器
目标:寻找一个超平面,使得离超平面比较近的点能有更大的间距。
形式化表示:
函数间隔与几何函数关系:
几何间隔
1. 函数间隔不适合用来最大化,因为在超平面固定以后,我们可以等比例地缩放
𝑤的长度和b 的值,这样可以使得𝑤Tx+b 的值任意大,亦即函数间隔可以在超
平面保持不变的情况下被取得任意大。
2. 几何间隔因为除上了这个分母,所以缩放𝑤和b 的时候的值是不会改变的,它
只随着超平面的变动而变动。
最优间隔分类器
20
2.5 最优间隔分类器
为了计算方便,我们取
由于求
1

,也即是将离超平面最近的点的距离定义为
1
的最大值相当于求 2

2
1

的最小值,因此改写后结果为:
最优间隔分类器
21
如何求解?
现成的QP(Quadratic Programming)优化包,
二次优化问题,约束条件是线性的
拉格朗日对偶(Lagrange duality)+对偶变化(Dual Variable)
 更加高效
 对偶问题更容易求解
 可以自然的引入核函数,进而推广到现行
分类
最优间隔分类器
22
拉格朗日对偶
拉格朗日对偶:
通常我们需要求解的最优化问题有如下几类:
(i) 无约束优化问题
min f(𝑤);
求f(x)的导数,然后令其为零,可以求得候选最优
值,再在这些候选值中验证;如果是凸函数,可
以保证是最优解。
(ii) 有等式约束的优化问题
min f(𝑤),
s.t. hi(𝑤) = 0; i =1, ..., l
拉格朗日乘子法(Lagrange Multiplier) ,
系数βi称为拉格朗日乘子。通过拉格朗日函数对
βi 、 𝑤求偏导,令其为零,可以解出βi和𝑤 。
(iii) 有不等式约束的优化问题
min f(𝑤),
s.t. gi(𝑤) <= 0; i =1, ..., k
hj(𝑤) = 0; j =1, ..., l
拉格朗日函数:
通过KKT条件(Karush-Kuhn-Tucker condition),
可以求出最优值。
最优间隔分类器
23
23
KTT
拉格朗日对偶:
条件
(iii) 有不等式约束的优化问题
min f(𝑤),
s.t. gi(𝑤) <= 0; i =1, ..., k
hj(𝑤) = 0; j =1, ..., l
𝑔𝑖(𝑤∗)=0,𝛼∗>0
𝑔𝑖(𝑤∗)<0 ,𝛼∗=0
KKT的总体思想是认为极值会在可行域边界上取得,也就是𝑔𝑖(𝑤∗)=0处取得,
对于在可行域边界内的点,对最优解不起作用,因此前面的系数为0。
最优间隔分类器
24
24
拉格朗日函数与KKT条件:
有不等式约束的优化问题
min f(ω),
s.t. gi(ω) <= 0; i =1, ..., k
hj(ω) = 0; j =1, ..., l
回到SVM优化问题:
我们将约束条件改为:
构造拉格朗日函数:
𝑔𝑖(𝑤∗)=0,𝛼∗>0
𝑔𝑖(𝑤∗)<0 ,𝛼∗=0
从KKT条件得知只有𝑔𝑖(𝑤)=0(函数间隔是1离超平
面最近的点)的线性约束式前面的系数𝛼𝑖>0,
对于其他的不在线上的点(𝑔𝑖(𝑤)<0),极值不会在
他们所在的范围内取得,因此前面的系数𝛼𝑖=0.
最优间隔分类器
25
25
拉格朗日函数:
然后我们令:
容易验证,当某个约束条件不满足时,例如
<1
,那么我们显然有
θ(𝑤) = +∞(只要令αi = +∞即可)。而当所有约束条件都满足时,则有θ(𝑤)
=
,亦即我们最初要最小化的量。因此,在要求约束条件得到满足的情况下最
小化,实际上等价于直接最小化θ(𝑤)(当然,这里也有约束条件,就是αi ≥ 0, i =
1, 2, · · · , n,因为如果约束条件没有得到满足,θ(𝑤) 会等于无穷大,自然不
会是我们所要求的最小值。
我们现在的目标函数变成了:
对偶形式:(满足Slater条件)
最优间隔分类器
26
26
求解:
第一步,固定αi ,让L 关于𝑤 和b 最小化,分别对w和b求偏导数,令其等于0.
带回𝑤:
(只剩αi )
最优间隔分类器
27
27
第二步,求对αi的极大,即是关于对偶变量α的优化问题
利用更高效的SMO 算法求解αi
第三步,求得的 αi将能导出𝑤 和b 的解,最终得出分离超平面和分类决策函数
最优间隔分类器
28
28
以前新来的要分类的样本首先根据w和b
我们通篇考虑问题的出发点是𝑤𝑇𝑥+𝑏,
做一次线性运算,然后看求的结果是大
根据求解得到的𝛼𝑖,我们代入前式得到
于0还是小于0,来判断正例还是负例。
现在有了𝛼𝑖,我们不需要求出w,只需将
新来的样本和训练数据中的所有样本做
内积和即可。
与前面所有的样本都做
运算是不是太耗时了?
内积
其实不然,我们从KKT条件中得到,只有支持
向量的𝛼𝑖>0,其他情况𝛼𝑖=0。因此,我们只需
求新来的样本和支持向量的内积,然后运算
即可。这种写法为下面要提到的核函数
(kernel)做了很好的铺垫
最优间隔分类器
29
29
2.6 核函数
内积
目的:为解决非线性情况
形式化定义:如果原始特征内积是<x,𝑧>,映射后为<𝜙(x),𝜙(𝑧)>,
那么定义核函数(Kernel)为𝐾(𝑥,𝑧)= 𝜙(𝑥) T𝜙(𝑧)
SVM形式化表示
30
两个核函数
多项式核
K ( x, z )  ( xT z  c)d
对应的映射后特征维度为
高斯核
n d 


 d 
SVM形式化表示
31
如果使用了核函数后,𝑤𝑇𝑥+
𝑏就变成了𝑤𝑇φ(x)+𝑏 ,是否
先要找到𝜙(x),然后再预测?
𝐾(𝑥,𝑧)= 𝜙(𝑥) T𝜙(𝑧)
答案是不需要!
只需将< 𝑥(𝑖), 𝑥 >替换成𝐾(𝑥(𝑖), 𝑥),然后值的判断同上。
SVM形式化表示
32
2.7 使用松弛变量处理离群点
×
××
×
× ×
× ×
×
×
这时允许一些点游离并在在模型中违背限制条件
(函数间隔大于1)。
新的模型如下(也称软间隔):
 非负参数𝜉𝑖称为松弛变量,就允许某些样本点的函数
间隔小于1
 C是离群点的权重,C越大表明离群点对目标函数影响
越大
使用松弛变量处理离群点
33
解法:用前面提到的拉格朗日对偶,先写出拉格朗日函数,然后分
别对𝑤和b求偏导数,得到𝑤和b的表达式,再代入公式,求公式极
大值,
拉格朗日函数:
最后结果如下:
没有了参数𝜉𝑖
𝛼𝑖又多了𝛼𝑖≤C的限制条件
b的求值公式也发生了改变
使用松弛变量处理离群点
34
KKT条件也发生了变化:
原来的只有支持向量的𝛼𝑖>0,其他情况𝛼𝑖=0
间隔线以外
离群点
支持向量
通过KKT条件可知,某些在最大间隔线上的样本点也
不是支持向量,相反也可能是离群点。
使用松弛变量处理离群点
35
2.7 SMO优化算法
最初的问题是这样的:
求α,我们用坐标上升法:
可是如果固定𝛼1以外的所有参数,那么
𝛼1将不再是变量(可以由其他值推
出)!!!,
固定除𝛼𝑖之外的所有𝛼𝑗(𝑗≠i ),这时W可看作只是关于𝛼𝑖的
函数,那么直接对𝛼𝑖求导优化即可。这里我们进行最大化求
导的顺序是i从1到m,可以通过更改优化顺序来使W能够更快
地增加并收敛。
SMO优化算法
36
解决方法:一次选择两个参数做优化,比如𝛼1和𝛼2,此时𝛼2可以由𝛼1和
其他参数表示出来。这样回带到W中,W就只是关于𝛼1的函数了,可解。
先固定{𝛼3,𝛼4,…,}𝛼𝑛}
当y(1)和y(2)异号:
同理:当y(1)和y(2)同号:
SMO优化算法
37
将𝛼1用𝛼2表示:
反代入W中,得
展开后W可以表示成a𝛼22+b𝛼2 +𝑐的形式。其中a,b,c是固定值。
保证𝛼2满足L≤𝛼2≤𝐻的前提下,对W进行求导可以得到𝛼2
使用𝛼2𝑛𝑒𝑤,𝑢𝑛𝑐𝑙𝑖𝑝𝑝𝑒𝑑表示求导求出来的𝛼2
这样得到𝛼2𝑛𝑒𝑤后,我们可以得到𝛼1的新值𝛼1𝑛𝑒𝑤。
SMO优化算法
38
总结:
2.1 什么是支持向量机
2.2 logistic 回归
1,
2.3 形式化表示
× ×
z≥0
×
×
×
×
g(z)=
×
×
2.4 函数间隔与几何合间隔
×
0, 支持向量
z<0
=
函数间隔:
×
2.5 最优间隔分类器
内积
几何间隔:
2.6 核函数
𝜃𝑇𝑥=0
<x,𝑧> → <𝜙(x),𝜙(𝑧)>
核函数(Kernel):𝐾(𝑥,𝑧)= 𝜙(𝑥) T𝜙(𝑧)
2.7 使用松弛变量处理离群点
间隔线以外
2.8 SMO优化算法
离群点
支持向量
39
SVM 入门
Thank You!
敬请大家批评指正!
40