西瓜书第3章学习笔记

今天来看一下西瓜书第三章——线性模型。

线性模型

简单来讲,线性模型是试图把已知属性的线性组合来进行预测的函数,即有

f ( x ) = w 1 x 1 + w 2 x 2 + ⋯ + w d x d + b f(x)=w_1x_1+w_2x_2+\cdots+w_dx_d+b f(x)=w1x1+w2x2++wdxd+b

将其写成向量如下:
f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b
其中 w = ( w 1 ; w 2 ; ⋯   ; w d ) w=(w_1;w_2;\cdots;w_d) w=(w1;w2;;wd),那么,我们主要是确定了 w w w b b b,一切都好说。

一元线性回归

我们来看一元回归,也就是说由一个自变量得出一个因变量,线性回归试图学得 f ( x i ) = w x i + b f(x_i)=wx_i+b f(xi)=wxi+b,使得 f ( x i ) ≈ y i f(x_i) \approx y_i f(xi)yi

显然只要上述的两者的误差越小,回归的模型就越好。

下面介绍最小二乘法来求解 w w w b b b

即有:

( w ∗ , b ∗ ) = a r g m i n ( w , b ) ∑ i = 1 m ( f ( x i ) − y i ) 2 = a r g m i n ( w , b ) ∑ i = 1 m ( f ( x i ) − w x i − b ) 2 \begin{aligned} (w^*,b^*)&=\mathop{argmin}\limits_{(w,b)}\sum_{i=1}^{m}(f(x_i)-y_i)^2\\ &=\mathop{argmin}\limits_{(w,b)}\sum_{i=1}^{m}(f(x_i)-wx_i-b)^2 \end{aligned} (w,b)=(w,b)argmini=1m(f(xi)yi)2=(w,b)argmini=1m(f(xi)wxib)2

定义 E ( w , b ) = ∑ i = 1 m ( f ( x i ) − w x i − b ) 2 E_{(w,b)}=\sum_{i=1}^{m}(f(x_i)-wx_i-b)^2 E(w,b)=i=1m(f(xi)wxib)2

E ( w , b ) E_{(w,b)} E(w,b) 求偏导,得到:

