【西瓜书】3-线性模型

本文深入探讨了线性模型在分类任务中的应用,从线性回归过渡到线性判别分析(LDA),以及逻辑回归。介绍了线性回归的基本形式、LDA的类间和类内方差最大化思想,以及逻辑回归的sigmoid激活函数。此外,还讨论了多分类学习中的ECOC编码和类别不平衡问题,以及正则化的L1和L2正则化方法。
摘要由CSDN通过智能技术生成

线性回归

3.1-基本形式

3.1.1-基本形式

f ( x ) = w 1 x 1 + w 2 x 2 + ⋯ + w d x d + b (3.1) f(x) = w_1 x_1 + w_2 x_2 + \dots + w_d x_d + b \tag{3.1} f(x)=w1x1+w2x2++wdxd+b(3.1)

其中 x x x 为一共 d d d 个属性的示例, x i x_i xi x x x 的第 i i i 个属性。 f ( x ) f(x) f(x) 为预测函数。 w w w可以代表各属性在预测中的重要性

3.1.1-向量形式

f ( x ) = w T x + b (3.2) f(x) = w^Tx+b\tag{3.2} f(x)=wTx+b(3.2)

3.2-线性回归

给定数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … ( x d , y d ) } D = \{(x_1,y_1), (x_2, y_2), \dots (x_d, y_d)\} D={(x1,y1),(x2,y2),(xd,yd)},其中 x i = ( x i 1 ; x i 2 ; …   ; x i d ) x_i = (x_{i1}; x_{i2};\dots;x_{id}) xi=(xi1;xi2;;xid) y ∈ R y\in \mathbb{R} yR

线性回归试图习得一个预测函数 f ( x i ) = w x i + b f(x_i) = w x_i + b f(xi)=wxi+b

使得
f ( x i ) ≃ y i (3.3) f(x_i) \simeq y_i\tag{3.3} f(xi)yi(3.3)

3.2.1-性能度量

至于如何确定 w w w b b b

2.3 节介绍过,均方误差(2.2) 是回归任务中最常用的性能度量,因此我们可试图让均方误差最小化

( w ∗ , b ∗ ) = arg ⁡ min ⁡ ( w , b ) ∑ i = 1 m ( f ( x i ) − y i ) 2 = arg ⁡ min ⁡ ( w , b ) ∑ i = 1 m ( y i − w x i − b ) 2 . (3.4) \begin{aligned} \left(w^{*}, b^{*}\right) &=\underset{(w, b)}{\arg \min } \sum_{i=1}^{m}\left(f\left(x_{i}\right)-y_{i}\right)^{2} \\ &=\underset{(w, b)}{\arg \min } \sum_{i=1}^{m}\left(y_{i}-w x_{i}-b\right)^{2} . \end{aligned}\tag{3.4} (w,b)=(w,b)argmini=1m(f(xi)yi)2=(w,b)argmini=1m(yiwxib)2.(3.4)

最后用最小二乘法解得
w = ∑ i = 1 m y i ( x i − x ˉ ) ∑ i = 1 m x i 2 − 1 m ( ∑ i = 1 m x i ) 2 (3.7) w=\frac{\sum_{i=1}^{m} y_{i}\left(x_{i}-\bar{x}\right)}{\sum_{i=1}^{m} x_{i}^{2}-\frac{1}{m}\left(\sum_{i=1}^{m} x_{i}\right)^{2}} \tag{3.7} w=i=1mxi2m1(i=1mxi)2i=1myi(xixˉ)(3.7)

b = 1 m ∑ i = 1 m ( y i − w x i ) (3.8) b=\frac{1}{m} \sum_{i=1}^{m}\left(y_{i}-w x_{i}\right) \tag{3.8} b=m1i=1m(yiwxi)(3.8)

3.2.2-多元线性回归

更一般的情形是如本节开头的数据集 D D D , 样本由 d d d 个属性描述.此时我们
试图学得
f ( x i ) = w T x i + b , 使得  f ( x i ) ≃ y i f\left(\boldsymbol{x}_{i}\right)=\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b \text {, 使得 } f\left(\boldsymbol{x}_{i}\right) \simeq y_{i} f(xi)=wTxi+b使得 f(xi)yi
这称为“多元线性回归”

把数据集 D D D 表示为一个 m × ( d + 1 ) m \times (d + 1) m×(d+1) 大小的矩阵 X X X

X = ( x 11 x 12 … x 1 d 1 x 21 x 22 … x 2 d 1 ⋮ ⋮ ⋱ ⋮ ⋮ x m 1 x m 2 … x m d 1 ) = ( x 1 T 1 x 2 T 1 ⋮ ⋮ x m T 1 ) \mathbf{X}=\left(\begin{array}{ccccc} x_{11} & x_{12} & \ldots & x_{1 d} & 1 \\ x_{21} & x_{22} & \ldots & x_{2 d} & 1 \\ \vdots & \vdots & \ddots & \vdots & \vdots \\ x_{m 1} & x_{m 2} & \ldots & x_{m d} & 1 \end{array}\right)=\left(\begin{array}{cc} \boldsymbol{x}_{1}^{\mathrm{T}} & 1 \\ \boldsymbol{x}_{2}^{\mathrm{T}} & 1 \\ \vdots & \vdots \\ \boldsymbol{x}_{m}^{\mathrm{T}} & 1 \end{array}\right) X= x11x21xm1x12x22xm2x1dx2dxmd111 = x1Tx2TxmT111

Y Y Y 写成: y = ( y 1 ; y 2 ; …   ; y m ) y = (y_1;y_2;\dots;y_m) y=(y1;y2;;ym)

那么:
w ^ ∗ = arg ⁡ min ⁡ ( y − X w ^ ) T ( y − X w ^ ) (3.9) \hat{\boldsymbol{w}}^{*}=\arg \min (\boldsymbol{y}-\mathbf{X} \hat{\boldsymbol{w}})^{\mathrm{T}}(\boldsymbol{y}-\mathbf{X} \hat{\boldsymbol{w}}) \tag{3.9} w^=argmin(yXw^)T(yXw^)(3.9)
求导得:
∂ E w ^ ∂ w ^ = 2 X T ( X w ^ − y ) (3.10) \frac{\partial E_{\hat{\boldsymbol{w}}}}{\partial \hat{\boldsymbol{w}}}=2 \mathbf{X}^{\mathrm{T}}(\mathbf{X} \hat{\boldsymbol{w}}-\boldsymbol{y}) \tag{3.10} w^Ew^=2XT(Xw^y)(3.10)

X X X正定矩阵或者满秩矩阵,可以直接解得
w ^ ∗ = ( X T X ) − 1 X T Y \hat{w}^* = (X^TX)^{-1} X^T Y w^=(XTX)1XTY

反之能够解出很多个 w ^ \hat{w} w^

这个时候需要正则化处理

3.2.3-广义线性模型

在这里,我们不会逼近 y y y,反而逼近 y y y的某个函数,如 ln ⁡ y \ln{y} lny 或者 y 2 y^2 y2

一般表示成:
y = g − 1 ( w T x + b ) y = g^{-1}(w^Tx+b) y=g1(wTx+b)

3.3-对数几率回归

假设现有一模型(其实叫单位阶跃函数)
y = { 0 , z < 0 0.5 , z = 0 1 , z > 0 (3.16) y=\left\{\begin{array}{cc} 0, & z<0 \\ 0.5, & z=0 \\ 1, & z>0 \end{array}\right. \tag{3.16} y= 0,0.5,1,z<0z=0z>0(3.16)
这个函数既不连续也不可微1,那么有没有一个连续可微的替代呢?

有,sigmod函数

image-20221120203159863

其含义是越靠近中心点的概率越高,越远离中心点的概率越低,但是函数预测的确定性越高。

因此, “对数几率回归”(Logistic Regression)做的事情是对分类的可能性建模, 而不是去预测样本的y值2

以下面这张图为例, x x x 越大,那么预测为蓝色的概率越高,反之越低

logisticregressionwindowlogisticfitchart4-1

3.4-线性判别分析

线性判别分析:Linear Discriminant nalys ,简称 LDA

其思想是:最大化类间均值,最小化类内方差。意思就是将数据投影在低维度上,并且投影后同种类别数据的投影点尽可能的接近,不同类别数据的投影点的中心点尽可能的远3

image-20221120204536060

3.5-多分类学习

对于多个分类的问题,可以将多分类问题转化为多个二分类问题

  • 一对一:OvO
  • 一对多:OvR
  • 多对多:MvM

MvM的正反类构造有特殊要求

3.5.1-ECOC

纠错输出码:Error Correcting Output Codes

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

image-20221121165737534

3.6-类别不平衡问题

假设正例有999个,但是反例只有一个,那么只需要将所有的例子都输出为正例行。但是我们其实更加看重那一个反例,而非另外的999个正例。

可以给回归的函数设置权重,原先不是 y 1 − y > 1 \frac{y}{1-y}>1 1yy>1 就输出为正例吗?

现在时代变了,需要 y 1 − y > m + m − \frac{y}{1-y}>\frac{m^+}{m^-} 1yy>mm+ 才能输出为正例,这里的 m + − m^{+-} m+− 代表正例个和反例个数。这称为阔值移动

在实际应用时,如果样本容量不远远大于样本的特征维度,很可能造成过拟合,对这种情况,我们有下面三个解决方式:

  1. 加数据

  2. 特征选择(降低特征维度)如 PCA 算法。

  3. 正则化

正则化一般是在损失函数(如上面介绍的最小二乘损失)上加入正则化项(表示模型的复杂度对模型的惩罚),下面我们介绍一般情况下的两种正则化。

L 1 : a r g m i n w L ( w ) + λ ∣ ∣ w ∣ ∣ 1 , λ > 0 L 2 : a r g m i n w L ( w ) + λ ∣ ∣ w ∣ ∣ 2 2 , λ > 0 \begin{align} L1&:\mathop{argmin}\limits_wL(w)+\lambda||w||_1,\lambda\gt0\\ L2&:\mathop{argmin}\limits_wL(w)+\lambda||w||^2_2,\lambda \gt 0 \end{align} L1L2:wargminL(w)+λ∣∣w1,λ>0:wargminL(w)+λ∣∣w22,λ>0

正则化

正则化简介

目的:防止过拟合,增大模型的稳定性。

L = 1 N ∑ i L i ⏟ data loss + λ R ( W ) ⏟ regularization loss L = \underbrace{ \frac{1}{N} \sum_i L_i }_\text{data loss} + \underbrace{ \lambda R(W) }_\text{regularization loss} \\\\ L=data loss N1iLi+regularization loss λR(W)

  • L:正则化强度
  • 数据损失:拟合我们的数据的误差
  • 正则化损失:避免在数据集上做的太好
  • 正则化
    • 目的:提高模型的泛化能力
    • L1: R ( W ) = ∑ k ∑ l W k , l 2 R(W) = \sum_k\sum_lW^2_{k,l} R(W)=klWk,l2
    • L2: R ( W ) = ∑ k ∑ l ∣ W k , l ∣ R(W) = \sum_k\sum_l{|W_{k, l}|} R(W)=klWk,l
    • 弹性网络:综合考虑L1L2, R ( W ) = ∑ k ∑ l { β W k , l 2 + ∣ W k , l ∣ } R(W) = \sum_k\sum_l\{{\beta W^2_{k,l}+|W_{k, l}|\}} R(W)=kl{βWk,l2+Wk,l}
    • 比正则化更复杂的泛化技巧:dropout、batch normalization、stochastic depth、fractional pooling

正则化例子

L1正则化

也叫做Lasso。

L1正则化可以引起稀疏解。

从最小化损失的角度看,由于 L1 项求导在0附近的左右导数都不是0,因此更容易取到0解。

从另一个方面看,L1 正则化相当于:

a r g m i n w L ( w ) s . t . ∣ ∣ w ∣ ∣ 1 < C \mathop{argmin}\limits_wL(w)\\ s.t. ||w||_1\lt C wargminL(w)s.t.∣∣w1<C

我们已经看到平方误差损失函数在 w 空间是一个椭球,因此上式求解就是椭球和 ||w||_1=C的切点,因此更容易相切在坐标轴上。

L2 Ridge正则

也叫做岭回归。

w ^ = a r g m i n w L ( w ) + λ w T w ⟶ ∂ ∂ w L ( w ) + 2 λ w = 0 ⟶ 2 X T X w ^ − 2 X T Y + 2 λ w ^ = 0 ⟶ w ^ = ( X T X + λ I ) − 1 X T Y \begin{align} \hat{w}=\mathop{argmin}\limits_wL(w)+\lambda w^Tw&\longrightarrow\frac{\partial}{\partial w}L(w)+2\lambda w=0\nonumber\\ &\longrightarrow2X^TX\hat{w}-2X^TY+2\lambda \hat w=0\nonumber\\ &\longrightarrow \hat{w}=(X^TX+\lambda \mathbb{I})^{-1}X^TY \end{align} w^=wargminL(w)+λwTwwL(w)+2λw=02XTXw^2XTY+2λw^=0w^=(XTX+λI)1XTY

可以看到,这个正则化参数和前面的 MAP 结果不谋而合。利用2范数进行正则化不仅可以是模型选择 w 较小的参数,同时也避免 X^TX不可逆的问题。

优化技巧

从频率派角度和贝叶斯角度我们都导出了线性回归模型,总结起来有三个特点:

  1. 线性
    • 属性:x是P维向量,f关于x是线性的
      • –> 特征转换(多项式回归)
    • 系数非线性:激活函数都是非线性的
      • –> 线性分类
      • –> 感知机
    • 全局非线性
      • –> 神经网络
      • –> 感知机
  2. 全局性:没有将特征空间划分成不同的段
    • –> 线性样条回归(把输入空间截断)
    • –> 决策树(分割样本空间)
  3. 数据未加工:拿到数据后直接拟合
    • –> PCA
    • –> 流形

打破其中的某些条件,可以导出不同的模型:

image-20240111112829659

线性分类

背景

过渡

线性回归是怎么过渡到线性分类的?

打破线性回归的全局非线性

激活函数
降维
线性回归
线性分类

这里我们定义分类函数
y = f ( w T x + b ) y ∈ { 0 , 1 }   o r   y ∈ [ 0 , 1 ] y = f(w^Tx+b) \quad y\in\{0,1\}\ or\ y\in[0,1] y=f(wTx+b)y{0,1} or y[0,1]
这里我们将 f f f称作激活函数, f − 1 f^{-1} f1称为链接函数:
f : w T x + b ⟶ { 0 , 1 } f − 1 : { 0 , 1 } ⟶ w T x + b \begin{align} f&: w^Tx+b \longrightarrow \{0,1\} \\ f^{-1}&:\{0,1\} \longrightarrow w^Tx+b \end{align} ff1:wTx+b{0,1}:{0,1}wTx+b

分类的类别

对于分类任务,线性回归模型就无能为力了,但是我们可以在线性模型的函数进行后再加入一层激活函数,这个函数是非线性的,激活函数的反函数叫做链接函数。我们有两种线性分类的方式:

  1. 硬分类,我们直接需要输出观测对应的分类,即 y ∈ { 0 , 1 } y\in\{0,1\} y{0,1}。这类模型的代表为:
    1. 线性判别分析(Fisher 判别)
    2. 感知机
  2. 软分类,产生不同类别的概率,即 y ∈ [ 0 , 1 ] y\in[0,1] y[0,1],这类算法根据概率方法的不同分为两种
    1. 生成式(根据贝叶斯定理先计算参数后验,再进行推断):高斯判别分析(GDA)和朴素贝叶斯等为代表
      1. GDA
      2. Naive Bayes
    2. 判别式(直接对条件概率进行建模):Logistic 回归

感知机

想法:错误驱动

假定

  • 模型: f ( x ) = s i g n ( x ) x , w ∈ R P f(x) = sign(x) \quad x,w \in \mathbb{R}^P f(x)=sign(x)x,wRP
  • 激活函数: s i g n ( a ) = { + 1 , a ≥ 0 − 1 , a < 0 sign(a)=\left\{\begin{matrix}+1,a\ge0\\-1,a\lt0\end{matrix}\right. sign(a)={+1,a01,a<0
  • 被错误分类的样本:集合 D \mathcal{D} D

错误分类就是给 w w w一个初始值,不断的挪动我们的曲线,使得 D \mathcal{D} D中元素最少。

这里的损失函数为: L ( w ) = ∑ x i ∈ D I ( y i w T x i ) L(w)=\sum\limits_{x_i\in\mathcal{D}} I(y_iw^Tx_i) L(w)=xiDI(yiwTxi),其中 I = { + 1 , a > 0 0 , a = 0 − 1 , a < 0 I=\left\{\begin{matrix}+1,a>0\\0,a=0\\-1,a\lt0\end{matrix}\right. I= +1,a>00,a=01,a<0

虽然很直观,但是这个方法有个问题,它的函数

  1. 不连续、不可导,不能/很难求解
  2. NP Hard问题

我们继续观察 z = y i w T x z = y_iw^Tx z=yiwTx,当 w w w变动一点点, z z z也会变化一点点,这样就可导了,为何不将其当作一个损失函数呢?

现在构造新损失函数 L ( w ) L(w) L(w)
L ( w ) = ∑ x i ∈ D w r o n g − y i w T x i L(w)=\sum\limits_{x_i\in\mathcal{D}_{wrong}}-y_iw^Tx_i L(w)=xiDwrongyiwTxi
计算时,我们采用随机梯度下降(SGD)算法

如果不是线性可分的,我们有pocket algorithm,它允许有一点点错误存在

  • 感知机收敛定理 #todo
  • pocket algorithm #todo

线性判别分析

也叫Fisher判别分析。罗纳德·费希尔_百度百科

思想是:类内小,类间大

降维的角度出发,把数据全部投影到一维的坐标轴上,之后选定一个阈值来分类。

img

现在需要找一个最合适的投影方向,比如说上图中右边的更好。

这里指的就是最大化类间间隔,最小化类内方差。用计算机行话就是**“高内聚低耦合”**。

模型定义

首先是投影,我们假定原来的数据是向量 x x x,那么顺着 $ w$ 的方向投影就是标量 z z z
z = w T ⋅ x ( = ∣ w ∣ ⋅ ∣ x ∣ cos ⁡ θ ) z=w^T\cdot x(=|w|\cdot|x|\cos\theta) z=wTx(=wxcosθ)
投影的均值 z ˉ \bar{z} zˉ
z ˉ = 1 N w T ⋅ x \bar{z}= \frac{1}{N}w^T\cdot x zˉ=N1wTx

投影的方差 S z S_z Sz
S z = 1 N ∑ i = 1 N 2 ( z i − z ˉ ) ( z i − z ˉ ) T = 1 N ∑ i = 1 N 2 ( w T x i − z ˉ ) ( w T x i − z ˉ ) T \begin{align} S_z &=\frac{1}{N}\sum\limits_{i=1}^{N_2}(z_i-\bar{z})(z_i-\bar{z})^T\nonumber\\ &=\frac{1}{N}\sum\limits_{i=1}^{N_2}(w^Tx_i-\bar{z})(w^Tx_i-\bar{z})^T\nonumber \end{align} Sz=N1i=1N2(zizˉ)(zizˉ)T=N1i=1N2(wTxizˉ)(wTxizˉ)T
假设属于两类的试验样本数量分别是 N 1 N_1 N1 N 2 N_2 N2,那么我们采用方差矩阵来表征每一个类内的总体分布,这里我们使用了协方差的定义,用 S S S 表示原数据的协方差:
C 1 : V a r z [ C 1 ] = 1 N 1 ∑ i = 1 N 1 ( z i − z c 1 ‾ ) ( z i − z c 1 ‾ ) T = 1 N 1 ∑ i = 1 N 1 ( w T x i − 1 N 1 ∑ j = 1 N 1 w T x j ) ( w T x i − 1 N 1 ∑ j = 1 N 1 w T x j ) T = w T 1 N 1 ∑ i = 1 N 1 ( x i − x c 1 ‾ ) ( x i − x c 1 ‾ ) T w = w T S 1 w \begin{align} C_1:Var_z[C_1]&=\frac{1}{N_1}\sum\limits_{i=1}^{N_1}(z_i-\overline{z_{c1}})(z_i-\overline{z_{c1}})^T\nonumber\\ &=\frac{1}{N_1}\sum\limits_{i=1}^{N_1}(w^Tx_i-\frac{1}{N_1}\sum\limits_{j=1}^{N_1}w^Tx_j)(w^Tx_i-\frac{1}{N_1}\sum\limits_{j=1}^{N_1}w^Tx_j)^T\nonumber\\ &=w^T\frac{1}{N_1}\sum\limits_{i=1}^{N_1}(x_i-\overline{x_{c1}})(x_i-\overline{x_{c1}})^Tw\nonumber\\ &=w^TS_1w \end{align} C1:Varz[C1]=N11i=1N1(zizc1)(zizc1)T=N11i=1N1(wTxiN11j=1N1wTxj)(wTxiN11j=1N1wTxj)T=wTN11i=1N1(xixc1)(xixc1)Tw=wTS1w

C 2 : V a r z [ C 2 ] = 1 N 2 ∑ i = 1 N 2 ( z i − z c 2 ‾ ) ( z i − z c 2 ‾ ) T = w T S 2 w \begin{align} C_2:Var_z[C_2]&=\frac{1}{N_2}\sum\limits_{i=1}^{N_2}(z_i-\overline{z_{c2}})(z_i-\overline{z_{c2}})^T\nonumber\\ &=w^TS_2w \end{align} C2:Varz[C2]=N21i=1N2(zizc2)(zizc2)T=wTS2w

所以类内距离可以记为方差的和
V a r z [ C 1 ] + V a r z [ C 2 ] = w T ( S 1 + S 2 ) w \begin{align} Var_z[C_1]+Var_z[C_2]=w^T(S_1+S_2)w \end{align} Varz[C1]+Varz[C2]=wT(S1+S2)w
对于类间距离,我们可以用两类的均值表示这个距离:
( z c 1 ‾ − z c 2 ‾ ) 2 = ( 1 N 1 ∑ i = 1 N 1 w T x i − 1 N 2 ∑ i = 1 N 2 w T x i ) 2 = ( w T ( x c 1 ‾ − x c 2 ‾ ) ) 2 = w T ( x c 1 ‾ − x c 2 ‾ ) ( x c 1 ‾ − x c 2 ‾ ) T w \begin{align} (\overline{z_{c1}}-\overline{z_{c2}})^2&=(\frac{1}{N_1}\sum\limits_{i=1}^{N_1}w^Tx_i-\frac{1}{N_2}\sum\limits_{i=1}^{N_2}w^Tx_i)^2\nonumber\\ &=(w^T(\overline{x_{c1}}-\overline{x_{c2}}))^2\nonumber\\ &=w^T(\overline{x_{c1}}-\overline{x_{c2}})(\overline{x_{c1}}-\overline{x_{c2}})^Tw \end{align} (zc1zc2)2=(N11i=1N1wTxiN21i=1N2wTxi)2=(wT(xc1xc2))2=wT(xc1xc2)(xc1xc2)Tw
综合这两点,由于协方差是一个矩阵,于是我们用将这两个值相除来得到我们的损失函数,并最大化这个值:
w ^ = a r g m a x w J ( w ) = a r g m a x w ( z c 1 ‾ − z c 2 ‾ ) 2 V a r z [ C 1 ] + V a r z [ C 2 ] = a r g m a x w w T ( x c 1 ‾ − x c 2 ‾ ) ( x c 1 ‾ − x c 2 ‾ ) T w w T ( S 1 + S 2 ) w = a r g m a x w w T S b w w T S w w \begin{align} \hat{w}=\mathop{argmax}\limits_wJ(w)&=\mathop{argmax}\limits_w\frac{(\overline{z_{c1}}-\overline{z_{c2}})^2}{Var_z[C_1]+Var_z[C_2]}\nonumber\\ &=\mathop{argmax}\limits_w\frac{w^T(\overline{x_{c1}}-\overline{x_{c2}})(\overline{x_{c1}}-\overline{x_{c2}})^Tw}{w^T(S_1+S_2)w}\nonumber\\ &=\mathop{argmax}\limits_w\frac{w^TS_bw}{w^TS_ww} \end{align} w^=wargmaxJ(w)=wargmaxVarz[C1]+Varz[C2](zc1zc2)2=wargmaxwT(S1+S2)wwT(xc1xc2)(xc1xc2)Tw=wargmaxwTSwwwTSbw

这里

  • S b S_b Sb(Between Class)表示类间方差

  • S w S_w Sw(Within Class)表示类内方差

模型求解

这样,我们就把损失函数和原数据集以及参数结合起来了。

下面对这个损失函数求偏导,注意我们其实对 w w w 的绝对值没有任何要求,只对方向有要求,因此只要一个方程就可以求解了:
∂ ∂ w J ( w ) = 2 S b w ( w T S w w ) − 1 − 2 w T S b w ( w T S w w ) − 2 S w w = 0 ⟹ S b w ( w T S w w ) = ( w T S b w ) S w w ⟹ w ∝ S w − 1 S b w = S w − 1 ( x c 1 ‾ − x c 2 ‾ ) ( x c 1 ‾ − x c 2 ‾ ) T w ∝ S w − 1 ( x c 1 ‾ − x c 2 ‾ ) \begin{align} &\frac{\partial}{\partial w}J(w)=2S_bw(w^TS_ww)^{-1}-2w^TS_bw(w^TS_ww)^{-2}S_ww=0\nonumber\\ &\Longrightarrow S_bw(w^TS_ww)=(w^TS_bw)S_ww\nonumber\\ &\Longrightarrow w\propto S_w^{-1}S_bw=S_w^{-1}(\overline{x_{c1}}-\overline{x_{c2}})(\overline{x_{c1}}-\overline{x_{c2}})^Tw\propto S_w^{-1}(\overline{x_{c1}}-\overline{x_{c2}}) \end{align} wJ(w)=2Sbw(wTSww)12wTSbw(wTSww)2Sww=0Sbw(wTSww)=(wTSbw)SwwwSw1Sbw=Sw1(xc1xc2)(xc1xc2)TwSw1(xc1xc2)
于是 $ S_w^{-1}(\overline{x_{c1}}-\overline{x_{c2}})$ 就是我们需要寻找的方向。最后可以归一化求得单位的 w w w 值。

逻辑回归

有时候我们只要得到一个类别的概率,那么我们需要一种能输出 [ 0 , 1 ] [0,1] [0,1] 区间的值的函数。考虑两分类模型,我们利用判别模型,希望对 p ( C ∣ x ) p(C|x) p(Cx) 建模,这就是概率判别模型的工作。

逻辑回归就是采用一个特殊的激活函数,将线性回归问题转换为线性分类问题,这个激活函数叫做Sigmoid函数
{ p i = p ( y = 1 ∣ x ) = σ ( w ∗ x ) = 1 1 + e − w T x , y = 1 p 0 = p ( y = 0 ∣ x ) = 1 − p ( y = 1 ∣ x ) = e − w T x 1 + e − w T x , y = 0 \left.\left\{\begin{array}{l}{{p_{i}=p(y=1\mid x)=\sigma(w^{*}x)=\frac{1}{1+e^{-w^{T}x}},y=1}}\\{{p_{0}=p(y=0\mid x)=1-p(y=1\mid x)=\frac{e^{-w^{T}x}}{1+e^{-w^{T}x}},y=0}}\\\end{array}\right.\right. {pi=p(y=1x)=σ(wx)=1+ewTx1,y=1p0=p(y=0x)=1p(y=1x)=1+ewTxewTx,y=0

利用贝叶斯定理:
p ( C 1 ∣ x ) = p ( x ∣ C 1 ) p ( C 1 ) p ( x ∣ C 1 ) p ( C 1 ) + p ( x ∣ C 2 ) p ( C 2 ) p(C_1|x)=\frac{p(x|C_1)p(C_1)}{p(x|C_1)p(C_1)+p(x|C_2)p(C_2)} p(C1x)=p(xC1)p(C1)+p(xC2)p(C2)p(xC1)p(C1)
a = ln ⁡ p ( x ∣ C 1 ) p ( C 1 ) p ( x ∣ C 2 ) p ( C 2 ) a=\ln\frac{p(x|C_1)p(C_1)}{p(x|C_2)p(C_2)} a=lnp(xC2)p(C2)p(xC1)p(C1),于是:
p ( C 1 ∣ x ) = 1 1 + exp ⁡ ( − a ) p(C_1|x)=\frac{1}{1+\exp(-a)} p(C1x)=1+exp(a)1
上面的式子叫 Logistic Sigmoid 函数,其参数表示了两类联合概率比值的对数。在判别式中,不关心这个参数的具体值,模型假设直接对 a a a 进行。

Logistic 回归的模型假设是:
a = w T x a=w^Tx a=wTx
于是,通过寻找 $ w$ 的最佳值可以得到在这个模型假设下的最佳模型。概率判别模型常用最大似然估计的方式来确定参数。

对于一次观测,获得分类 y y y 的概率为(假定 C 1 = 1 , C 2 = 0 C_1=1,C_2=0 C1=1,C2=0):
p ( y ∣ x ) = p 1 y p 0 1 − y p(y|x)=p_1^yp_0^{1-y} p(yx)=p1yp01y

那么对于 N N N 次独立全同的观测 MLE为:
w ^ = a r g m a x w J ( w ) = a r g m a x w ∑ i = 1 N ( y i log ⁡ p 1 + ( 1 − y i ) log ⁡ p 0 ) \hat{w}=\mathop{argmax}_wJ(w)=\mathop{argmax}_w\sum\limits_{i=1}^N(y_i\log p_1+(1-y_i)\log p_0) w^=argmaxwJ(w)=argmaxwi=1N(yilogp1+(1yi)logp0)
注意到,从信息论角度,这个表达式其实是**交叉熵(Cross Entropy)**表达式的相反数乘 N N N,MLE 中的对数也保证了可以和指数函数相匹配,从而在大的区间汇总获取稳定的梯度。

对这个函数求导数,注意到:
p 1 ′ = ( 1 1 + exp ⁡ ( − a ) ) ′ = p 1 ( 1 − p 1 ) p_1'=(\frac{1}{1+\exp(-a)})'=p_1(1-p_1) p1=(1+exp(a)1)=p1(1p1)
则:
J ′ ( w ) = ∑ i = 1 N y i ( 1 − p 1 ) x i − p 1 x i + y i p 1 x i = ∑ i = 1 N ( y i − p 1 ) x i J'(w)=\sum\limits_{i=1}^Ny_i(1-p_1)x_i-p_1x_i+y_ip_1x_i=\sum\limits_{i=1}^N(y_i-p_1)x_i J(w)=i=1Nyi(1p1)xip1xi+yip1xi=i=1N(yip1)xi
由于概率值的非线性,放在求和符号中时,这个式子无法直接求解。于是在实际训练的时候,和感知机类似,也可以使用不同大小的批量随机梯度上升(对于最小化就是梯度下降)来获得这个函数的极大值。

高斯判别分析

高斯判别分析(Gaussian Discriminate Analysis, GDA),一种连续软输出概率生成模型。

概率生成模型

概率判别模型需要将 p ( y ∣ x ) p(y|x) p(yx)求出来,但是概率生成模型只关心更像谁,即属于0多一点还是属于1多一点。

这里问题转化为:
p ( y ∣ x ) = p ( x ∣ y ) × p ( y ) p ( x ) ∝ p ( x ∣ y ) × p ( y ) p(y|x) = \frac{p(x|y)\times p(y)}{p(x)} \propto p(x|y)\times p(y) p(yx)=p(x)p(xy)×p(y)p(xy)×p(y)
p ( y ) p(y) p(y)是先验, p ( x ∣ y ) p(x|y) p(xy)是似然, p ( y ∣ x ) p(y|x) p(yx)是后验。

生成模型:
y ^ = a r g m a x y ∈ { 0 , 1 } p ( y ∣ x ) = a r g m a x y p ( y ) p ( x ∣ y ) \hat{y} = \mathop{argmax}_{y\in\{0,1\}} p(y|x) = \mathop{argmax}_{y}p(y)p(x|y) y^=argmaxy{0,1}p(yx)=argmaxyp(y)p(xy)

模型定义

  1. y y y看作一个伯努利分布: y ∼ B e r n o u l l i ( ϕ ) y\sim Bernoulli(\phi) yBernoulli(ϕ)
  2. 假设似然满足高斯分布: x ∣ y = 1 ∼ N ( μ 1 , Σ ) x|y=1\sim\mathcal{N}(\mu_1,\Sigma) xy=1N(μ1,Σ), x ∣ y = 0 ∼ N ( μ 0 , Σ ) x|y=0\sim\mathcal{N}(\mu_0,\Sigma) xy=0N(μ0,Σ)

image-20240111160521478

这里定义一个log似然函数:
log ⁡ − l i k e l i h o o d : w 0 = log ⁡ N i = 1 p ( x i , y i ) = ∑ i = 1 N log ⁡ ( p ( x i ∣ y i ) p ( y i ) ) = ∑ i = 1 N [ log ⁡ p ( x i ∣ y i ) + log ⁡ p ( y i ) ] = ∑ i = 1 N [ log ⁡ N ( μ 1 z ˉ ) y i ⋅ N ( μ 2 z ˉ ) 1 − y i + log ⁡ ϕ y i ( − ϕ ) + y i ] = ∑ i = 1 N [ log ⁡ N ( μ 1 z ˉ ) y i + log ⁡ N ( μ 2 z ˉ ) 1 − y i + log ⁡ ϕ y i ( − ϕ ) 1 − y i ] = ∑ i = 1 N [ log ⁡ N ( M , Σ ) ⏟ 1 + log ⁡ N ( M , Σ ) ⏟ 2 + log ⁡ ϕ y i ( 1 − ϕ ) − y i ⏟ 3 ] \begin{aligned} \log-likelihood:\quad w_0&=\log\frac N{i=1}p(x_i,y_i)\\ &=\sum_{i=1}^N\log(p(x_i | y_i)p(y_i))\\ &=\sum_{i=1}^N[\log p(x_i|y_i)+\log p(y_i)] \\ &=\sum_{i=1}^{N}\left[\log N\left(\mu_{1}\bar{z}\right)^{y_{i}}\cdot N\left(\mu_{2}\bar{z}\right)^{1-y_{i}}+\log\phi^{y_{i}}\left(-\phi\right)^{+y_{i}}\right]\\ &=\sum_{i=1}^{N}\left[\log N\left(\mu_{1}\bar{z}\right)^{y_{i}}+\log N\left(\mu_{2}\bar{z}\right)^{1-y_{i}}+\log\phi^{y_{i}}\left(-\phi\right)^{1-y_{i}}\right] \\ &=\sum_{i=1}^{N}[\underbrace{\log N(M,\Sigma)}_{1}+\underbrace{\log N(M,\Sigma)}_2+\underbrace{\log\phi^{y_{i}}(1-\phi)^{-y_{i}}}_{3}] \end{aligned} loglikelihood:w0=logi=1Np(xi,yi)=i=1Nlog(p(xiyi)p(yi))=i=1N[logp(xiyi)+logp(yi)]=i=1N[logN(μ1zˉ)yiN(μ2zˉ)1yi+logϕyi(ϕ)+yi]=i=1N[logN(μ1zˉ)yi+logN(μ2zˉ)1yi+logϕyi(ϕ)1yi]=i=1N[1 logN(M,Σ)+2 logN(M,Σ)+3 logϕyi(1ϕ)yi]

模型求解-求 ϕ \phi ϕ

首先对 进行求解,将式子3对 ϕ \phi ϕ 求偏导:
∑ i = 1 N y i ϕ + y i − 1 1 − ϕ = 0 ⟹ ϕ = ∑ i = 1 N y i N = N 1 N \begin{align}\sum\limits_{i=1}^N\frac{y_i}{\phi}+\frac{y_i-1}{1-\phi}=0\nonumber\\ \Longrightarrow\phi=\frac{\sum\limits_{i=1}^Ny_i}{N}=\frac{N_1}{N} \end{align} i=1Nϕyi+1ϕyi1=0ϕ=Ni=1Nyi=NN1

模型求解-求 μ 1 \mu_1 μ1

然后利用式子1求解 μ 1 \mu_1 μ1
μ 1 ^ = a r g m a x μ 1 ∑ i = 1 N y i log ⁡ N ( μ 1 , Σ ) = a r g m i n μ 1 ∑ i = 1 N y i ( x i − μ 1 ) T Σ − 1 ( x i − μ 1 ) \begin{align}\hat{\mu_1}&=\mathop{argmax}_{\mu_1}\sum\limits_{i=1}^Ny_i\log\mathcal{N}(\mu_1,\Sigma)\nonumber\\ &=\mathop{argmin}_{\mu_1}\sum\limits_{i=1}^Ny_i(x_i-\mu_1)^T\Sigma^{-1}(x_i-\mu_1) \end{align} μ1^=argmaxμ1i=1NyilogN(μ1,Σ)=argminμ1i=1Nyi(xiμ1)TΣ1(xiμ1)
由于:
∑ i = 1 N y i ( x i − μ 1 ) T Σ − 1 ( x i − μ 1 ) = ∑ i = 1 N y i x i T Σ − 1 x i − 2 y i μ 1 T Σ − 1 x i + y i μ 1 T Σ − 1 μ 1 \sum\limits_{i=1}^Ny_i(x_i-\mu_1)^T\Sigma^{-1}(x_i-\mu_1)=\sum\limits_{i=1}^Ny_ix_i^T\Sigma^{-1}x_i-2y_i\mu_1^T\Sigma^{-1}x_i+y_i\mu_1^T\Sigma^{-1}\mu_1 i=1Nyi(xiμ1)TΣ1(xiμ1)=i=1NyixiTΣ1xi2yiμ1TΣ1xi+yiμ1TΣ1μ1

求微分左边乘以 Σ \Sigma Σ 可以得到:
∑ i = 1 N − 2 y i Σ − 1 x i + 2 y i Σ − 1 μ 1 = 0 ⟹ μ 1 = ∑ i = 1 N y i x i ∑ i = 1 N y i = ∑ i = 1 N y i x i N 1 \begin{align}\sum\limits_{i=1}^N-2y_i\Sigma^{-1}x_i+2y_i\Sigma^{-1}\mu_1=0\nonumber\\ \Longrightarrow\mu_1=\frac{\sum\limits_{i=1}^Ny_ix_i}{\sum\limits_{i=1}^Ny_i}=\frac{\sum\limits_{i=1}^Ny_ix_i}{N_1} \end{align} i=1N2yiΣ1xi+2yiΣ1μ1=0μ1=i=1Nyii=1Nyixi=N1i=1Nyixi

模型求解-求 μ 0 \mu_0 μ0

求解 μ 0 \mu_0 μ0,由于正反例是对称的,所以:
μ 0 = ∑ i = 1 N ( 1 − y i ) x i N 0 \mu_0=\frac{\sum\limits_{i=1}^N(1-y_i)x_i}{N_0} μ0=N0i=1N(1yi)xi

模型求解-求协方差 Σ \Sigma Σ

最为困难的是求解 Σ \Sigma Σ,我们的模型假设对正反例采用相同的协方差矩阵,当然从上面的求解中我们可以看到,即使采用不同的矩阵也不会影响之前的三个参数。首先我们有:
∑ i = 1 N log ⁡ N ( μ , Σ ) = ∑ i = 1 N log ⁡ ( 1 ( 2 π ) p / 2 ∣ Σ ∣ 1 / 2 ) + ( − 1 2 ( x i − μ ) T Σ − 1 ( x i − μ ) ) = C o n s t − 1 2 N log ⁡ ∣ Σ ∣ − 1 2 T r a c e ( ( x i − μ ) T Σ − 1 ( x i − μ ) ) = C o n s t − 1 2 N log ⁡ ∣ Σ ∣ − 1 2 T r a c e ( ( x i − μ ) ( x i − μ ) T Σ − 1 ) = C o n s t − 1 2 N log ⁡ ∣ Σ ∣ − 1 2 N T r a c e ( S Σ − 1 ) \begin{align} \sum\limits_{i=1}^N\log\mathcal{N}(\mu,\Sigma)&=\sum\limits_{i=1}^N\log(\frac{1}{(2\pi)^{p/2}|\Sigma|^{1/2}})+(-\frac{1}{2}(x_i-\mu)^T\Sigma^{-1}(x_i-\mu))\nonumber\\ &=Const-\frac{1}{2}N\log|\Sigma|-\frac{1}{2}Trace((x_i-\mu)^T\Sigma^{-1}(x_i-\mu))\nonumber\\ &=Const-\frac{1}{2}N\log|\Sigma|-\frac{1}{2}Trace((x_i-\mu)(x_i-\mu)^T\Sigma^{-1})\nonumber\\ &=Const-\frac{1}{2}N\log|\Sigma|-\frac{1}{2}NTrace(S\Sigma^{-1}) \end{align} i=1NlogN(μ,Σ)=i=1Nlog((2π)p/2∣Σ1/21)+(21(xiμ)TΣ1(xiμ))=Const21Nlog∣Σ∣21Trace((xiμ)TΣ1(xiμ))=Const21Nlog∣Σ∣21Trace((xiμ)(xiμ)TΣ1)=Const21Nlog∣Σ∣21NTrace(SΣ1)
在这个表达式中,我们在标量上加入迹从而可以交换矩阵的顺序,对于包含绝对值和迹的表达式的导数,我们有:
∂ ∂ A ( ∣ A ∣ ) = ∣ A ∣ A − 1 ∂ ∂ A T r a c e ( A B ) = B T \begin{align} \frac{\partial}{\partial A}(|A|)&=|A|A^{-1}\\ \frac{\partial}{\partial A}Trace(AB)&=B^T \end{align} A(A)ATrace(AB)=AA1=BT
因此:
[ ∑ i = 1 N ( ( 1 − y i ) log ⁡ N ( μ 0 , Σ ) + y i log ⁡ N ( μ 1 , Σ ) ] ′ = C o n s t − 1 2 N log ⁡ ∣ Σ ∣ − 1 2 N 1 T r a c e ( S 1 Σ − 1 ) − 1 2 N 2 T r a c e ( S 2 Σ − 1 ) \begin{align}[\sum\limits_{i=1}^N((1-y_i)\log\mathcal{N}(\mu_0,\Sigma)+y_i\log \mathcal{N}(\mu_1,\Sigma)]' \nonumber\\=Const-\frac{1}{2}N\log|\Sigma|-\frac{1}{2}N_1Trace(S_1\Sigma^{-1})-\frac{1}{2}N_2Trace(S_2\Sigma^{-1}) \end{align} [i=1N((1yi)logN(μ0,Σ)+yilogN(μ1,Σ)]=Const21Nlog∣Σ∣21N1Trace(S1Σ1)21N2Trace(S2Σ1)
其中, S 1 , S 2 S_1,S_2 S1,S2 分别为两个类数据内部的协方差矩阵,于是:
N Σ − 1 − N 1 S 1 T Σ − 2 − N 2 S 2 T Σ − 2 = 0 ⟹ Σ = N 1 S 1 + N 2 S 2 N \begin{align}N\Sigma^{-1}-N_1S_1^T\Sigma^{-2}-N_2S_2^T\Sigma^{-2}=0\nonumber \\\Longrightarrow\Sigma=\frac{N_1S_1+N_2S_2}{N} \end{align} NΣ1N1S1TΣ2N2S2TΣ2=0Σ=NN1S1+N2S2
这里应用了类协方差矩阵的对称性。

于是我们就利用最大后验的方法求得了我们模型假设里面的所有参数,根据模型,可以得到联合分布,也就可以得到用于推断的条件分布了。

朴素贝叶斯

朴素贝叶斯假设/条件独立性假设、最简单的概率图模型

x
x1
x2
...
xp
y

其中xi表示的是维度而不是变量,其中 x i ⊥ x j ∣ y , ∀   i ≠ j x_i\perp x_j|y,\forall\ i\ne j xixjy, i=j

那么朴素贝叶斯假设:
P ( x 1 , x 2 ∣ y ) = p ( x 1 ∣ y ) p ( x 2 ∣ y ) P(x_1, x2|y) = p(x_1|y) p(x_2|y) P(x1,x2∣y)=p(x1y)p(x2y)

也就是说
p ( x ∣ y ) = ∏ i = 1 p p ( x i ∣ y ) p(x|y)=\prod\limits_{i=1}^pp(x_i|y) p(xy)=i=1pp(xiy)
这里起了简化运算的作用,没有其它动机。

回顾一下概率生成模型
y ^ = a r g m a x y ∈ { 0 , 1 }   p ( y ∣ x ) = a r g m a x y   p ( x , y ) p ( x ) = a r g m a x y   p ( y ) p ( x ∣ y ) \begin{align} \hat{y} &= \mathop{argmax}_{y\in\{0,1\}}\ p(y|x) \\&= \mathop{argmax}_{y}\ \frac{p(x,y)}{p(x)} \\ &= \mathop{argmax}_{y}\ p(y)p(x|y) \end{align} y^=argmaxy{0,1} p(yx)=argmaxy p(x)p(x,y)=argmaxy p(y)p(xy)

利用贝叶斯定理,对于单次观测:
p ( y ∣ x ) = p ( x ∣ y ) p ( y ) p ( x ) = ∏ i = 1 p p ( x i ∣ y ) p ( y ) p ( x ) p(y|x)=\frac{p(x|y)p(y)}{p(x)}=\frac{\prod\limits_{i=1}^pp(x_i|y)p(y)}{p(x)} p(yx)=p(x)p(xy)p(y)=p(x)i=1pp(xiy)p(y)
对于单个维度的条件概率以及类先验作出进一步的假设:

  1. x i x_i xi 为连续变量: p ( x i ∣ y ) = N ( μ i , σ i 2 ) p(x_i|y)=\mathcal{N}(\mu_i,\sigma_i^2) p(xiy)=N(μi,σi2)
  2. x i x_i xi 为离散变量:类别分布(Categorical): p ( x i = i ∣ y ) = θ i , ∑ i = 1 K θ i = 1 p(x_i=i|y)=\theta_i,\sum\limits_{i=1}^K\theta_i=1 p(xi=iy)=θi,i=1Kθi=1
  3. p ( y ) = ϕ y ( 1 − ϕ ) 1 − y p(y)=\phi^y(1-\phi)^{1-y} p(y)=ϕy(1ϕ)1y

对这些参数的估计,常用 MLE 的方法直接在数据集上估计,由于不需要知道各个维度之间的关系,因此,所需数据量大大减少了。估算完这些参数,再代入贝叶斯定理中得到类别的后验分布。

参考


  1. 对数几率回归 —— Logistic Regression - 知乎 (zhihu.com) ↩︎

  2. #8 究竟什么是"逻辑回归", “对数几率回归” ↩︎

  3. 线性判别分析LDA原理及推导过程(非常详细) - 知乎 (zhihu.com) ↩︎

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值