Skip to content

[机器学习]03 线性模型

本章介绍最简单、最入门的模型——线性模型

3.1 基本形式

  • 线性模型的基本形式为:f(x)=ω1x1+ω2x2+...+ωdxd+b
  • 用向量表示为:f(x)=ωTx+b,其中ω=(ω1,ω2,...,ωd)T

可以看出,当ωb确定后,线性模型就确定了,所以本章接下来的任务就是花式确定ωb

3.2 线性回归

均方误差戳这里回顾一下

  • 在做线性回归之前,我们要先确定一点:什么样的线性函数是好的?
    • 根据我们朴素的想法:如果这条函数直线经过所有点,那它就是好的。确实,但前提是这得是有可能的。
    • 如果不存在经过所有点的直线,那这条直线至少能够尽量接近所有点,即要求“偏差最小”(这个表述有些不严谨)。
    • 如何去衡量这个偏差呢?首先想到的应该是点到直线的欧氏距离。广义最小二乘法(GLS)就是以欧氏距离为偏差,最小化偏差的平方和(即均方误差)。不过由于点到直线的距离计算起来比较麻烦,大多数时候我们仅使用输出值y这个维度的距离(f(xi)yi)作为偏差,这就是普通最小二乘法(OLS)
    • 事实上我们本章只需要知道OLS即可,因为平时也只使用OLS,平时说“最小二乘法”也是指的普通最小二乘法。

3.2.1 最小二乘的参数估计

这其实就是个优化问题,不过存在闭式解,这里介绍闭式解的推导过程。

闭式解:通过数学推导,得出的解析解,它可以保证计算结果就是最优解(而梯度下降等方式求出的只是逼近最优解的可行解)。

(1) 问题分析

  • 对于线性回归函数f(xi)=ωxi+b,我们的目标是求出最优的ωb(记作ωb),使得E(ω,b)=i=1m(f(xi)yi)2最小。这个过程可以视为对于一个函数E(ω,b)求极值的问题,表示为(ω,b)=arg(ω,b)mini=1m(yiωxib)2

根据高数的老套路,对变量分别求偏导,偏导均为0时,即为极值点。

  • 求偏导:
    • E(ω,b)ω=2(ωi=1mxi2i=1m(yib)xi)
    • E(ω,b)b=2(mbi=1m(yiωxi))
  • 令上式=0,解方程得:
    • ω=i=1myi(xix¯)i=1mxi21m(i=1mxi)2
    • b=1mi=1m(yiωxi)=y¯ωx¯
  • 上述结果就是闭式解,这是能正向直接算出来的,而不需要迭代。

(2) 解法优化

其实就是矩阵化,矩阵化之后不仅更美观,而且可以解决多元线性回归

  • 上述的解法已经能够解决问题了,xi不仅可以是标量,也可以是向量——理论上这就能解决任何线性回归问题了。

  • 但仔细想想,上述解法还不够优雅。既然xi都是向量了,为什么还要将ω,b表示为向量+标量的形式呢?对的,解法优化就是将上述运算矩阵化。

    设有m组样本xi,每个样本xi都是d维。好,接下来推导过程中注意设的新变量。

    • ω^=(ω;b),拼成列向量,此时ω^(d+1)维,ω^=[ω1,ω2,...ωd,n]T
    • X为一个m×(d+1)的矩阵,它是由xi最后增添一个1,然后转置后拼成的。
    X=[x11x12x1d1x21x22x2d1xm1xm2xmd1]=[x1T1x2T1xmT1]
    • 此时Y为一个列向量,维度为m
    • 此时该问题表示为ω^=argω^mini=1m(YXω^)T(YXω^)
  • ω^求导,得:E(ω^)ω^=2XT(Xω^y)

  • 令上式=0,解方程得:ω^=(XTX)1XTy

  • 这就是最小二乘法的矩阵解法,它仍然是闭式解,理论上能计算出最优解。

  • 但很明显,它足够优雅,但不够好用。一方面因为(XTX)1的计算难度挺大,另一方面它要求XTX满秩,不然有可能解出多个ω^

  • 从实用的角度出发,我们需要一个通用、简单的解法,而不一定非得理论上完美,那么这种解法就是迭代类方法,它被广泛用在对数线性回归、逻辑回归等问题中。