{ ∂ E ( w , b ) ∂ w = 2 ( w ∑ i = 1 m x i 2 − ∑ i = 1 m ( y i − b ) x i ) ∂ E ( w , b ) ∂ b = 2 ( m b − ∑ i = 1 m ( y − w x i ) ) \begin{aligned} \begin{cases} \frac{\partial E_{(w,b)}}{\partial w} =2(w\sum_{i=1}^{m}x_i^2-\sum_{i=1}^{m}(y_i-b)x_i) \\ \\ \frac{\partial E_{(w,b)}}{\partial b} =2(mb-\sum_{i=1}^{m}(y-wx_i)) \end{cases} \end{aligned} wE(w,b)=2(wi=1mxi2i=1m(yib)xi)bE(w,b)=2(mbi=1m(ywxi))

再令上述偏导方程组为0,即可得到 w w w b b b 的最优解的闭式解:
{ w = ∑ i = 1 m y i ( x i − x ˉ ) ∑ i = 1 m x i 2 − 1 m ( ∑ i = 1 m x i ) 2 b = 1 m ∑ i = 1 m ( y i − w x i ) \begin{cases} w=\frac{\sum_{i=1}^{m}y_i(x_i-\bar{x})}{\sum_{i=1}^{m}x_i^2-\frac{1}{m}(\sum_{i=1}^{m}x_i)^2}\\ \\ b=\frac{1}{m}\sum_{i=1}^{m}(y_i-wx_i) \end{cases} w=i=1mxi2m1(i=1mxi)2i=1myi(xixˉ)b=m1i=1m(yiwxi)

详细推导可以看一下之前写的文章。

一元线性回归理论知识介绍与实战(Python)

多元线性回归

更一般的多元回归,也就是说由多个自变量得出一个因变量,线性回归试图学得 f ( x i ) = w T x i + b f(x_i)=w^Tx_i+b f(xi)=wTxi+b,使得 f ( x i ) ≈ y i f(x_i) \approx y_i f(xi)yi

同样地用最小二乘法对 w w w b b b 进行估计,详细推导可以看一下之前写的文章。
多元线性回归理论知识介绍与实战(Python)

对数线性回归

线性模型虽然蛮简单的,假如说我们认为示例所对应的输出标记是在指数尺度上变化的,那么可以将输出标记用 l n ln ln 函数转换,即:
l n y = w T x + b lny=w^Tx+b lny=wTx+b

这就是对数线性回归,它实际上是在试图让 e w T x + b e^{w^Tx+b} ewTx+b 逼近 y y y, 不过在形式上仍是线性回归,但实质上已是在求取输入空间到输出空间的非线性函数映射。

在这里插入图片描述

广义线性回归

更一般的,我们可以假设存在单调可微函数 g ( ⋅ ) g(·) g(),令 y = g − 1 ( w T x + b ) y=g^{-1}(w^Tx+b) y=g1(wTx+b),那么就得到了更为一般的广义线性模型,只需将找到 g ( ⋅ ) g(·) g() 函数,即可进行映射。

对数几率回归

假如说要根据属性进行分类任务呢?只要我们找到一个函数可以使得输出为 [ 0 , 1 ] [0,1] [0,1],那就好办了,事实上 S i g m o i d Sigmoid Sigmoid 函数就很好,函数如下图所示:

在这里插入图片描述

我们将 w T x + b w^Tx+b wTx+b 带入 S i g m o i d Sigmoid Sigmoid 函数,即可得到:
y = 1 1 + e − ( w T x + b ) y=\frac{1}{1+e^{-(w^Tx+b)}} y=1+e(wTx+b)1

变化后得到:

l n y 1 − y = w T x + b ln\frac{y}{1-y}=w^Tx+b ln1yy=wTx+b

若将 y y y 视为样本 x x x 作为正例的可能性,则 1 − y 1-y 1y 是其反例可能性,两者的比值 y 1 − y \frac{y}{1-y} 1yy 称为几率。反映了 x x x 作为正例的相对可能性.对几率取对数则得到 l n y 1 − y ln\frac{y}{1-y} ln1yy,我们成为对数几率 ( l o g i t ) (logit) (logit)

这种方法有很多优点,例如它是直接对分类可能性进行建模,无需事先假设数据分布,这样就避免了假设分布不准确所带来的问题;它不是仅预测出“类别”,而是可得到近似概率预测 这对许多需利用概率辅助决策的任务很有用;此外,对率函数是任意阶可导的凸函数 有很好的数学性质现有的许多数值优化算法都可直接用于求取最优解。

线性判别分析

线性判别分析 LDA 是一种经典的线性学习方法,在二分类问题上因为最早由 Fisher 于 1936 年提出,也叫 Fisher 判别分析

LDA 的思想非常朴素:给定训练样例集 设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远。在对新样本进行分类时,将其投影到同样的这条直线上 再根据投影点的位置来确定新样本的类别。

在这里插入图片描述

多分类学习

对于多分类任务,基本思路是将多分类任务拆为若干个二分类任务求解。

最经典的有三种做法:

  • 一对一(OvO)
  • 一对其余(OvR)
  • 多对多(MvM)

假设有 N 个类别,那么 OvO 将这 N 个类别进行两两配对,从而产生 N ( N − 1 ) 2 \frac{N(N-1)}{2} 2N(N1) 个二分类任务,,例如 OvO 将为区分类别 C i C_i Ci C j C_j Cj 训练一个分类器,该分类器把数据集中的 C i C_i Ci 类样例作为正例, C j C_j Cj 类样例作为反例。在测试阶段,新样本将同时提交给所有分类器,于是们将得到 N ( N − 1 ) 2 \frac{N(N-1)}{2} 2N(N1) 个分类结果,最终结果可通过投票产生:即把被预测得最多的类别作为最终分类结果。
OvR 是每次将一个类的样例作为正例、所有其他类的样例作为反例来训练 N N N 个分类器.在测试时若仅有一个分类器预测为正类,则对应的类别标记作为最终分类结果。若有多个分类器预测为正类,则通常考虑各分类器的预测置信度,选择置信度最大的类别标记作为分类结果。

在这里插入图片描述

不难看出,OvR 需要训练 N 个分类器,而 OvO 训练 N ( N − 1 ) 2 \frac{N(N-1)}{2} 2N(N1) 个分类器。

一般来说:

  • OvO 的存储开销和测试时间开销通常比 OvR 更大。
  • 在训练时,由于 OvR 的每个分类器均使用全部训练样例,而 OvO 的每个分类器仅用到两个类样例,所以,在类别很多时, OvO 的训练时间开销通常比 OvR 更小。
  • 预测性能取决于具体的数据分布,在多数情形下两者差不多。

MvM 是每次将若干个类作为正类,若干个其他类作为反类,显然 OvO 和 OvR 是其特例。

MvM 的正、反类构造必须有特殊的设计,不能随意选取。其中最常用的 叫 纠错输出码 技术。

  • 编码:对 N 个类别做 M 次划分,每次划分将 一部分类别划为正类,一部分划为反类,从而形成一个二分类训练集,这样共产生 M 个训练集,可训练出 M 个分类器。
  • 解码:M 个分类器分别对测试样本进行预测,这些预测标记组成一个编码,将这个预测编码与每个类别各自的编码进行比较,返回其中距离最小的类别作为最终预测结果。

在这里插入图片描述

上图 +1、-1 分别表示学习器 f i f_i fi 将该类样本作为正、反例。三元码中 0 表示 f i f_i fi 不使用该类样本。

类别不平衡问题

如果不同类别的训练样例数目稍有差别,通常影响不大,但若差别很大,则会对学习过程造成困扰。例如有 998 个反例,但是正例只有 2 个,那么学习方法只需要返回一个永远将新样本预测为反例的学习器,就能达到99.8%的精度;然而这样的学习器往往没有价值,因为它不能预测出任何正例。

类别不平衡指分类任务中不同类别的训练样例数目差别很大的情况。在现实的分类学习任务中,我们经常会遇到类别不平衡,例如在通过拆分法解决多分类问题时,即使原始问题中不同类别的训练样例数目相当,在使用 OvR、MvM 策略后产生的二分类任务扔可能出现类别不平衡现象,因此有必要了解类别不平衡性处理的基本方法。

可以通过 欠采样方法过采样方法。关于两种方法可以看一下这篇文章 分类中解决类别不平衡问题

参考资料
[1] 周志华.机器学习[M].北京:清华大学出版社,2020.

[2] 贾俊平.统计学[M].北京.中国人民大学出版社,2019.

猜你喜欢

转载自blog.csdn.net/lhrfighting/article/details/121482637