0%

machine learning review

machine learning review

Linear regression

Introduction

什么是回归?

  • 根据给定的特征,预测感兴趣变量的值
  • 数学角度:回归旨在学习一个函数\(f(\cdot)\),该函数能够对输入数据\(x\)与输出值\(y\)之间的关系进行建模。

线性回归:就是限制这个函数只能为线性的形式

代价/损失函数:

image-20250102224818608

或者

image-20250102224828224

close-form的解决方法并不总是存在,或者代价太高,因此产生了梯度下降法。

梯度下降:image-20250102225112877

学习率的设置:

  • 如果学习率太小:收敛的速度会很慢
  • 如果学习率太大:迭代可能会发散

随机梯度下降:

  • 梯度下降:每次迭代需要计算训练集里的所有数据样本,对于大数据集来说复杂度太高,为解决这样的问题我们可以选用数据集的一小部分:mini-batch
  • 获取小批量的方法:
    • reshuffling
    • Segmenting

随机梯度是平均梯度的无偏估计:

image-20250102230112139

其他的优化方法

  • 牛顿法

    • 优势:
      • 不需要人为的选择学习率
      • 更快的收敛速度
    • 劣势:
      • 计算更加昂贵
  • 拟牛顿法

  • 共轭梯度法

  • 坐标下降法

    • 普遍收敛更加,但是计算更加昂贵

Logistic regression

在分类任务中,目标变量的值应该在0-1之间,线性回归的输出值与分类任务不兼容

可以通过Sigmod函数将线性回归转换为逻辑回归,如下:

image-20250103001037662

cross-entropy loss交叉熵损失:

image-20250103001309582

取对数:一是防止下溢,二是使连乘变成连加

多分类case

处理多分类情况:

  • one-to-all:为每种类别都训练一个分类器,如下:
image-20250103002657026
  • softmax函数:数据x被分类到第i个类别的概率为:

image-20250103003013271

对于二分类的softmax分类来说等同于参数为w1-w2的逻辑回归,原因如下:

image-20250103003140813

对于K分类来说,y标签是one-hot vector,损失函数如下:

image-20250103011320790

然后梯度下降:

image-20250103011406779

从概率角度看回归和分类

Introduction

从概率的角度来看,给定\(x\)来预测输出\(y\),我们只需要对条件概率\(p(y|x)\)进行建模。

根据上面的这个条件概率,输出可以被预测为下面这两种形式:

image-20250103125250322

回归上的数学概率

单变量高斯分布:

image-20250103125606602

多变量高斯分布:

image-20250103125713822

假设条件概率分布是正态分布,我们做一次预测,就是使用了条件概率分布的均值

模型训练的目的就是找到一个参数w,使得对数概率达到最大,如下所示,我们可以看到要最大似然函数就是要最小损失函数:

image-20250103130528533

总结:

  • 建模:假设条件分布为高斯分布
  • 训练:训练模型就是最大化似然函数

分类上的数学概率

为了实现二分类,条件概率假设为伯努利分布:

image-20250103131110948

训练的目标就是最大化对数似然函数,可以发现最大化对数似然函数就是在最小化交叉熵:

image-20250103131420505

总结:

  • 建模:假设输出是伯努利条件分布
  • 训练:训练就是要最大化对数似然函数

多分类问题

分类分布

\[ p(\mathbf{z} = \text{onehot}_k) = \pi_k \] - 其中\(\text{onehot}_i = [0,\cdots,0,1,0,\cdots,0]\)是一个向量,其中第\(i\)个元素是唯一的非零元素\(1\)。 - \(\sum_{k = 1}^{K} \pi_k = 1\)

该分布可以等效地写为

\[ p(\mathbf{z}) = \prod_{k = 1}^{K} \pi_k^{z_k} \] 其中\(\mathbf{z}\)是一个独热向量(one-hot vector)。

非线性模型 & 过拟合 & 正则化

非线性模型

怎样构建一个能够处理非线性建模的模型:

  • 用基函数对线性模型进行非线性化
image-20250104190026944

基函数模型:

image-20250104190138862

基函数模型对x是非线性的,对于参数w来说仍然是线性的

过拟合

模型在“看不见”的数据上表现良好的能力叫做泛化能力

通常来说,模型的复杂度取决于参数的数量,参数越多,模型越复杂。

赤池信息标准:

image-20250104192601860

贝叶斯信息标准:

image-20250104192650860

由于似然函数,上述标准只能用于概率模型

为了让模型表现良好,我们应该平衡模型的复杂性和表示能力

如何验证误差随着模型的复杂度增加而减少,它表明模型欠拟合,否则,它表明模型过拟合

image-20250104191859879

如果训练数据给太多给验证集,则没有足够的数据样本用于训练

K-fold cross-validation(K折交叉验证):

  • 把训练集分成K个子集
  • 在K-1个子集上进行训练,在一个子集上进行验证
  • 重复K次,每一次都使用了一个不同的子集用以验证
image-20250104192244462

\(L_2\)正则

image-20250104192920421
  • 容易把模型的参数缩小到0
  • \(\lambda\)的值越大,对较小的w的偏爱就越强

\(L_1\)正则

image-20250104193244790

L1正则同样更喜欢值更小的模型参数,但是L1经常导致w的稀疏解,即参数中很多值为0

image-20250104193559778

支持向量机

线性分类器的决策边界

在线性分类器中,决策边界总是一个超平面,它的目标就是找到一个超平面能够分隔开所有的样本

比如逻辑回归,通过最小化交叉熵来找到决策边界超平面:

image-20250104205409701

并且具有以下性质:

image-20250104205504285

对于不同的损失函数,我们可以得到不同的超平面,比如说下图:

image-20250104205700866

但是这些超平面都是在训练集上进行评估的,但是我们需要的是在测试集上较好的性能,那怎么评估一个超平面的好坏呢,一个简单的直觉就是,最大化边界

线性最大化边界分类器

image-20250104210011838

如上图所示,边界越大,那么在没有看见的数据集(测试集)上它能够正确分类的概率就越大。

怎么表示边界?

image-20250104210136050
image-20250104210406174

边界就是所有点与超平面的最小距离,因此最大边界分类器的目标就是找到最优的w和b,使得边界最大,即:

image-20250104210559474

转换后的目标函数

basic idea:优化一个与原始问题共享最优值的目标函数

image-20250104212910874

如此的话我们可以得到一个具有相同最优值得目标函数,这是一个带约束得目标函数:

image-20250104212950728

因为至少有一个等于符号成立,目标函数可以化简为:

image-20250104213311271

进一步转换:

image-20250104213340375

因此最大边界超平面就能通过以下优化函数找到:

image-20250104215005746

这是一个二次型优化问题,可以通过数值方法求解:

image-20250104215208038

等效的对偶公式

每一个凸优化问题都有相应的对偶公式

原始优化问题的拉格朗日函数:

image-20250104215348316

求解该拉格朗日函数:

image-20250104215441280

因此,对偶的优化变成:

image-20250104215522647

w,b,a之间的关系:

image-20250104215625253

至此我们得到了原始分类器的对偶版本:

image-20250104215724331

如何理解对偶最大边界分类器:

image-20250104215907680

an的稀疏性

测试的复杂度貌似更高

image-20250104221050947

支持向量:在边界上的那些样本被称作

不等式的约束条件使用拉格朗日法需要满足KKT条件,即是下图红色部分,可以推出大部分an都是0

image-20250104220440845

因此测试的函数可以化简为:

image-20250104221233591