《机器学习》学习记录(3) - 线性模型

线性模型,线性肯定大家都知道,至于线性模型其实也很简单:根据给定的(x,y)点对,求出一条与这些点拟合效果最好的直线y=ax+b。之前我们提到:在机器学习的术语中,当预测值为连续值时,称为“回归问题”,离散值时为“分类问题”。本篇先从线性回归任务开始,接着讨论分类和多分类问题。

3.1 基本形式

线性模型:
在这里插入图片描述

3.2 线性回归

线性回归问题就是试图学到一个线性模型尽可能准确地预测新样本的输出值。
例如:通过历年的人口数据预测2017年人口数量。在这类问题中,往往我们会先得到一系列的有标记数据,例如:2000–>13亿…2016–>15亿,这时输入的属性只有一个,即年份;也有输入多属性的情形,假设我们预测一个人的收入,这时输入的属性值就不止一个了,例如:(学历,年龄,性别,颜值,身高,体重)。

有时这些输入的属性值并不能直接被我们的学习模型所用,需要进行相应的处理,对于连续值的属性,一般都可以被学习器所用,有时会根据具体的情形作相应的预处理,例如:归一化等;对于离散值的属性,可作下面的处理:
若属性值之间存在“序关系”,则可以将其转化为连续值,例如:身高属性分为“高”“中等”“矮”,可转化为数值:{1, 0.5, 0}。
若属性值之间不存在“序关系”,则通常将其转化为向量的形式,例如:性别属性分为“男”“女”,可转化为二维向量:{(1,0),(0,1)}。

1. 首先考虑,当输入属性只有一个的时候,就是最简单的情形。

线性回归试图学得:
在这里插入图片描述
我们利用第二章回归任务最常用的性能度量均方误差,因此我们可试图让均方误差最小化:w*, b*表示 w 和 b 的解。 这里其实是梯度下降,w和b为两个参数,对于凸函数的时候,切线为了的时候取得最小值,最小值两侧导数都会趋向零 即:
在这里插入图片描述
而均方误差对应常用的“欧氏距离”,可以通过我们最熟悉的“[最小二乘法]”(Euclidean distance)来求解,首先计算出每个样本预测值与真实值之间的误差并求和,通过最小化均方误差MSE,使用求偏导等于零的方法计算出拟合直线y=wx+b的两个参数w和b,计算过程如下图所示:
在这里插入图片描述
上面求偏导过程是将累加展开,求偏导后再合起来。

在这里插入图片描述
2. 当输入属性有多个的时候,例如开头提到的:
在这里插入图片描述
这时候我们通过矩阵的方法来求解较为方便,因为用梯度下降会有很多参数。将具有m个样本的数据集表示成矩阵X,将系数w与b合并成一个列向量,这样每个样本的预测值以及所有样本的均方误差最小化就可以写成下面的形式:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同样地,我们使用最小二乘法对w和b进行估计,令均方误差的求导等于0。
在这里插入图片描述
具体求导过程如下:
在这里插入图片描述
需要注意的是,当一个矩阵的行列式不等于0时,我们才可能对其求逆,因此对于下式,我们需要考虑矩阵(X的转置X*)的行列式是否为0,若不为0,则可以求出其解,若为0,则需要使用其它的方法进行计算。通过正则化来处理,此处不展开(我也不清楚,不过后面用正则化来避免过拟合,可以等后续学习了再回过头来看)。先看不为零的情况即X可逆则:
在这里插入图片描述
在这里插入图片描述
另一方面,有时像上面这种原始的线性回归可能并不能满足需求,例如:y值并不是线性变化,而是在指数尺度上变化。这时我们可以采用线性模型来逼近y的衍生物,例如lny,这时衍生的线性模型如下所示,实际上就是相当于将指数曲线投影在一条直线上,如下图所示:
在这里插入图片描述
在这里插入图片描述
更一般地,考虑所有y的衍生物的情形,就得到了“广义的线性模型”(generalized linear model),其中,g(*)称为联系函数(link function)。
在这里插入图片描述

3.3 对数几率回归

回归就是通过输入的属性值得到一个预测值,利用上述广义线性模型的特征,是否可以通过一个联系函数,将预测值转化为离散值从而进行分类呢?线性几率回归正是研究这样的问题。若要解决多分类问题呢?因此从二分类开始,对数几率引入了一个对数几率函数(logistic function),将预测值投影到0-1之间,从而将线性回归问题转化为二分类问题。

单位阶跃函数:
在这里插入图片描述
单位阶跃函数与对数几率函数图示:
在这里插入图片描述
由于单位阶跃函数不连续,因此我们找到了对数几率函数来替代(这里z作为横坐标时候,如果-z等于0,那么就刚好是0.5的位置,若大于0,那么y就是小于0.5且大于0,若小于0,那么y就是大于0.5且小于1,就刚好是我们想要的结果):
在这里插入图片描述
如上图我们可以看出对数几率函数其实就是高数里面的“Sigmoid函数”,
在这里插入图片描述
上面最重要的是理解将y看出正例的这种概念!
因此其模型称为“对数几率回归”,虽然是回归,但是一种分类学习方法。

西瓜书中用的是概率统计的方法,其实应该更好理解,不过我这边对这块内容暂时不太会,然后看了吴恩达的视频就还是用函数的形式来解释,具体可以去B站看看他关于逻辑回归这块的视频。
下面这个代价函数其实是两部分,原因是单个函数只能正确拟合一个方向的预测,所以通过y和(1-y)组合两个代价函数得到我们想要的,其中h(x)就是上面的y。通过对代价函数求导,就可以得到类似线性回归的方式来更新θ。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下面使用最大似然估计的方法来计算出w和b两个参数的取值,求解过程如下:
在这里插入图片描述
上面y=1就是正例,y=0就是反例。
在这里插入图片描述
3.27具体推导过程以及简便方法:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关于凸函数和凸优化,此处大概了解概念即可,后续还会涉及。(凸优化总结),上述梯度下降法即为求最小值,意思若在山顶,每一次往坡度最大的走,最后就可以最快到底山脚下。

需要注意的是凸函数跟我们数学教材相反,其实是数学教材的凹函数(为什么凸函数是凹的)不必太过纠结。

在这里插入图片描述
3.30具体推导过程:
在这里插入图片描述

3.4 线性判别分析

线性判别分析(Linear Discriminant Analysis,简称LDA),其基本思想是:将训练样本投影到一条直线上,使得同类的样例尽可能近,不同类的样例尽可能远。

在这里插入图片描述
在这里插入图片描述
这里提到协方差矩阵,我看到一个比较通俗易懂的,大家可以看看。(协方差)
在这里插入图片描述

基于这样的考虑,LDA定义了两个散度矩阵。
• 类内散度矩阵(within-class scatter matrix)
在这里插入图片描述
• 类间散度矩阵(between-class scaltter matrix)
在这里插入图片描述
问题就变成了类内散度矩阵越小越好,而类间散度矩阵越大越好。通过两个散度矩阵将3.32改写成:
在这里插入图片描述
因此得到了LDA的最大化目标:“广义瑞利商”(generalized Rayleigh quotient)。

从而分类问题转化为最优化求解w的问题,当求解出w后,对新的样本进行分类时,只需将该样本点投影到这条直线上,根据与各个类别的中心值进行比较,从而判定出新样本与哪个类别距离最近。求解w的方法如下所示,使用的方法为λ乘子即拉格朗日乘子法。
在这里插入图片描述
3.37具体推导过程(其实就是拉格朗日乘子法的求解过程):
在这里插入图片描述

在这里插入图片描述

值得一提的是,LDA可从贝叶斯决策理论的角度来阐释,并可证明,当两类数据同先验、满足高斯分布且协方差相等时,LDA可到达最优分类。(这里的话看看就好,后续会有提到贝叶斯决策,再回头看)

可以将LDA推广到多分类任务中。假定存在N个类,且第i类示例数为mi。我们先定义“全局散度矩阵”
在这里插入图片描述
在这里插入图片描述
3.43具体推导过程:
在这里插入图片描述
在这里插入图片描述
证明3.44是3.35的推广形式:
在这里插入图片描述

3.5 多分类学习

现实中我们经常遇到不只两个类别的分类问题,即多分类问题,在这种情形下,我们常常运用“拆分”的策略,通过多个二分类学习器来解决多分类问题,即将多分类问题拆解为多个二分类问题,训练出多个二分类学习器,最后将多个分类结果进行集成得出结论。最为经典的拆分策略有三种:“一对一”(OvO)、“一对其余”(OvR)和“多对多”(MvM),核心思想与示意图如下所示。

OvO:给定数据集D,假定其中有N个真实类别,将这N个类别进行两两配对(一个正类/一个反类),从而产生N(N-1)/2个二分类学习器,在测试阶段,将新样本放入所有的二分类学习器中测试,得出N(N-1)个结果,最终通过投票产生最终的分类结果。

OvM:给定数据集D,假定其中有N个真实类别,每次取出一个类作为正类,剩余的所有类别作为一个新的反类,从而产生N个二分类学习器,在测试阶段,得出N个结果,若仅有一个学习器预测为正类,则对应的类标作为最终分类结果。
在这里插入图片描述
我们看到OvO和OvR相比,前者要训练的分类器要多得多,因此存储和测试开销要相对多些。但是在训练时,因为前者每个分类器只使用部分数据,而后者要用全量数据,所以类别多时,OvO的训练开销要更小一些。

至于预测性能,则取决于数据分布,在多数情况下两者差不多。

MvM:给定数据集D,假定其中有N个真实类别,每次取若干个类作为正类,若干个类作为反类(通过ECOC码给出,编码),若进行了M次划分,则生成了M个二分类学习器,在测试阶段(解码),得出M个结果组成一个新的码,最终通过计算海明/欧式距离选择距离最小的类别作为最终分类结果。显然,OvO和OvR是MvM的特例。
在这里插入图片描述
在这里插入图片描述
ECOC会对每种不同的正反类划分训练一个学习器,并用这些学习器去对新样本进行预测,并根据预测结果以及所有学习器类别划分组成的编码矩阵来决定最终的预测结果。比如从图3.5(a),我们可以看到五个分类器划分的编码矩阵为:

-1, +1, -1, +1, +1
+1, -1, -1, +1, -1
-1, +1, +1, -1, +1
-1, -1, +1, +1, -1

新样本在这五个学习器中的训练结果为向量y:(-1, -1, +1, -1, +1)。用y与矩阵的每一行进行比较就可以得到针对每一个类别的海明距离和欧式距离。距离最小的类别就是最终的分类结果。以C1类为例,向量y与C1类的海明距离和欧式距离的值如下:

海明距离:测试示例分类器对样本的分类结果如果和C1类不一致,则计数加1,否则不加,结果为:0+1+1+1+0 = 3

欧式距离:测试示例分类器对样本的分类结果减去C1类的分类划分,差值的平方和的开方,结果为:根号下( 0+4+4+4+0) = 根号下12 = 2又根号3

3.6 类别不平衡问题

前面的学习方法都有一个共同的基本假设,即不同类别的训练样例数目相当。若数目差别很大,则对学习过程会造成困扰。引出类别不平衡(class-imbanlance),其指分类问题中不同类别的训练样本相差悬殊的情况,例如正例有900个,而反例只有100个,这个时候我们就需要进行相应的处理来平衡这个问题。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

目前类别不平衡性学习的一个基本策略是“再缩放”(rescaling),现有技术大体上有以下三种做法:

  1. 在训练样本较多的类别中进行“欠采样”(undersampling),即去除一些反例使得正反例数目接近再进行学习,常见的算法有:EasyEnsemble,将反例划分为若干个集合供不同学习器使用,这样对每个学习器来看都进行了欠采样,但在全局来看却不会丢失重要信息。

  2. 在训练样本较少的类别中进行“过采样”(oversampling),即通过增加正例数目,使得正反列数目接近再进行学习,代表性算法SMOTE是通过对训练集里的正例进行插值来产生额外的正例。

  3. 直接基于原数据集进行学习,对预测值进行“再缩放”处理。其中再缩放也是代价敏感学习的基础。 称为“阈值移动”。例如上面提到的线性分类器问题,再缩放。
    在这里插入图片描述

学习过程中参考了资料如下:

1、机器学习 - 周志华
2、百度百科
3、https://blog.csdn.net/u011826404/article/details/75577216
4、https://datawhalechina.github.io/pumpkin-book/#/
5、https://www.jianshu.com/p/2063817b8c21

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值