《西瓜书》-3.线性回归

3.线性回归

3.1.什么是回归

回归是监督学习的一个重要问题,回归用于预测输入变量和输出变量之间的关系。

回归模型是表示输入变量到输出变量之间映射的函数

回归问题的学习等价于函数拟合:使用一条函数曲线使其很好的拟合已知函数且很好的预测未知数据。

回归问题分为模型的学习和预测两个过程。基于给定的训练数据集构建一个模型,根据新的输入数据预测相应的输出。

回归问题分类:

按照输入变量的个数可以分为一元回归和多元回归;

按照输入变量和输出变量之间关系的类型,可以分为线性回归和非线性回归。

3.2.一元线性回归

证明损失函数E(w,b)是关于w和b的凸函数

看这个之前先看首先需要明白以下定理:

1. 二元函数判断凹凸性

在区域D上具有二阶连续偏导数,记

(1)在D上,恒有A>0,且时,在区域D上是凸函数;

(2)在D上,恒有A<0,且时,在区域D上是凹函数。

2. 二元凹凸函数求最值

是在开区域D内具有连续偏函数的凸(或者凹)函数,,则必为在D内的最小值(或最大值)

根据上述定理,我们应该首先求出A、B、C

上式即为式3.5

上式即为式3.6

 

此式A是大于0的,因为A如果等于0,则所有的,没有意义

接下来看

其中为x的均值,又因

所以

m是大于等于0的,,即,也即损失函数E(w,b)是关于w和b的凸函数。

求解过程:

令一阶偏导数等于0求b:

得:

上式即为式3.8,同时对b进行恒等变形得:

令一阶偏导数等于0求w:

代入得:

解得:

又因

 

代入上式得:

上式即为式3.7

向量化w

观察

分子分母都有累加的式子,而这些累加的式子很像向量的点乘后的结果,将累加的式子抽象成向量的点乘的过程,就是向量化。

 

为什么要向量化?

分子分母这些累加式子翻译成python代码,就是for循环,循环的次数和样本数量m成正比,时间复杂度比较高,向量化之后,就可以直接使用Numpy进行计算,Numpy提供了大量矩阵运算相关的函数,对这些函数在内部实现进行了优化,使其性能提升了很多,这就是向量化的原因

首先对w进行恒等变形:

同时有:

将此三式代入w并进行恒等变形:

定义向量化时需要使用的向量:

对w进行向量化得:

3.3.多元线性回归

首先将和b组合成

根据向量点乘 展开得

将d表示成并乘以1得

接下来求损失函数

定义向量化需要的变量

是m行1列的列向量

到此,得到式3.9后面的式子

接着求的导数

上式即为式3.10

 

证明损失函数是关于的凸函数

首先,引入Hessian(海森)矩阵的定义

多元实值函数凹凸性判定定理:设是非空开凸集(D是n维向量空间的一个集合),且在D上二阶连续可微,如果的Hessian矩阵在D上是正定的,则是D上的严格凸函数。

函数关于的二阶导数为:

此即为Hession矩阵,我们这里假设是正定矩阵。

令一阶偏导数等于解出

上式即为式3.11

 

3.4.对数几率回归

但阶跃函数不可导。一个近似替代函数就是对数几率函数:

阶跃函数与对数几率函数如图所示:

这是一个“Sigmoid函数”:形似S形函数。将代入有:

将上式变换有:

左边是求y的几率并取对数,称为对数几率。实际上是在用线性回归模型的预测结果,去逼近真实标记的对数几率。该模型叫做:logistic regression,简称LR。

虽然它的名字是“回归”,但实际却是一种分类学习方法。

这里随机变量y取1和0的概率分别为

则可以得到似然函数:

或者

于是,我们可通过“极大似然法”(maximum likelihood method)来估计w和b。即最大化“对数似然”

综合可得

最大化这个式子等价于最小化加个负号:

式3.27的另一种求法:

这个式子加个负号即为式3.27

接下来求和b,只需利用梯度下降法或牛顿法求得式3.27的最优解即可。

3.5.线性判别分析(LDA)

线性判别分析(Linear Discriminant Analysis,简称LDA),二分类问题上最早由Fisher于1936年提出,亦称费舍尔判别分析,是一种数据降维的方法

其基本思想是:将训练样本投影到一条直线上,使得同类的样例尽可能近,不同类的样例尽可能远。如图所示:

首先定义一些变量:

类数据的训练样本,类数据的均值向量,类数据的协方差矩阵

投影到直线上后,样本中心(均值)所在的投影就变为,协方差变为

这里推导协方差:

协方差定义:

投影到直线后的协方差为:

则有

推导过程:

这就是LDA最大化的目标。J叫做广义瑞利商(generalized Rayleigh quotient)。

如何求解

由于分子和分母都是关于的二次项,因此解与的长度无关,只与方向有关,令,则有:

推导过程:

由公式(3.36)可得拉格朗日函数为

求偏导可得

令上式等于0即可得

由此得出式3.37

然后对上式左右两边分别乘以

转换为求特征向量,即可求得

3.6.多分类学习

现实中我们经常遇到不只两个类别的分类问题,即多分类问题,在这种情形下,我们常常运用“拆分”的策略,通过多个二分类学习器来解决多分类问题,即将多分类问题拆解为多个二分类问题,训练出多个二分类学习器,最后将多个分类结果进行集成得出结论。

最为经典的拆分策略有三种:

一对一(one vs one,OvO)

一对多(one vs rest,OvR)

多对多(many vs many,MvM)

 

OvO:

思想:给定数据集D,假定其中有N个真实类别,将这N个类别进行两两配对(一个正类/一个反类),

产分类器个数:产生N(N-1)/2个二分类学习器

测试:将新样本放入所有的二分类学习器中测试,得出N(N-1)/2个结果,最终投票产生结果。

OvR:

思想:给定数据集D,假定其中有N个真实类别,每次取出一个类作为正类,剩余的作为反类,

产分类器个数:产生N个二分类学习器

测试:得出N个结果,若仅有一个分类器预测为0类,其余1类,则对应为0类。若有多个都是0类,则根据各个的预测置信度。置信度最大的类别标注为分类结果。

上图所示N=4,左边为OvO,右边为OvR

左边:N=4,则分类器有6个。新样本测试6次,然后投票。

右边:N=4,则分类器有4个。C3预测为正类,其余均负类,则最终为C3。

MvM:

思想:给定数据集D,假定其中有N个真实类别,每次取若干个类作为正类,若干个类作为反类(通过ECOC码即纠错输出码给出编码),若进行了M次划分,则生成了M个二分类学习器

测试:(解码),得出M个结果组成一个新的码,最终通过计算海明/欧式距离选择距离最小的类别作为最终分类结果。

对于左图,第一个分类器f1将C1,C3,C4为负类,C2为正类;其余依次设置,共M个分类器。每行是对应类别的编码,长度为M。新样本测试后得到M长度的码,与各类对比,距离最近的为该类。

为何叫做纠错输出码?

答:测试阶段,ECOC编码对分类器的错误有一定的容忍和修正能力。

例如左图中,对测试示例的正确预测编码是(-1,+1,+1,-1,+1),但若是f2分类器出错了,预测成了(-1,-1,+1,-1,+1),仍然可以得到正确的结果。

一般的,对于同一个任务,ECOC编码越长,纠错能力越强。然而编码长意味着分类器数目多了,开销增大。

3.7.类别不平衡问题

类别不平衡(class-imbanlance)就是指分类问题中不同类别的训练样本相差悬殊的情况,例如正例有998个,而反例只有2个,则学习器永远只返回新样本为正例。这个时候我们就需要进行相应的处理来平衡这个问题。

常见的做法有三种(正例少,反例多为例):

(1)对反类样本降采样。

降采样,即抛弃一些反例。例如将反例划分为若干个集合,供不同学习器使用。每个学习器角度看降采样了,但总体不会丢失信息。

(2)对正例样本上采样。

上采样,即增加一些正例。但不能简单重复采样,否则过拟合严重。代表性算法SMOTE,通过对训练集的正例进行插值,产生额外的正例。

(3)直接基于原数据集进行学习,对预测值进行“再缩放”处理。

表示正例数目,表示反例数目,则观测几率是,在决策时,基于下式执行

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值