3.2.2 对数线性回归

其实就是yx不为线性关系,而是指数关系。

这一小节就是为下面的“对数几率回归”做铺垫的

  • yeωTx+b,则可以等价写成lny=ωTx+b,这样一个函数就是对数线性回归函数。
  • 推广来讲,凡是满足y=g1(ωTx+b)的函数,都可称之为“广义线性函数”,其中函数g(·)称为联系函数”。
  • 这时候又想起模式识别老师常说的一句话:“广义线性函数是线性函数吗?”答案是否定的;这里也是,对数线性回顾属于广义线性回归,但它不是线性的。

3.3 对数几率回归

本节我们讨论线性模型如何解决分类问题

虽然它叫“对数几率回归”,但实际上它是一个分类问题,而非回归问题。从名字上也能见端倪:“几率”嘛,一般是预测类别(分类)时才有的概念,回归问题一般是预测个数值,哪有什么“几率”。

  • 对于二分类问题,线性模型只需要回答“是”或“否”的问题,因此我们需要将线性模型的输出值转换为“是”或“否”的布尔值。
    • 由于多分类问题都可以视为二分类问题的组合,因此我们只讨论二分类问题,后面会看到如何组合的。

3.3.1 单位阶跃函数

这个函数不重要,只是为了引出Logistic函数

  • 关于如何让线性回归模型z=ωTx+b输出分类结果,可能最先想到的解决办法是单位阶跃函数:
