目录
一绪论
1.1机器学习定义
1.机器学习是这样的领域,它是赋予计算机学习的能力,这种学习能力不是通过显著式编程获得的
让计算机自己总结规律的编程方法—非显著式编程—机器学习关注点
规定收益函数后,让计算机自己去找最大化收益函数的行为
非显著式编程:通过数据、经验自动的学习,完成我们交给的任务
2.一个计算机程序被称为可以学习,是指他能够针对某个任务T和某个性能指标P,从经验E中学习,这种学习的特点是,它在T上的被P所衡量的性能,会随着经验E的增加而提高。
例1:任务T—编写程序设别菊花和玫瑰
经验E—一大堆菊花和玫瑰花的图片(样本值)
性能指标P—不同机器学习的算法会不同,eg 识别率—正确率
根据经验E来提高性能指标P的过程——典型的最优化问题
1.2机器学习任务的分类
划分标准—经验E(训练样本和标签的集合)
1.监督学习— 所有的经验E 都是人工采集并输入计算机的
1)监督学习根据数据标签存在与否的分类:
(1)传统的监督学习:每个训练数据都有对应的标签。算法:支持向量机,人工神经网络,深度神经网络
(2)非监督学习:所有训练数据都没有对应的标签。非监督学习算法包括:聚类,EM算法,主成分分析
如何分类:
需要假设:同一类的训练数据在空间中离更近→根据样本的空间信息→设计算法将它们的聚集为两类→从而实现无监督学习
(3)半监督学习:训练数据中一部分有标签,另一部分没有标签。
2)另一种分类方法是基于标签的固有属性
2.强化学习—经验E计算机与环境互动获得的
让计算机通过改变自己的行为模式去最大化收益函数—强化学习
强化学习:让计算机通过与环境的互动逐渐强化自己的行为模式
1.3机器学习算法的过程
机器学习重点——假设在已经提取好特征的前提下,研究合理算法,使学习系统获得较好的性能(如何构造算法获得更好的性能指标)
- 特征提取、特征选择
特征提取:通过训练样本获得的,对机器学习任务有帮助的多维度数据
特征提取的结果—特征选择
提取了好的特征——也能获得不错的性能
提取的特征很差——不肯能获得好的性能
为什么不重点研究提取特征?
不同的任务提取特征的方式不同。不同媒质不同任务,提取特征的方式千变万化
- 不同的算法对特征空间做不同的划分
设计算法:支持向量机:线性内核,多项式核,高斯径向基函数核。不同机器学习算法
机器学习算法过程:设计一个算法,画出分类曲线(维度+标准)
研究不同应用场景下,应该采取哪种算法
研究新的机器学习算法,以便适应新的场景
1.4没有免费午餐定理
任何一个预测函数,如果在一些训练样本上表现好,那么必然在另一些训练样本上表现不好,如果不对数据在特征空间的先验分布有一定的假设,那么表现好与不好的情况将会一样多
原因:由于我们假设各种情况的先验概率一样
研究不同应用场景下,应该采取哪种算法
在设计机器学习算法的时候由一个假设:
在特征空间上距离接近的样本,他们属于同一个类别的概率会更高)
结论:如果不对特征空间的先验分布有假设→所有算法的表现都一样
(1)不能片面的夸大这个定理的作用
(2)机器学习的本质→根据有限的已知数据→在复杂的高维特征空间中预测未知的样本
再好的算法也存在犯错的风险
二、支持向量机
2.1线性可分定义
线性可分:
二维情况下分割圆圈和×的是直线。三维情况下分割圆圈和×的是平面 。大于4维的情况下,分割圆圈和×的是超平面
二维 三维
非线性可分:不存在一条直线将圆圈和×分开
二维 三维
特征空间维度>四维时
二维空间
若假设 ω’1=-ω1,ω’2=-ω2,b'=-b
假设:我们由N个训练样本和他们的标签
1)用数学严格定义训练样本以及他们的标签,
2)用向量形式来定义线性可分
(3)线性可分定义的最简化形式
2.2问题描述
如果一个数据集是线性可分的存在无穷多个超平面,将各个类别分开
支持向量机算法:
一、解决线性可分问题
二、再将线性可分问题中获得的结论推广到线性不可分情况
1.如何解决线性可分问题?
如果一个数据集是线性可分的存在无穷多个超平面,将各个类别分开
在这无数多个分开各个类别的超平面中,到底哪一个是最好的
例2.1 二维特征空间中的二分类问题
根据没有免费午餐定理,可得3条线都是一样的,
我们认为第二条线是比较好的,原因是对训练样本先验分布有一定假设,例如,假设训练样本的位置在特征空间上有测量误差。
2号线对训练样本位置的测量误差的容忍程度是最高的,2号线更能抵御训练样本位置的误差。
2号线是怎么画出来的?
VAPNIK的回答:基于最优化的理论,将寻找2号线的过程,变成一个最优化的问题。
间隔(margin)最大的是2号线
1号线 2号线 3号线
支持向量机要找的是使间隔(margin)最大的那条线,但是使用margin最大这个条件→不能唯一确定一条直线
为了使找到的直线唯一,还需要定义,这条线在上下两个平行线的正中间
支持向量机寻找的最优分类直线应满足:
(1)该直线分开了两类;
(2)该直线最大化(间隔)(margin)
(3)该直线处于间隔的中间,到所有支持向量距离相等
该结论是基于二维特征空间的结果,在高维特征空间中,直线将变成超平面,但以上的结论是一致的
2.3优化问题
在数据集线性可分的情况化下,支持向量机寻找的最优超平面,应该满足下面三个条件:
最优分类超平面应该满足:
- 该超平面分开了两个类
- 该超平面有最大化间隔
- 该超平面处于间隔的中间,到所有支持向量距离相等
如何用严格的数学→由寻找最优分类超平面的过程→写成一个最优化的问题
线性可分的定义:
假定训练样本集是线性可分的,支持向量机需要寻找的是最大化间隔的超平面 ,离两边所有支持向量的距离相等
已知:训练样本集(xi,yi)i=1到Ni 待求:(ω,b)
支持向量机优化问题推导中最难理解的部分
用a去缩放ωb,使得
由事实1 ,得(ω,b)表示的超平面和(aω,ab)表示的超平面是同一个平面
事实1:
根据事实2,支持向量X0到超平面的距离会变成
事实2:
点到超平面的距离公式(由该公式可以推出事实2)
最大化支持向量到超平面的距离,等价于最小化||ω||
优化问题定义为:
,最小化||ω||
便于后续求导
限制条件:
支持向量到超平面的距离为:
在非支持向量上
非支持向量到超平面的距离一定大于支持向量到超平面的距离
总结:在线性可分情况下,支持向量机寻找最佳超平面的优化问题可以表示为:
凸优化问题:
已知: 训练样本集(xi,yi) i=1到Ni 待求:(ω,b)
二次规划的定义:
(1)目标函数是二次项
(2)限制条件是一次项
凸优化问题要么无解,要么只要唯一的最小值,只有唯一 一个全局极值
例子:
如何求解全局最小值:根据梯度不断试探
线性可分条件下的支持向量机的求解是凸优化问题。
2.4线性不可分割情况
若是线性不可分的,则上面的最优化问题是无解的,即不存在ω和b 使得限制条件成立
放松限制条件,使得最优化问题有解
放松限制条件的基本思路:
对每个训练样本及标签(Xi,Yi),设置一个松弛变量δi,
加入新的限制,阻止每个δi无限变大
比例因子C:平衡两项和
,C的值是人为设定的
该优化问题为凸优化问题
人为事先设定的参数叫作算法的超参数
不断变化C的值→对每个C测试算法的识别率→选取使识别率达到最大的超参数C的值
支持向量机是超参数很少的算法模型。
例2.4
C=10000,迫使所有的δi趋近于0,使得最终解出的超平面和线性可分情况保持基本一致
结果:
优化方法:扩大可选函数范围。提高支持向量机解决线性不可分问题的能力
2.5 低维到高维的映射
扩大可选函数范围:
将特征空间由低维映射到高维→用线性超平面对数据进行分类
例2.5
假设:在一个M维空间上随机取N个训练样本,随机的对每个训练样本赋予标签+1或-1
假设:这些训练样本线性可分的概率为P(M), 则当M趋于无穷大时,P(M)=1
证明:当我们增加特征空间M的维度时,待估计参数(ω,b)的维度也会增加,整个算法模型的自由度会增加,就可以将低维线性不可分的数据映射到高维,形成线性可分的。
将训练样本由低维映射到高维,就可以增大线性可分的概率。
待解决问题:如何构建低维到高维的映射φ(x)?
假设φ(x)已知 X映射到φ(x)
ωi的维度与Xi维度相同
Xi被φ(Xi)替代 ω的维度与φ(Xi)相同
凸优化问题
2.6 核函数的定义
不用知道φ(x)的具体形式,
定义该 形式为核函数,是一个数
例2.6.1 已知φ(x)求核函数K
核函数以及低维到高维的映射φ(x)之间的相互关系
假设:φ(x)是一个将二维向量映射维三维向量的映射
假设有两个二维向量
例2.6.2 已知核函数K求映射φ(x)
假设 X是一个二维向量,
假设:
假设 那么
核函数K和映射φ(x)是一一对应的关系
核函数的形式不能随意的取,需要满足一定的条件,才能分解为两个φ(x)的内积
只要K满足 交换性和半正定性的形式,则一定可以写成φ(x)内积的形式
例如2.6.3 可以证明
满足以上两个条件,
这里的φ(x)不能写成显式的表达式,虽然无法知道φ(x)的形式,但可以通过一些方法知道
的值,进而可以知道测试样本X所属的类别
如何在已知K,不知φ(x)的情况下,求解支持向量机的优化问题
2.7 原问题和对偶问题
自变量ω 是多维向量,目标函数f(ω)
定义该原问题的对偶问题如下:
1.定义函数:
2.定义对偶问题
综合原问题和对偶问题的定义得到:
定理一:
对偶差距≥0
强对偶定理
如果 g(ω)=Aω+b,h(ω)=Cω+d,f(ω)为凸函数,则有f(ω*)=Θ(α*,β*),则对偶差距为0
如果原问题的目标函数是凸函数,限制条件是线性函数,那么原问题的解f(ω*),对偶问题的解
Θ(α*,β*)相等,即f(ω*)=Θ(α*,β*),对偶差距为0
的值为0
2.8 转化为对偶问题
证明支持向量机的原问题满足强对偶定理
目前支持向量机的优化问题
将支持向量机的优化问题转化为原问题
1.首先将
得到
再整理得:
限制条件都是线性的,目标函数是凸的,满足强对偶定理
原问题中的自变量ω=支持向量机优化问题中的(ω,b, δi)
原问题中的gi(ω)≤0 =支持向量机优化问题中的 两部分,一部分是
另一部分是
由于没有等式条件,故不存在hi(ω)的情况
支持向量机的原问题转化为对偶问题的形式
如何将原问题转化为对偶问题
由于遍历所有的(ω,b, δi),求最小值,故对(ω,b, δi)求导并令导数为0
将支持向量机的原问题转化为对偶问题:
该对偶问题也是一个二次规划问题,可以通过最优化算法求解
利用对偶理论,将支持向量机的原问题转化为相应的对偶问题
2.9算法总体流程
基于对偶问题,对支持向量机求解整个算法的统一流程
支持向量机的对偶问题:
如何求解这个对偶问题,基于这个对偶问题,给出支持向量机算法的统一流程
由于,只需求解核函数,即可求解对偶问题,解出所有的
,根据
(由于φ(x)不知道是否有显式表达,故ω也不知道是否有显式表达)
无需知道ω的显式表达式,也可以通过核函数K(X1,X2)算出ωTX+b的值
1.如何求b
根据KKT条件,可以推出
如果对某个i,αi≠0且αi≠c,则根据KKT条件,必有δi=0,且
↑ ↑
2.对于测试样本X如何确定其类别
核函数戏法:即使不知道φ(x),只知道核函数K(x1,x2),也可通过上面的公式算出
基于对偶问题的求解,支持向量机训练和测试的路程
- 训练过程
输入选了数据{(Xi,yi)} i=1~N 其中 yi=±1
(1)求出αi
(2)求b
- 测试过程
考察测试数据X,预测它的类别y
(1)预测规则
2.9 兵王问题描述
用SVM解决实际问题