跳转至

Chapter3 线性模型


线性模型引言

一般形式:

$$f(x)=w_1x_1+w_2x_2+...+w_dx_d+b$$

向量形式:

$$f(x)=w^Tx+b$$

其中,$w=(w_1;w_2;...;w_d)$,$x=(x_1;x_2;...;x_d)$。

感知机(Perceptron):

感知机是最简单的线性分类模型,目标是找一个超平面,将输入空间的样本分成正类和负类。

假设分数为正,分类成正类;分数为负,分类成负类。则误分类会有:

$$-y_i(w^Tx_i+b)>0$$

所以可以顺势定义损失函数:

$$L(w,b)=-\sum\limits_{x_i\in m}y_i(w^Tx_i+b)$$ 参数对应的梯度:

$$\nabla_wL(w,b)=-\sum\limits_{x_i\in m}y_ix_i$$

$$\nabla_bL(w,b)=-\sum\limits_{x_i\in m}y_i$$


回归任务

线性回归(Linear Regression):

线性回归的目的是学得一个线性模型,尽可能准确地预测实值的输出(连续值)。简单来说,就是直线拟合

Note

离散属性处理:

  • 有序关系:连续化为连续值
  • 无序关系:若有$k$个可能的属性值,则转换为$k$维的独热编码。

最小二乘法 Least Square Method

最小二乘法用于评估线性回归模型的拟合程度,以单元线性回归为例($x_i$ 和 $w$ 均为标量),我们要最小化均方误差

$$E_{(w,b)}=\sum\limits_{i=1}^m(y_i-wx_i-b)^2$$

参数对应的梯度:

$$\frac{\partial E}{\partial w}=2[w\sum\limits_{i=1}^mx_i^2-\sum\limits_{i=1}^m(y_i-b)x_i]$$

$$\frac{\partial E}{\partial b}=2[mb-\sum\limits_{i=1}^m(y_i-wx_i)]$$

令梯度为 $0$,得到闭式解:

$$w=\frac{\sum\limits_{i=1}^m[y_i(x_i-\overline{x})]}{\sum\limits_{i=1}^mx_i^2-\frac{1}{m}(\sum\limits_{i=1}^mx_i)^2}$$

$$b=\frac{1}{m}\sum\limits_{i=1}^m(y_i-wx_i)$$

多元线性回归

现在考虑多属性的线性回归,每个 $x_i$ 为 $d$ 维列向量。

通过齐次表达,$w$ 和 $b$ 可以被吸收入向量形式 $\hat{w}=(w;b)$:

alt text

数据集表示为

$$\mathbf{X}=\begin{pmatrix} x_{11} & x_{12} & ... & x_{1d} & 1 \\ x_{21} & x_{22} & ... & x_{2d} & 1 \\ ... & ... & ... & ... & ... \\ x_{m1} & x_{m2} & ... & x_{md} & 1 \end{pmatrix}=\begin{pmatrix} x_1^T & 1 \\ x_2^T & 1 \\ ... & ... \\ x_m^T & 1 \end{pmatrix}$$

$$y=(y_1;y_2;...;y_m)$$

因此我们要最小化均方误差

$$E_{\hat{w}}=(y-\mathbf{X}\hat{w})^T(y-\mathbf{X}\hat{w})$$

对 $\hat{w}$ 求导得:

$$\frac{\partial E}{\partial \hat{w}}=2\mathbf{X}^T(\mathbf{X}\hat{w}-y)$$

令导数为 $0$ 即可得到闭式解。若 $\mathbf{X}^T\mathbf{X}$ 是满秩矩阵或正定矩阵,则 $\hat{w}$ 的最优解

$$\hat{w}^*=(\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^Ty$$

此时的线性回归模型为

$$f(x_i)=x_i^T(\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^Ty$$

Note

若 $\mathbf{X}^T\mathbf{X}$ 不是满秩矩阵或正定矩阵,则引入正则化。

广义线性模型

$$y=g^{-1}(w^Tx+b)$$

其中,$g$ 为联系函数(Link Function),要求单调可微。

对数线性回归是 $g=\ln()$ 的情况:

$$y=\ln^{-1}(w^Tx+b)~\Longrightarrow~\ln y =w^Tx+b$$

alt text


二分类任务

单位阶跃函数:

$$z=w^Tx+b$$

$$y=\begin{cases} 0 & z<0 \\ 0.5 & z=0 \\ 1 & z>0 \end{cases}$$

预测值大于零则输出 $1$(正例),小于零则输出 $0$(反例),等于零则输出 $0.5$(正反例都可以)。

缺点:不连续,因此使用对数几率函数替代。

alt text

对数几率回归

$$y=\frac{1}{1+e^{-z}}=\frac{1}{1+e^{-(w^Tx+b)}}$$

得到的结果是样本被分类为正例的概率(而不是直接的分类结果)。

将样本作为正例的相对可能性的对数称为对数几率(Log Odds)

$$\ln\frac{p(y=1|x)}{p(y=0|x)}=w^Tx+b$$

$$p(y=1|x)=\frac{e^{w^Tx+b}}{1+e^{w^Tx+b}}$$

$$p(y=0|x)=\frac{1}{1+e^{w^Tx+b}}$$

极大似然法(Maximum Likelihood):

那么我们又该如何调整 $w$ 和 $b$,来最大化样本属于其真实分类的概率?

我们可以尝试最大化对数似然函数:

$$l(w,b)=\sum\limits_{i=1}^m\ln p(y_i|x_i;w,b)$$

令 $\beta=(w;b)$,$\hat{x}=(x;1)$,则 $w^Tx+b$ 可简写为 $\beta^T\hat{x}$。

再令 $p_1(\hat{x_i};\beta)=p(y=1|\hat{x_i};\beta)$,$p_0(\hat{x_i};\beta)=p(y=0|\hat{x_i};\beta)$,则

$$p(y_i|x_i;w,b)=y_ip_1(\hat{x_i};\beta)+(1-y_i)p_0(\hat{x_i};\beta)$$

代入对数似然函数并化简得:

$$l(\beta)=\sum\limits_{i=1}^m(y_i\beta^T\hat{x}_i-\ln(1+e^{\beta^T\hat{x}_i}))$$

然后再取个反,求最小化即可。

线性判别分析 Linear Discriminant Analysis (LDA)

alt text

LDA 的思想是:找到最佳的投影方向,使得同类样例的投影点尽可能接近,异类样例的投影点尽可能远离

LDA 的输入是样本数据,输出是投影方向 $w$。对于每个新样本,将其与投影方向做点积,得到的结果就是样本在投影方向上的判别得分,从而实现分类。

二分类 LDA:

  • $D={(x_1,y_1),(x_2,y_2),...,(x_m,y_m)}$:$x_i$ 是 $n$ 维向量,$y_i\in{0,1}$
  • $N_j~(j=0,1)$:第 $j$ 类样本的个数
  • $X_j~(j=0,1)$:第 $j$ 类样本的集合
  • $\mu_j~(j=0,1)$:第 $j$ 类样本的均值
  • $\Sigma_j~(j=0,1)$:第 $j$ 类样本的协方差矩阵(去掉分母)

$\mu_j$ 的维度为 $n\times 1$,表达式为:

$$\mu_j=\frac{1}{N_j}\sum\limits_{x\in X_j}x$$

$\Sigma_j$ 的维度为 $n\times n$,表达式为:

$$\Sigma_j=\sum\limits_{x\in X_j}(x-\mu_j)(x-\mu_j)^T$$

对于二分类任务,只需要将数据投影到一条直线上,投影方向为 $n\times 1$ 的向量 $w$。

LDA 的第一个目标是最大化类间距离。两个类别的中心点$\mu_0$,$\mu_1$ 在 $w$ 方向上的投影分别为 $w^T\mu_0$,$w^T\mu_1$,因此我们要最大化下面的式子:

$$||w^T\mu_0-w^T\mu_1||_2^2$$

LDA 的第二个目标是最小化类内距离。两个类别在投影后的协方差分别为 $w^T\Sigma_0w$,$w^T\Sigma_1w$,因此我们要最小化下面的式子:

$$w^T\Sigma_0w+w^T\Sigma_1w$$

综上,我们的目标为最大化下面的式子:

$$J=\frac{||w^T\mu_0-w^T\mu_1||_2^2}{w^T\Sigma_0w+w^T\Sigma_1w}=\frac{w^T(\mu_0-\mu_1)(\mu_0-\mu_1)^T w}{w^T(\Sigma_0+\Sigma_1)w}$$

定义类内散度矩阵 $S_w$:

$$S_w=\Sigma_0+\Sigma_1$$

定义类间散度矩阵 $S_b$:

$$S_b=(\mu_0-\mu_1)(\mu_0-\mu_1)^T$$

则优化目标可重写为

$$J=\frac{w^TS_bw}{w^TS_ww}$$

我们将问题一般化,定义

$$R(A,B,x)=\frac{x^TAx}{x^TBx}$$

该式称为广义瑞利商(generalized Rayleigh quotient),我们的目标是求其最大值。要用到拉格朗日乘子法跳转指路

若我们固定 $x^HBx=c\neq 0$(原本要求的 $w$ 只要知道方向就行),则就是要在这个限制下求得 $x^TAx$ 的最大值。

引入拉格朗日乘子,将其转化为拉格朗日函数的无约束极值问题:

$$L(x,\lambda)=x^TAx-\lambda(x^HBx-c)$$

在上式的极值处,应满足

$$\frac{\partial L(x,\lambda)}{\partial x}=0$$

$$Ax-\lambda Bx=0$$

$$B^{-1}Ax=\lambda x$$

回到 LDA 问题中,若 $J$ 要取极值,则应满足

$$S_bw=\lambda S_ww$$

对于任意向量 $w$,都有

$$S_ww=\frac{1}{\lambda}(\mu_0-\mu_1)(\mu_0-\mu_1)^Tw=(\mu_0-\mu_1)[\frac{1}{\lambda}(\mu_0-\mu_1)^Tw]$$

中括号内的部分是一个标量,因此 $S_ww$ 与 $(\mu_0-\mu_1)$ 方向相同。

由于我们不用知道 $w$ 的大小,只要确定方向,所以我们可以直接求

$$w=S_w^{-1}(\mu_0-\mu_1)$$

通常对 $S_w$ 进行奇异值分解

$$S_w=U\Sigma V^T$$

其中,$\Sigma$ 是 $S_w$ 的奇异值组成的对角矩阵,这样可以得到

$$S_w^{-1}=V\Sigma^{-1}U^T$$

最终可以得到 $w$,即 LDA 的投影方向。

多分类 LDA:

可以将 LDA 推广到多分类任务中,假设一共有 $N$ 个类,且第 $i$ 类的样本数为 $m_i$。

这个时候,类内散度矩阵重写为

$$S_w=\sum\limits_{i=1}^N\Sigma_i=\sum\limits_{i=1}^N\sum\limits_{x\in X_i}(x-\mu_i)(x-\mu_i)^T$$

再新定义一个全局散度矩阵(其中 $\mu$ 为全局均值):

$$S_t=\sum\limits_{i=1}^m(x_i-\mu)(x_i-\mu)^T=S_b+S_w$$

那么就可以得到重写后的类间散度矩阵:

$$S_b=S_t-S_w=\sum\limits_{i=1}^N m_i(\mu_i-\mu)(\mu_i-\mu)^T$$

Proof

$$x-\mu=(x-\mu_i)+(\mu_i-\mu)$$

$$ \begin{align} S_t & =\sum\limits_{i=1}^N\sum\limits_{x\in X_i}[(x-\mu_i)+(\mu_i-\mu)][(x-\mu_i)+(\mu_i-\mu)]^T \\ & =\sum\limits_{i=1}^N\sum\limits_{x\in X_i}[(x-\mu_i)(x-\mu_i)^T+(\mu_i-\mu)(\mu_i-\mu)^T+(x-\mu_i)(\mu_i-\mu)^T+(\mu_i-\mu)(x-\mu_i)^T] \end{align} $$

第一项:

$$\sum\limits_{i=1}^N\sum\limits_{x\in X_i}(x-\mu_i)(x-\mu_i)^T=S_w$$

第二项:

$$\sum\limits_{i=1}^N\sum\limits_{x\in X_i}(\mu_i-\mu)(\mu_i-\mu)^T=S_b$$

第三项:

$$\sum\limits_{i=1}^N\sum\limits_{x\in X_i}(x-\mu_i)(\mu_i-\mu)^T=\sum\limits_{i=1}^N(\sum\limits_{x\in X_i}(x-\mu_i))(\mu_i-\mu)^T=0$$

第四项:

$$\sum\limits_{i=1}^N\sum\limits_{x\in X_i}(\mu_i-\mu)(x-\mu_i)^T=\sum\limits_{i=1}^N(\mu_i-\mu)(\sum\limits_{x\in X_i}(x-\mu_i)^T)=0$$

多分类 LDA 可以有多种实现方法,使用 $S_b$、$S_w$、$S_t$ 三者中任意两个即可。最常见的优化目标是:

$$\max\limits_{\mathbf{W}}\frac{tr(\mathbf{W}^TS_b\mathbf{W})}{tr(\mathbf{W}^TS_w\mathbf{W})}$$

其中,$\mathbf{W}$ 为投影矩阵,维度为 $d\times (N-1)$ ,最优解为 $S_w^{-1}S_b$ 的 $N-1$ 个最大特征值对应的特征向量组成的矩阵,可以将数据投影到 $N-1$ 维空间中。


多分类任务

在多分类任务中,常常利用二分类学习器来解决问题。可以对问题进行拆分,为拆出的每个二分类任务训练一个分类器,然后再对每个分类器的预测结果进行集成得到最终结果。

一对一

拆分阶段:

$N$ 个类别两两配对,形成 $\frac{N(N-1)}{2}$ 个二分类任务及对应的学习器。

测试阶段:

每个学习器对测试样本进行预测,得到 $\frac{N(N-1)}{2}$ 个预测结果,然后投票表决。

一对其余

拆分阶段:

某一类作为正例,其他作为反例,形成 $N$ 个二分类任务及对应的学习器。

测试阶段:

每个学习器对测试样本进行预测,得到 $N$ 个预测结果,比较各类别的置信度,选择置信度最高的类别作为最终预测结果。

多对多

若干类作为正例,若干类作为反例。使用纠错输出码(ECOC)

编码阶段:

对 $N$ 个类别做 $M$ 次划分,每次划分都将一部分类别划为正例,另一部分类别划为反例。这样,对于每个类别,都有一个长度为 $M$ 的二进制编码,每一位表示在 第$i$ 次划分中该类别是正例还是反例。

解码阶段:

当有一个新样本需要分类时,使用 $M$ 个二分类器对该样本进行预测,得到一个长度为 $M$ 的预测码。然后,将该预测码与每个类别的编码进行比较,选择距离最近的类别作为最终预测结果。


类别不平衡问题

alt text

类别不平衡问题,指的是不同类别训练样例数相差很大(正例少,负例多)。

解决方法:再缩放

  • 欠采样:减少负例样本数
  • 过采样:增加正例样本数
  • 阈值移动:调整分类阈值

评论