y={1z>0;0.5z=0;0z<0;
  • z>0时判断为正例,z<0时判断为负例,z=0时可任意判别。
  • 但是单位阶跃函数不连续,数学性质不够优秀(比如不可导),因此不适合用于机器学习。我们期望能找到一个连续可导函数,能将(,+)映射到(0,1)Logistic函数就是这样一个函数。

3.3.2 Logistic函数

也叫“逻辑函数”

  • Logistic函数是一个S型函数,它的数学表达式为:
σ(z)=y=11+ez
  • 它的图像如下:

    • Logistic函数
    • 它的优势十分明显:
      • 判别规则十分简单
      • 输出了这一判别的概率
      • 连续可导
  • 我们将线性回归函数代入可得y=11+e(ωTx+b),这就是Logistic回归模型,同样可见,它也是个对数线性模型

    • 进行同样的取ln操作,并整理,得到lny1y=ωTx+b
  • 此外,Logistic还有个特殊性质:它的导数可以用它自己表示:σ(z)z=σ(z)(1σ(z)),不信可以自己代入算一下。这个性质也是手算Logistic回归的重要工具。

  • 题外话:Sigmoid函数是一类函数,即形似S的函数。Logistic函数就是Sigmoid函数的代表。往后如果不说的话,二者都认为是这个表达式。

3.3.3 解法demo

然后从考试的角度来说,由于公式比较复杂,且十分难算,所以应该不会考这里

仍然是以0-1二分类问题为例。这里用到了极大似然法,后面会讲到。

  • β=(ω;b),x^=(x;1),则ωTx+b可简写为βTx^。(这一步的目的是简化表示形式)
  • 再令:
p1(xi^;β)=p(y=1|x^;β)=eωTx+b1+eωTx+bp0(xi^;β)=p(y=0|x^;β)=11+eωTx+b;(其实也就是1p1(xi^;β))

其实就是把βTx^代入了Logistic函数中,注意到此时表达式形式为条件概率,即在当前x^,β的条件下,判定y=1y=0的概率,这正是我们所需的。

  • 则似然项可重写为p(yi|xi;ωi,b)=yip1(xi^;β)+(1yi)p0(x^;β)
    • 多观察一下就能发现,此式形式上就是计算期望。因为yi只能取0或1,所以当yi=0时,概率之前取1yi作为系数。

  • 对于上述似然项(期望),当然是越大说明模型效果越好,所以该问题转化为一个优化问题:max (ω,b)=i=1mlnp(yi|xi;ω,b)
  • 等价于最小化(β)=i=1m(yiβTxi^+ln(1+eβTxi^)),而对于该式,可使用梯度下降法、牛顿法等方法求解最优解。

3.4 线性判别分析

线性判别分析从功能上可以视作一种降维,其思想和实质都和PCA有些类似。但LDA和PCA的最主要的区别在于:PCA是无监督学习,它要求数据点整体尽可能分开,也就是最大化投影方差;而LDA是有监督学习,它要求投影后类间方差最大,类内方差最小。

对于本节,考试不要求运算,但是要求理解思想。

  • LDA的思想非常朴素:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离。

  • 给定数据集:D={(xi,yi)}i=1m

    • i类示例的集合Xi
    • i类示例的均值向量μi
    • i类示例的协方差矩阵Σi
    • 两类样本的中心在直线上的投影:ωTμ0ωTμ1
  • 则LDA的目标为:使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离,公式可表示为

minωTΣ0ω+ωTΣ1ωmax||ωTμ0ωTμ1||22
  • 把这两个结合起来可以得到优化的总目标:
maxJ=||ωTμ0ωTμ1||22ωTΣ0ω+ωTΣ1ω=ωT(μ0μ1)(μ0μ1)TωωT(Σ0+Σ1)ω
  • 然后咱们首先引入两个矩阵:
    • 类内散度矩阵:Sω=Σ0+Σ1
    • 类间散度矩阵:Sb=(μ0μ1)(μ0μ1)T
  • 优化目标可化为:J=ωTSbωωTSωω,这个又叫做广义瑞利商

3.4.1 总结

  • OK我们总结一下:
    • LDA的核心思想是:将样例投影到一条直线上,使得同类样例的投影点尽可能接近异类样例的投影点尽可能远离
    • 优化目标是最大化广义瑞利商,通常优化方法为拉格朗日乘子法

3.5 多分类问题

前面说过,多分类问题都可以视为二分类问题的组合(或者说多分类问题可以拆解为若干个二分类问题),这节就正是做这个事的。

本节的3种拆分策略:“一对一”(One vs. One, OvO)、“一对其余”(One vs. Rest, OvR)、“多对多”(Many vs. Many, MvM)。

  • 本节假定:数据集D={(x1,y1),(x2,y2),,(xm,ym)},yi{C1,C2,,CN},即数据集包括了m组数据,共有N个类别。

3.5.1 OvO

(1) OvO的思想

  • N个类别两两组合(握手问题),组合出共N(N1)2个二分类器fk
  • 训练时将CiCj类数据用以训练分类这两类的分类器。
  • 测试时将某样本同时提交给所有分类器,最后根据这N(N1)2个结果,按照投票数最多的类别作为最终判别结果。

(2) OvO的优缺点

  • 优点:训练时间短(每个分类器都是二分类问题,并且只需要和该分类器相关的数据即可)
  • 缺点:存储开销和测试时间大(N(N1)2个分类器,且每次测试都要执行这么多次分类)

3.5.2 OvR

(1) OvR的思想

  • 设计N个分类器,每个分类器fi都只做一个问题:当前样本xj是属于Ci类还是其他类。
  • 测试时将样本提交给每个分类器。
    • 若只有一个分类器预测为正例,则该样本属于该分类器对应的类别。
    • 若有多个分类器预测为正例,则通常考虑各分类器的预测置信度,选择置信度最高的类别作为最终判别结果。

(2) OvR的优缺点

  • 优点:相较于OvO,只训练N个分类器,存储和测试开销小。
  • 缺点:训练时间长(训练时要用到全部训练数据)

OvO和OvR的示例

3.5.3 MvM

  • 那么很明显了,MvM就是每个分类器将判断若干个类作为正类,其余作为负类,但是它的正反类必须有特殊的设计,不能随意选取。这里介绍一下最常用的MvM技术:输出纠错码(Error Correcting Output Codes, ECOC)。

3.5.4 ECOC

ECOC的主要步骤为编码解码。其过程需要结合MvM的具体过程解释。

  • 编码:M个分类器,每个分类器都将若干个类作为正类,其余作为负类,这M个分类器的判定结果组合起来就是该样本的ECOC码。
  • 解码:M个分类器分别对测试样本进行预测,每个分类器都会返回一个预测标记,共返回M个标记,这M个标记就是该样本的ECOC码,通常将其中距离最小的类别作为最终判别结果。
    • 二元ECOC码:预测标记是+1或-1;
    • 三元ECOC码:预测标记为+1、-1、0;
    • 此外距离也可以用欧氏距离或海明距离等来衡量。
  • 我知道这么说有点懵,那么看看下面的例子:
    • ECOC的编码和解码
    • 以图(a)为例,有5个分类器,前4行表示这5个分类器fi分别对4个类Cj的预测标记.我们能看出,每个分类器fi对不同的类C1C4只能返回2种判断结果,即正例or负例.
    • 第5行,对于一个测试用例,这些分类器分别返回相应的预测标记,构成测试用例的ECOC码。然后拿这个码与前面各类的码进行比较,距离最近的类就是最终判别结果。
    • 图(a)中直接给出了测试示例与各类的距离。按照海明距离和欧氏距离,最近的都是C3,所以最终判别结果为C3。而对于(b)来说,海明距离和欧氏距离最近的都是C2,所以最终判别结果为C2
  • ECOC编码的好处在于它对于单个分类器的错误有一定的容忍能力,它的思想有些类似于Boosting,也是训练若干个弱分类器,然后用类似投票的方式实现判决。

3.6 类别不平衡问题

咕咕咕

Extra03-总结

  • 本章的知识脉络如下

Ques03-例题整理

[公式推导·利用逻辑回归求导性质]

题目内容

  • 对于逻辑回归模型:
hθ(x)=11+eθTx
  • 其损失函数为:
J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]
  • 其中m为样本总数,yi表示第i个样本的标签,xi表示第i个样本的特征向量,θ为模型参数,θxi均为k维向量。对于损失函数梯度,我们有
