《机器学习》第二次作业——第四章学习记录和心得
第四章 线性判据与回归
4.1、线性判据基本概念
生成模型
给定训练样本{𝒙𝑛},直接在输入空间内学习其概率密度函数𝑝(𝒙)。
在贝叶斯决策分类中,生成模型通常用于估计每个类别的观测似然概率𝑝(𝒙|𝐶𝑖),再 结 合 先 验 概 率 得 到 联 合 概 率𝑝𝒙,𝐶𝑖=𝑝(𝒙|𝐶𝑖)𝑝(𝐶𝑖)。
然后,对所有类别进行积分,得到边缘概率密度函数𝑝𝒙=σ𝑖𝑝𝒙,𝐶𝑖。最后,得到后验概率𝑝𝐶𝑖|𝒙。
- 优势:根据p(X)采样新的样本数据,可以检测较低概率的数据,实现离群点检测
- 劣势:高纬x需要大量训练样本才能准确估计p(x),否则会出现维度灾难
判别模型
给定训练样本{𝒙𝑛},直接在输入空间内估计后验概率𝑝(𝐶𝑖|𝒙)。
- 优势:计算量少,适合训练样本较小情况
线性判据
如果判别模型𝑓(𝒙)是线性函数,则𝑓(𝒙)为线性判据
- 优势:计算量少,适用于训练样本较少的情况。
数学表达:
决策边界:
𝒘的方向:决定了决策边界H的方向。
𝑤0的作用:𝑤0决定了决策边界的偏移量,使其能够满足两个类输出值分别为正负。
任意样本到决策边界的距离:𝑓(𝒙)是样本𝒙到决策面𝐻的代数距离度量。(该距离𝑟的绝对值可以作为confidence score:值越大,这个点属于正类或者负类的程度越大。)
决策边界到坐标原点的距离:可见,𝑤0决定决策边界相对于坐标原点的位置。
4.2、线性判据学习概述
学习和识别过程
监督式学习(训练)过程:基于训练样本{𝒙1,𝒙2,...,𝒙𝑁}及其标签{𝑡1,𝑡2,...,𝑡𝑁},设计目标函数,学习𝐰和𝑤0。
识别过程:将待识别样本𝒙带入训练好的判据方程
参数空间&解域
参数空间:由各个参数维度构成的空间。
解域:在参数空间内,参数的所有可能解所处的范围。
解域:
- 针对两类(正负类)分类,方便起见,将负类的输出值取反,则得到:
- 因此,只要满足上述条件,每个训练样本𝒙𝑖在参数空间定义了一个通过原点、且垂直于𝒙𝑖的超平面。
- 给定N个训练样本,参数向量𝐰的解域位于N个超平面正半部分的交集。
由于线性判据参数有多个可能的解,学习算法就是要从解域中找到一个最优解。
目标函数
设计目标函数:目标函数反映了如何实现有效决策的核心思想。
- 常见的目标函数:误差(均方差)、交叉熵......
- 加入约束条件(例如,正则项):提高泛化能力。
目标函数的求解:最小化/最大化目标函数。
- 涉及优化技术
- 解析求解:求关于训练参数的偏导,并设置偏导为0
- 迭代求解:先猜测参数初始值,然后不断的根据当前计算得到的更新值迭代更新参数。
加入约束条件:提高泛化能力。
- 加入约束后,使得解域范围收缩
- 沿着每个样本向量𝒙𝑖方向的收缩距离为:
4.3、并行感知机算法
感知机算法
目的:根据标记过的训练样本{(𝒙𝑛,𝑡𝑛)},学习模型参数:𝐰,𝑤0
预处理:
- 步骤1:将两个参数合为一个参数𝒂,线性判据改写为
- 步骤2:将𝐶2类的训练样本全部取反
- 几何解释:在几何上,通过在特征空间上增加一个维度,使得决策边界可以通过原点(𝑤0项)。翻转𝐶2类的样本:得到一个平面使得所有样本位于该平面同一侧。
并行感知机
目标函数:
- 思想:被错误分类的样本最少
- 针对所有被错误分类的训练样本(即输出值小于0的训练样本),其输出值取反求和
目标函数求偏导:
- 最小化该目标函数:取目标函数关于𝒂的偏导(即梯度)---
- 偏导不含有𝒂,所以不能简单的通过设置偏导为0来求解𝒂。
梯度下降法:使用当前梯度值迭代更新参数。
- 更新的方向(正负):假设在k=1迭代时刻,参数取值𝒂1情况下,每个维度的梯度反方向就是该维度往目标函数最小值收敛的最速下降方向
- 更新的大小:每个维度的梯度幅值代表参数在该维度上的更新程度
- 通常加入步长(𝜂𝑘)来调整更新的幅度。每次迭代可以用不同的步长
算法流程:
4.4、串行感知机算法
串行感知机(训练样本是一个一个串行给出时适用)
目标函数:(思想:当前样本被错误分类的程度最小)如果当前训练样本被错误分类,最小化其输出值取反:
目标函数求解:
- 最小化目标函数:取关于参数向量𝒂的偏导
- 偏导不含有𝒂,所以仍使用梯度下降法来求解𝒂。
算法流程:
收敛性:如果训练样本是线性可分的,感知机(并行和串行)算法理论上收敛于一个解。(步长决定收敛速度,以及是否收敛到全局或者局部最优)
感知机变体:
- 问题:当样本位于决策边界边缘时,对该样本的决策有很大的不确定性
- 解决思路:加入margin约束条件,将错误分类的标准改为
- 目标函数:
- 目标函数求解:最小化目标函数,取关于参数向量𝒂的偏导
4.5、Fisher线性判据
Fisher判据基本原理
找到一个最合适的投影轴,使两类样本在该轴上投影的重叠部分最少,从而使分类效果达到最佳。
目标函数
表征量的数学表达:
- 类间样本的差异程度:用两类样本分布的均值之差度量。
- 类内样本的离散程度:用每类样本分布的协方差矩阵表征。
在投影轴𝐰上:最大化如下目标函数
目标函数优化
- 首先计算目标函数中的每一项
- 带入目标函数,可以得到目标函数的新表达(类间散度,类内散度)
- 求解目标函数
最优参数解:𝒘最优解,𝑤0的解,Fisher线性判据
决策边界:
训练算法流程:
4.6、支持向量机基本概念
设计思想:给定一组训练样本,使得两个类中与决策边界最近的训练样本到决策边界之间的间隔最大
间隔:在两个类的训练样本中,分别找到与决策边界最近的两个训练样本,记作𝒙+和𝒙−。𝒙+和𝒙−到决策边界的垂直距离叫作间隔,记作𝑑+和𝑑−。
目标:最大化总间隔。
支持向量的概念:
分类器重新表达:
- 在支持向量机中,正负类训练样本输出真值分别用+1和-1来表达。
- 给定标记过的训练样本{(𝒙𝑛,𝑡𝑛)},线性分类器可以表达为:
分类器新的表达中,当𝒙𝑛是支持向量时,等式成立:
间隔计算
最大化间隔,等价于最小化||𝒘||,所以目标函数设计为:,同时满足约束条件:
目标函数可以重新表达:
- 该目标函数是条件优化问题
- 目标函数自变量为𝒘,是关于𝒘的二次型函数
- 约束条件是关于𝒘的仿射函数(线性函数)
4.7、拉格朗日乘数法
条件优化问题
不等式约束优化问题:
等式约束优化问题:
条件优化求解:
等式约束
拉格朗日函数:
等价优化问题:等式约束问题可以转换为等价的不带约束的优化问题:
不等式约束
情况1:极值点落在可行域内
情况2:极值点落在可行域边界
综合两种情况
KKT条件&等价优化问题:
在𝑔𝒙≤0约束条件下最小化𝑓(𝒙)的问题,可以转化为如下约束条件(KKT条件)下的拉格朗日函数优化问题:
-->
4.8、拉格朗日对偶问题
主问题:带约束的原问题等价于如下(关于𝒙的)无约束问题
拉格朗日对偶函数
对偶函数:对偶函数是主问题的最优值下界,该下界只跟对偶变量𝚲和𝚪有关,与𝒙无关
对偶问题:针对𝚲>0和𝚪,最大化对偶函数𝐿𝐷,得到主问题的对偶问题(首先求取𝐿关于𝒙的最小值(下界),再求取下界关于𝚲,𝚪的最大值)
对偶函数的凹凸性
- 最小值函数的凹凸性:逐点(pointwise)最小值函数min是凹函数
- 对偶函数是凹函数:由于逐点最大化函数是凹函数,且拉格朗日函数可以看做关于对偶变量的仿射组合,所以对偶函数𝐿𝐷是凹函数
对偶问题:凸优化
由于目标函数𝐿𝐷是凹函数,约束条件是凸函数,所以对偶问题是凸优化(局部极值点就是全局极值点)问题,所以,对于难以求解的主问题(例如,非凸问题或者NP难问题),可以通过求解其对偶问题,得到原问题的一个下界估计
弱对偶性
- 设对偶问题的最优值为𝑑∗、主问题的最优值为𝑝∗
- 对于所有的优化问题都存在:
强对偶性
- 强对偶性:
-
如果强对偶性成立,则对偶问题获得主问题的最优下界
-
强对偶性成立的条件(Slater条件)
(如果强对偶性成立,则对偶问题获得主问题的最优下界)
4.9、支持向量机学习算法
构建拉格朗日函数
构建对偶函数
针对𝑤和𝑤0求解最小化
在极值点计算拉格朗日函数第二项
在极值点得到𝐿𝐷
对偶函数的约束条件:对偶函数是关于𝚲的函数,所以约束条件只需考虑𝚲的相关项
对偶问题
求解对偶问题:
- 这是标准的关于𝜆的二次规划(quadratic programming)问题
- 可以调用Matlab提供的quadprog函数来求解
支持向量
求解支持向量
参数最优解
w最优解:根据找到的支持向量𝒙𝑛以及对应的拉格朗日乘子𝜆𝑛∗构建𝒘∗:(𝑁𝑠表示支持向量的个数)
w0最优解:根据支持向量机定义的约束条件,针对任意一个支持向量𝒙𝑠:,由此得到:,𝑤0通常由所有支持向量取均值得到:
决策过程:
4.10、软间隔支持向量机
设计思想:
- 引入松弛变量𝜉𝑛,允许一些训练样本出现在间隔区域内,形成软间隔
构建目标函数
构建拉格朗日函数
构建对偶函数
- 如何针对𝑤、𝑤0和Ξ求解最小化:求拉格朗日函数𝐿关于𝒘,𝑤0和𝜉𝑛的偏导,并设偏导为0
- 在极值点消去𝑤、𝑤0和𝜉𝑛
- 在极值点得到对偶函数𝐿𝐷
- 约束条件:对偶函数是关于𝚲的函数,所以约束条件只需考虑𝚲的相关项
对偶问题:最大化该对偶函数得到最优的𝜦,得到最优的𝜦。即可得到最优的参数𝒘和𝑤0。
支持向量
求解支持向量
支持向量分析
参数最优解
𝑤最优解:用二次规划求解得到最优的𝜦∗,选取𝜆𝑛∗>0对应的训练样本𝒙𝑛作为支持向量,从而估计出𝒘
𝑤0最优解:通常只用unbounded支持向量来构建𝑤0。𝑤0通常由所有支持向量取均值得到。
决策过程
4.11、线性判据多类分类
多类分类的本质:非线性
思路一:One-to-all策略
假设条件:每个类与剩余类线性可分
针对每个类𝐶𝑖,单独训练一个线性分类器
每个分类器𝑓𝑖(𝒙)用来识别样本𝒙是属于𝐶𝑖类还是不属于𝐶𝑖类
设类别个数为𝐾,总共需要训练𝐾个分类器。有时也可以只训练𝐾−1个分类器:针对某个测试样本𝒙,如果所有𝐾−1个分类器都输出为非正值,则代表该样本属于剩余的第𝐾个类。
判别公式:
决策边界:
训练样本选择:对于每个分类器𝑓𝑖(𝒙),属于𝐶𝑖类的训练样本作为正样本,其余类别的训练样本作为负样本
混淆区域:
- 拒绝选项(reject case):针对单个测试样本𝒙,所有分类器输出都不是正值。
- 重叠:针对单个测试样本𝒙,出现多个分类器输出为正,形成多个类重叠的区域。
思路二:线性机
假设条件:每个类与剩余类线性可分
训练:基于one-to-all策略训练𝐾个线性分类器𝑓𝑖,每个分类器对应一个类𝐶𝑖
决策:使用输出值投票法(max函数)
线性机= 𝐾个线性模型+ 一个max函数
决策边界
- 通过max函数的引入,线性机将特征空间最终分为𝐾个决策区域。
- 决策边界𝐻𝑖𝑗垂直于超平面(𝒘𝑖−𝒘𝑗)
优势:由于使用max函数,不再有混淆区域(即拒绝区域和重叠区域)
思路三:One-to-one策略
假设条件:任意两个类之间线性可分,但每个类与剩余类可能是线性不可分的
针对每两个类𝐶𝑖和𝐶𝑗,训练一个线性分类器:𝑓𝑖𝑗(𝒙)=𝒘𝑖𝑗𝑇𝒙+𝑤0𝑖𝑗。𝐶𝑖类真值为正;𝐶𝑗类真值为负.总共需要训练𝐾(𝐾−1)/2个分类器
训练样本:对于每个分类器𝑓𝑖𝑗(𝒙),属于𝐶𝑖类的训练样本作为正样本,属于𝐶𝑗类的训练样本作为负样本
判别公式:
决策边界:
优势:适用于一些线性不可分的情况,从而实现非线性分类。与one-to-all策略相比,不再有重叠区域。
问题:会出现拒绝选项(reject case ),即样本不属于任何类的情况。
使用线性判据进行多类分类,本质上是利用多个线性模型组合而成一个非线性分类器。因此,决策边界不再是由单个超平面决定,而是由多个超平面组合共同切割特征空间。
4.12、线性回归
输出数据:二值数据,多类别数据,连续数据
输入样本:个数与特征维度的关系
线性回归模型表达:
给定训练样本,学习参数𝑾
- 给定𝑁个训练样本
- 目标函数可以使用均方误差(sum-of-squares error),即最小化均方误差(minimize square error, MSE):
- 目标优化:1.展开目标函数;2.对参数𝑾求偏导;3.采用梯度下降法更新𝒘和𝑤0;4.设置偏导为0,得到参数𝑾的闭式解,无需迭代(最小二乘法,适用于tall数据);5.𝑋𝑇𝑋分析:非奇异矩阵;𝑋𝑋𝑇分析:奇异矩阵;
线性回归模型
- 概率解释
- 似然函数(目标函数)
- 目标函数优化(最大似然估计)
4.13、逻辑回归的概念
MAP分类器:线性的情况,非线性的情况
Logit变换
后验概率的比例
后验概率比例取log
后验概率对数比率=线性判据输出:在每类数据是高斯分布且协方差矩阵相同的情况下,𝒙属于𝐶1类的后验概率与属于𝐶2类的后验概率之间的对数比率就是线性模型𝑓(𝒙)的输出
Logit变换定义:𝐶1类的后验概率与𝐶2类的后验概率之间的对数比率。
Sigmoid函数(连接线性模型和后验概率的桥梁)
线性模型𝑓(𝒙)+ Sigmoid函数= 后验概率
逻辑回归:线性模型𝑓(𝒙)+ sigmoid函数(单个逻辑回归就是一个神经元模型)
单个逻辑回归可以用于二类分类,其决策过程如下:
给定两个类,逻辑回归的决策边界仍然是线性的超平面:
适用范围:分类&回归
逻辑回归本身是一个非线性模型。
4.14、逻辑回归的学习
训练样本
- 正类(𝐶1类)样本的输出真值𝑡𝑛=1
- 负类(𝐶2类)样本的输出真值𝑡𝑛=0
最大似然估计法
模型输出的概率分布:给定单个输入样本𝒙,模型输出的类别标签𝑙可以看做一个随机变量
针对单个训练样本,模型输出的概率:单个训练样本𝒙𝑛放入模型,相当于对随机变量𝑙的一次采样试验(trial),输出真值标签𝑡𝑛相当于指定此次试验的正确结果
似然函数:
目标函数:对似然函数求取log,由于log是凹函数,所以对目标函数取反。相应的,最大化变为最小化。该目标函数其实就是交叉熵的表达式。
交叉熵:交叉熵可以用来度量两种分布的差异程度
给定𝑁个训练样本,把每个训练样本的交叉熵求和,得到最终的目标函数:
目标函数优化
梯度下降法:
- 对参数𝒘求偏导
- 对参数𝑤0求偏导
- 参数更新
梯度下降法要注意的问题:梯度消失问题
- 参数𝒘尽量选择较小的初始值,避免出现梯度消失问题
- 在达到一定训练精度后,提前停止迭代,可以避免过拟合
4.15、Softmax判据的概念
逻辑回归输出:属于正类的后验概率
后验概率:多类情况
- 参考类的后验概率𝑝(𝐶𝐾|𝒙)
- 任意正类的后验概率𝑝(𝐶𝑖|𝒙)
- 重新审视参考负类的后验概率𝑝(𝐶𝐾|𝒙)
- 任意类的后验概率𝑝(𝐶𝑖|𝒙)
Softmax函数
Softmax判据:𝐾个线性判据+ softmax函数。(Softmax判据本身是一个非线性模型)
Softmax判据的决策过程:
Softmax判据的决策边界
Softmax判据与神经网络:相当于由𝐾个神经元组成的神经网络输出层,每个神经元输出值代表属于该类的后验概率𝑝(𝐶𝑖𝒙)∈[0,1]。
适用范围:分类&回归
模型对比
4.16、Softmax判据的学习
目标函数:
Softmax模型输出的概率分布:针对单个样本𝒙𝑛,可以得到softmax预测输出的概率分布𝑝({𝑙𝑛𝑖}𝑖=1,...,𝐾|𝒙𝑛)、输出真值的概率分布𝑞({𝑙𝑛𝑖}𝑖=1,...,𝐾|𝒙𝑛)
交叉熵:目标函数:交叉熵解释给定单个样本𝒙𝑛,希望softmax模型预测输出的概率分布𝑝(𝒍𝑛|𝒙𝑛)符合输出真值的概率分布𝑞(𝒍𝑛|𝒙𝑛)。给定𝑁个训练样本,把每个样本的交叉熵求和,得到目标函数:
目标函数优化:
- 对参数𝒘𝑘求偏导
- 对参数𝑤0𝑘求偏导
梯度分析:从梯度公式可以看到,第𝑖个线性方程的参数𝒘𝑖和𝑤0𝑖的更新不仅依赖于第𝑖类的样本𝒙𝑛∈𝐶𝑖,而且还依赖于所有剩余类的样本𝒙𝑛∈𝐶𝑗,𝑖≠𝑗。
目标函数优化:参数更新,采用梯度下降法更新所有{𝒘𝒊,𝑤0𝑖}
4.17、核支持向量机(Kernel SVM)
Kernel方法的基本思想:如果样本在原始特征空间(𝑋空间)线性不可分,可以将这些样本通过一个函数𝜑映射到一个高维的特征空间(Φ空间),使得在这个高维空间,这些样本拥有一个线性分类边界
设计思想:高维空间表达
核技巧:映射函数𝜑很难得到
- SVM分类器需要两个步骤:通过映射函数𝜑,将𝑋空间两个向量投影到高维Φ空间;在高维Φ空间计算两个向量的点积;
- 低维空间点积vs.高维空间点积;
- 核函数:在低维𝑋空间的一个非线性函数,包含向量映射和点积功能,即作为𝑋空间两个向量的度量,来表达映射到高维空间的向量之间的点积;
Kernel SVM决策模型
给定测试样本𝒙,KernelSVM的决策模型为(在X空间):
Kernel SVM:一个单隐层神经网络
软间隔Kernel SVM的对偶问题:由于kernel SVM(尤其是高斯核)很容易产生过拟合,所以通常会加入松弛正则项,即软间隔Kernel SVM,其对偶问题为
核函数的条件:只要是半正定对称函数,都可以用作核函数。即对于𝑁个样本,如下矩阵𝐾是半正定对称矩阵。
常见的核函数:多项式核函数,高斯核函数
示例:XOR问题,非线性分类
如何构建非线性:
- 需要有非线性的基函数,例如,核函数
- 需要多个这样的基函数进行组合(可以是线性组合)
- 组合方式:并行组合&串行组合
思维导图: