查看原文
其他

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

刘才权 机器学习算法工程师 2021-12-31


作者:刘才权

编辑:李文臣


写在前面                                                                   
1

        如今机器学习和深度学习如此火热,相信很多像我一样的普通程序猿或者还在大学校园中的同学,一定也想参与其中。不管是出于好奇,还是自身充电,跟上潮流,我觉得都值得试一试。对于自己,经历了一段时间的系统学习(参考《机器学习/深度学习入门资料汇总》),现在计划重新阅读《机器学习》[周志华]和《深度学习》[Goodfellow et al]这两本书,并在阅读的过程中进行记录和总结。这两本是机器学习和深度学习的入门经典。笔记中除了会对书中核心及重点内容进行记录,同时,也会增加自己的理解,包括过程中的疑问,并尽量的和实际的工程应用和现实场景进行结合,使得知识不只是停留在理论层面,而是能够更好的指导实践。记录笔记,一方面,是对自己先前学习过程的总结和补充。 另一方面,相信这个系列学习过程的记录,也能为像我一样入门机器学习和深度学习同学作为学习参考。


章节目录

  • 基本形式

  • 线性回归

  • 对数几率回归

  • 线性判别分析

  • 多分类学习

  • 类别不平衡问题


基本形式                                                                  

        给定d个属性描述示例x=(x1;x2;...;xd),其中xi是x在第i个属性上的取值,线性模型(linear model)试图学得一个通过属性的线性组合来进行预测的函数,即,

一般用向量形式写成, 

其中,w=(w1;w2;...;wd)。w和b学得之后,模型就得以确定。


线性回归                                                                   

     给定数据集D={(x1,y1),(x2,y2),...,(xm,ym)},其中,xi=(xi1;xi2;...;xid),yi∈R。“线性回归”(linear regression)试图学得一个线性模型以尽可能准确的预测实际输出标记。

我们先考虑一种最简单的情况:输入属性的数目只有一个。线性回归试图学得, 

如何确定w和b呢?显然,关键在于如何衡量f(x)与y之间的差别。第二章中介绍过,均方误差是回归任务中常用的性能度量,因此我们可以试图让均方误差最小化,即, 

均方误差有非常好的几何意义,它对应了常用的欧几里得距离或简称“欧式距离”(Euclidean distance)。基于均方误差最小化进行模型求解的方法称为“最小二乘法”(least square method)。在线性回归中,最小二乘法就是输入找到一条直线,使所有样本到直线上的欧式距离之和最小。

 求解w和b使, 

最小化的过程,称为线性回归模型的最小二乘“参数估计”(parameter estimation)。我们可以将E(w,b)分别对w和b求导,得到, 

然后,领上面的式子为零,从而求得w和b的最优解,

更一般的情况是数据集D,样本由d个属性描述。此时我们试图学得, 

这称为“多元线性回归”(multivariate linear regression)。 类似的,可利用最小二乘法来对w和b进行估计。为了便于讨论,我们把w和b吸入向量形式,

相应的,把数据集D表示为一个mx(d+1)大小的矩阵X,其中,每行对应于一个示例,该行前d个元素对应于示例的d个属性值,最后一个元素恒置为1,即,

再把标记也写成向量形式y=(y1;y2;...;ym),则有, 

当[公式2-1]

为满秩矩阵(full-rank matrix)或正定矩阵(positive definite matrix)时,可求得,

 

然而,显示任务中[公式2-1]往往不是满秩矩阵。例如许多任务中我们会遇到大量的变量,其数目甚至超过样例数,导致X的列数大于行数,[公式2-1]显然不满秩。此时可解出多个w,他们都能使均方误差最小化。选择哪一个最为输出,将由学习算法的归纳偏好决定,常见的做饭是引入正则化(regularization)项。 更一般地,考虑单调可微函数g(.),令 

这样得到的模型称为“广义线性模型”(generalized linear model)。


对数几率回归                                                                 

        上一节讨论了如何使用线性模型进行回归学习,但若要做的是分类任务该怎么办?这里可以考虑广义线性模型:只要找到一个单调可微函数将分类任务的真实标记y与线性回归模型的预测值联系起来。 

考虑二分任务,其输出标记y∈{0,1},而线性回归模型产生的预测值, 

是实值,于是,我们需将实值z转换为0/1值。最理想的是单位阶跃函数(unit-step function)。 

但单位阶跃函数不连续,因此不能作为广义线性模型。于是我们希望找到能在一定程度上近似单位阶跃函数的“替代函数”(surrogate function),并希望它单调可微分。对数几率函数(logistic function)正是这样一个常用的替代函数(Sigmoid函数): 

即, 

函数如下图所示, 

下面我们来看如何确定w和b, 

我们可以通过“极大似然法”(maximum likelihood method)来估计w和b, 

根据凸优化理论,经典的数值优化算法如梯度下降法(gradient descent method)、牛顿法(Newton method)都可以求得最优解。

  

线性判别分析                                                                 

        线性判别分析(Linear Discriminant Analysis,简称LDA)的思想非常朴素:给定训练样例集,设法将样例投影到一条直线上,使得同样样例的投影点尽可能接近,异类样例的投影点尽可能远离;对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置确定新样本的类别,如下图所示, 

多分类LDA将样本投影到d'维空间,d'通常小于数据原有的属性数d,于是通过这个投影来减小样本点的维数,且投影过程中使用了类别信息,因此LDA也常被视为一种经典的监督降维技术。

  

多分类学习                                                              

        现实中常遇到多分类学习任务。有些二分类学习方法可直接推广到多分类。 

考虑N个类别C1,C2,...,CN,多分类学习的基本思路是“拆解法”,即将多分类任务拆为若干若干个二分类任务求解。具体来说,先对问题进行拆分,然后为拆出的每个二分类任务训练一个分类器;在测试时,对这些分类器的预测结果进行集成以获得最终的分类结果。 

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


  • “一对一”(One vs One,简称OvO)

  • “一对其余”(One vs Rest,简称OvR)

  • “多对多”(Many vs Many)。

多分类过程如下图所示(OvO与OvR示意图),

  


类别不平衡问题                                                                

        前面介绍的分类学习方法都有一个共同的基本假设,即不同类别的训练样例数目相当。如果不同类别的训练样例数目稍有差别,通常影响不大,但若差别很大,则会对学习过程造成困扰。 

针对这种情况,现有技术上塔体有三类做法(假定正类样例较少,反例样例较多):

  • 第一类是直接对训练集里的反例样本进行“欠采样”(undersampling),即去除一些反例使得正、反例数目接近,然后在进行学习;

  • 第二类是对训练集里的正类样例进行“过采样”(oversampling),即增加一些正例使得正、反例数目接近,然后再进行学习;

  • 第三类则是直接基于原始训练集进行学习,但在用训练好的分类器进行预测时,将“再缩放”(rescaling)嵌入到过程中,称为“阈值移动”(threshold-moving);

  




阅 


  1. ResNet, AlexNet, VGG, Inception: 理解各种各样的CNN架构

  2. GAN系列学习(2)——前生今世

  3. 机器学习/深度学习入门资料汇总

  4. Logistic回归实战篇之预测病马死亡率(一)


机器学习算法全栈工程师


                            一个用心的公众号

长按,识别,加关注

进群,学习,得帮助

你的关注,我们的热度,

我们一定给你学习最大的帮助

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存