J(θ)=[J(θ)θ1J(θ)θ2J(θ)θk]
  • 请计算J(θ)θj并给出详细推导过程。

分析与解答

  • 这一题要使用Logistic函数的求导性质.

(1) Logistic函数的导数性质

  • 设中间变量z=θTx,则

    hθ(x)=11+ezhθ(x)z=z[11+ez]=ez(1+ez)2=11+ezez1+ez =hθ(x)(1hθ(x))

这个式子稍后会用.

  • 然后我们按照J(θ)θj=J(θ)zzθj的两部分来计算
  • zθj好算,因为z=θTx,所以zθj=xj

(2) 计算J(θ)z

J(θ)z=z[1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]]=1mi=1m[y(i)1hθ(x(i))hθ(x(i))z(1y(i))11hθ(x(i))hθ(x(i))z]

σ和常数项提出来,然后内部计算了一个log求导.以log(hθ(x(i)))z为例,这个式子可以写成log(hθ(x(i)))hθ(x(i))hθ(x(i))z,前者即为1hθ(x(i))(y=log(x)求导嘛)

=1mi=1m[y(i)(1hθ(x(i)))(1y(i))hθ(x(i))]

这一步就是将Logistic函数的导数性质代入了,不多赘述

=1mi=1m(hθ(x(i))y(i))

简单合并同类项

(3) 计算J(θ)θj

J(θ)θj=J(θ)zzθj =[1mi=1m(hθ(x(i))y(i))]xj =1mi=1m(hθ(x(i))y(i))xj(i)

不过说真的.如果真的考场上推个这玩意,那我觉得有点太爆炸了;考场上顶多现场推个Logistic函数求导的性质.

[公式理解·线性模型公式理解]

题目内容

  • 对于线性回归模型f(x)=wTx+b,试解析在什么情况下可以消去线性回归的偏置项b

分析与解答

  • 根据最小二乘法可知,w=(XTX)1XTyb=ywTX,当X¯=0时,b=y¯。此时对于所有样本,设y(i)=y(i)b=y(i)y¯作为新的目标值,则此时回归模型函数可用g(x)=wTx代替f(x)=wTx+b,消去偏置项b以简化运算。

上次更新于: