前言
博主第一次接触过机器学习,内容可能有许多原文复现,但是我尽量用自己的话来讲,第一次写博客,就当作自娱自乐也好。
读书笔记第一目的是为了总结,第二是顺便在博客上记录我的学习历程,同时也希望读者能有一点点收获吧~如果不对的地方,还请多多指教!
正文
周志华的机器学习第三章讲的是:线性模型
首先从线性模型的基本形式出发,进而介绍了几种经典的线性模型(线性回归,二分类,多分类),博客也按照该流程陈述自己的学习收获。
1.线性模型的基本形式
线性模型,关键在于“线性”。顾名思义线性模型试图学得一个通过属性的线性组合来进行预测的函数,即:
其中x是包含d维属性的向量,(x1,x2,x3,...,xd)是d维属性的描述值。该模型由w=(w1,w2,w3,...,wd)和b所确定。
显而易见,输入向量x的每一项属性都对应一定的权重wi ,不同的权重代表该属性对于此模型的贡献度。
一般向量形式写成:
2.线性回归
先考虑简单的情况,即每个样本只有一个属性,一元线性回归。
给定数据集:
,其中yi为xi的真实标记。
线性回归则试图学得一个线性模型尽可能准确地将预测f(xi)去 逼近yi,即:
显然,既然是逼近,那么误差是存在的。一个良好的线性回归模型的关键就是如何将f(xi)与yi之间的误差最小化!而该模型是由w以及b确定的,那么问题回到w,b的确定:
回归任务中最常用的性能度量是均方误差,也称平方损失,因此上述w,b可以通过均方误差的最小化来计算得出,均方误差:
基于均方误差最小化来进行模型求解的方法称为“最小二乘法”,而在线性回归任务中,最小二乘法就是希望学得一条直线,使得所有样本到该直线上的欧氏距离之和最小。
求解出w和b使得均方误差最小化的过程也称为线性回归模型的最小二乘“参数估计”,换句话讲就是对均方误差线性方程求最小值,解出w,b。通过对w,b分别求偏导,并另偏导为0即可解出w,b,从而确定对应的模型结果。
更一般的,样本由d维属性描述的情况,则为多元线性回归:
类似地,也是一样通过最小二乘法对w和b进行估计,为了方便讨论,我们尽量将模型中的各类数据以向量及矩阵形式表示:我们将w和b纳入向量形式,其中是一个d+1维的向量。并且将数据集D表示为一个m行,d+1列的矩阵,其中每行代表一个样本。
同时也将(y1,y2,y3,...,ym)以向量y=(y1;y2;...;ym)表示。
估其均方误差函数可定义为:,其中为预测实值。有兴趣的博友可以将该公式展开,与上述一元线性回归求解过程的均方误差方程区别就是多元线性回归中每个样本的均方误差方程不再是仅有一个属性描述,而是d个。
对均方误差函数关于求导,并另导数为0,解出,这其中相对于一元的较为复杂,因为涉及矩阵求导,矩阵逆计算等。
矩阵解问题又涉及多解,单一解问题,后者即为结果,前者的话还需根据学习算法的归纳偏好决定。
我们即可让线性模型的预测值f(x)逼近真实标记y,当然也可以让线性模型的预测值f(x)通过联系函数g(·)来逼近不同情况下的目标。
例如我们认为样本对应的输出标记是在指数尺度上变化的,那么我们可以另
即g(·)=ln(·),这是样本对应的输出标记在指数尺度上变化的特例,一般化来定义:
,其中g(·)为单调可微函数,这也就是“广义线性模型”。
3.对数几率回归
上述讨论了线性模型以及线性模型进行回归学习,但是如果要利用线性模型进行分类怎么办?
答案是分析分类任务的真实标记y与线性回归模型的预测值之间的联系,求出联系函数g(·),建立广义线性模型进行求解。
例如二分类问题,y∈{0,1},则需要将线性回归模型产生的预测实值转换为0/1,而因为g(·)必须为单调可微函数,估最直观的单位阶跃函数是不可取的,因此另外考虑对数几率函数:
,将线性模型的预测实值带入z可得:
进而可以变换为:,如果将y视为样本x作为正例的可能性,则1-y就是其作为反例的可能性。y/1-y是两者的比值,称为“几率”,反映了x作为正例的相对可能性。由此可以看出,实际上我们是在用线性模型的预测实值去逼近真实标记的对数几率,估该模型又称为“对数几率回归”。
通过对数几率回归可以进行分类学习,该模型的确定同样是w以及b的确定。
由上已假设y为正例的可能性,1-y为反例的可能性,则令y=,另1-y=,则可得:
显然有:,
在线性回归分析中,我们是通过均方误差最小化来求解出w和b的,而在对数几率回归这个分类学习中,为了能够让训练集中样本属于其真实标记的概率越大越好,我们可以应用极大似然法,估计出w和b,从而达到这个目的。
对数几率回归模型最大化“对数似然”:,进一步基于梯度下降法,牛顿法可求得最优解。
4.线性判别分析(LDA)
LDA的思想非常朴素:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近,不同样例的投影点尽量远离。
在对新样本进行分类时,将该新样本投影到直线上,根据投影点的位置来确定该新样本的类别,从而达到分类效果。
给定数据集,另分别表示i∈{0,1}类别的样例集合,均值向量,协方差矩阵。用分别表示这两类样本投影到直线上的中心,用分别表示将所有样本投影到直线上的协方差。
因为直线是一维空间,所以中心以及协方差都是实值。
根据LDA的总体思想,相同类别的样例接近,不同类别的样本远离。对应的是同类别的样例协方差尽量小,不同类别的投影中心距离尽量大,即:尽量小,尽量大,同时考虑二者,则可得到最大化目标J:
定义“类内散度矩阵”:
定义“类间散度矩阵”
则J可重写:,这就是LDA欲最大化的目标,即类内散度矩阵与类间散度矩阵的广义瑞利商。
如何确定w?
可以通过将转化未在求得最小这一条件极值问题。
则我们可以通过拉格朗日乘子法进行求解,经过拉格朗日乘子法,上述极值问题等价于求的解,
注意到的方向恒为,因为最大化目标的解与w的长度无关,只与其方向有关,所以不妨设=
带入,可解得
5.多分类学习
前面提到的分类都是二分类,而现实生活中是有不少多分类问题的。对于多分类问题,不妨将其拆分为多个二分类问题求解。
所以对于多分类问题,关键在于如何拆分:
最经典的拆分策略有三种:OvO,OvR,MvM。
下面对于这三种拆分策略进行分析,给定数据集
关于OvO:
OvO策略是将这N个类别,一个vs一个这样进行配对训练,显然会产生N(N-1)/2个二分类任务。这样的话带来的一个问题就是会造成存储开销较大,并且测试时间也较长。
通过训练后产生N(N-1)/2个二分类器,当新样本进行测试时,经过每个二分类器都会有一个类别结果输出,将预测最多的类别作为最终分类结输出。
关于OvR:
OvR策略是将一个类的样例作为正例,剩余其他类的样例都作为反例来训练。估有N个类别的话共能产生N个二分类器。需要注意的是在每个分类器训练的过程中,OvR需要使用到反例的所有样例,估该策略的训练时间开销较大。
当新样本测试时,若只有一个分类器预测为正类,则该预测作为最终结果。若有多个分类器预测为正类,则此时应考虑各个分类器的预测置信度,选择置信度最大的类别标记作为分类结果。
关于MvM:
MvM策略是每次将若干个类视为正类,若干个类视为反类,但并不是随意选取的,文中介绍的是一种最常用的MvM技术:“纠错输出码”ECOC
ECOC工作过程分为两步:
(1)编码,对N个类别进行M次划分,每次划分将一部分类别作为正类,一部分类别作为反类,形成一个二分类训练集。这样一共可以产生M个训练集,可以训练出M个分类器。
(2)解码,M个分类器分别对测试样本进行预测,预测标记组成一个编码,将该预测标记编码与各个类别各自的编码进行比较,返回其中距离(欧氏距离,海明距离)最小的类别作为最终预测结果。
ECOC的类别划分主要通过“编码矩阵”指定,而编码矩阵有多种形式,常见的有二元码(-1,+1)和三元码(-1,0,+1)
如图所示,共4个类别,进行了M=5次划分,共有f1,f2,f3,f4,f5这5个分类器。每个类别经过这5个分类器都会输出一个编码,例如3-5(a)中的C1类的输出编码为(-1,+1,-1,+1,+1),同理每个测试新样本也会输出一个5位的编码,通过测试编码与各个类别编码之间的距离,例如欧式距离,海明距离,选取距离最小的一个类别作为最终输出类别即可完成分类任务。
一般来说ECOC在分类的时候因为有多位编码,存在一定的容错能力,如果训练类别与类别之间海明距离很大,那么即使测试样本在输出编码的时在某个或者某几个分类器输出的编码出错了,还是有可能能归到正确的类别中的。
不失一般性,ECOC编码越长,纠错能力越强,同时分类器的训练,存储开销也都会增大,同时ECOC编码也不可能无限长,因为类别的组合是有限的,超过一定范围后的编码是没有意义的。
6.类别不平衡问题
前面的问题都是有一个前提假设:不同类别的训练样本数目相当。如果不同类别的训练样本数目稍有差别,那么问题不会很大,但是如果差别很大,则存在很大问题。
例如1000个样例中有998个反例,2个正例,那么学习方法只需要一直输出反例,则可达99.8%的精度。
类别不平衡问题不仅仅出现在原始数据中,而且也有可能出现在经过OvR,MvM策略后产生的二分类任务,因为这两个策略选取样本上面是存在类别不平衡问题的,不过这通常不需要专门处理,因为不同类别都经过OvR,MvM策略后会抵消掉该问题。
不过了解不平衡类别处理的方法还是很有必要的:
我们从线性分类器的角度讨论,在我们用对新样本x进行分类时,实际上是通过用预测实值与一个阈值进行比较。实际上,y表达了正例的可能性,几率y/1-y反映了正例可能性与反例可能性之间的比值,不考虑类别不平衡的话,当y/1-y>1时,我们则认为该样本预测结果为正例的可能性大于反例的可能性。y/1-y>1的理论基础是预测几率>观测几率,而在此观测几率我们不考虑分类不平衡的话为1=正例/反例,而实际上观测几率是m等于样本正例数目/反例数目.估该判断应修改为: y/1-y>m,因此如果考虑类别不平衡问题,我们应该以此为决策依据。
以上解决方法是基于训练集是从真实样本总体中无偏采样,而实际中这个假设往往不成立。因此除了上述解决方法之外,常用的应对类别不平衡问题的策略还有欠采样和过采样。
欠采样就是去除一些反例使得正反例数目接近,过采样就是增加一些正例使得正反例数目接近。