第3章:线性模型
基本形式
给定由d个属性描述的示例\(\vec{x}=(x_1, x_2, ..., x_d)^T\),线性模型试图通过一个线性组合来进行预测的函数,既:
其中\(\vec{w}=(w_1, w_2, ..., w_d)^T\)是线性模型中的学习参数。
线性回归
在给定数据集\(D=\{(\vec{x_i}, y_i), 1 \leq i \leq m\}\),其中\(\vec{x_i}\)是d维的向量。线性回归试图学习到:
其中\(f(\vec{x_i})\)是样本\(x_i\)的预测值,\(y_i\)为真实值。
当我们的所有样本的预测值都尽量靠近实际值,则我们的线性规划越好。则我们可以将这个评判标准转化为求预测值与真实值的方差最小化,既:
对该公式求偏导得如下公式:
然后设每个等式为0,则
这样就可以得到可学习参数。
对数线回归
将线性回归的预测函数做变化就可以得到对数线性回归模型,既:
这里已经让模型的特征和真实结果引入了非线性映射,如图:
![image-20230217133914927](https://img2023.cnblogs.com/blog/1445856/202302/1445856-20230217133916909-973780796.png)
更加一般的引入其他函数可以表示为:
其中\(g\)函数为可微函数。
对数几率回归
在上面的回归模型解决了连续预测任务,但是实际中存在大量离散任务,对数几率回归就可以解决离散任务。对于最简单的离散任务:二分类任务。只需要将上诉针对连续任务的回归模型中预测值大于0的样本预测为0,小于0的样本预测为1.就实现了简单的将连续离散化操作。但是由于我们在求可学习参数时需要进行求偏导,则我们需要引入一个可微函数来实现刚刚所讲的离散化操作,既就是对数几率函数:
![image-20230217134826424](https://img2023.cnblogs.com/blog/1445856/202302/1445856-20230217134828233-1627121731.png)
则对数几率回归的预测函数如下:
由于\(y \in (0, 1)\)其实可以看做是样本\(\vec{x}\)被认为是正样本的概率,并且将上面的公式变形,可以得到如下:
则\(y=p(y=1|x), 1-y=p(y=0:x)\)。这里可能有点难以理解。对于一个二分类问题,既:
注意:我这里e有负号,所以推到是和西瓜书上一致的。
然后,我们就可以根据最大似然估计将这个事件的概率最大化,其中整个事件指的是所有样本为正负样本这种情况出现的概率。则得到我们所需的目标函数:
由于连乘的函数不方便求偏导,所以我们对该目标函数对数化,在对数化之后乘以-1,则目标函数就变成了最小化问题,既:
后续的利用偏导求解可学习参数\(\vec{w}, b\)的微分值,对其进行更新即可。
线性判别分析
线性判别分析的思想:让所有样本都投影到一个更加低维度的空间中。比如对于一个二维空间中的点,投影到一条直线上,线性判别分析想找到一条线让同类点在投影线上的密度尽量高,在非同类点在投影线上的密度尽量低。
![image-20230217141806656](https://img2023.cnblogs.com/blog/1445856/202302/1445856-20230217141808358-585536758.png)
给定数据集\(D=\{(\vec{x_i}), y_i\}_{i=1}^m, y_i \in \{0, 1\}\),令\(X_i, \mu_i, \sum_i\)分别表示第i类(\(i \in \{0, 1\}\))分类的样本集合,均值向量,协方差矩阵。下面将详细推导均值向量,协方差矩阵:
令\(\vec{x_i^j}\)表示第i分类样本集合中的第i个样本,则:
我们可以将\((\vec{w}^T\vec{x_i^j}+b)-y_i=(\vec{w}, b, -1)^T*(\vec{x_i^j}, 1, y_i)\), 令\(\vec{W}=(\vec{w}, b, -1)^T, \vec{X}=(\vec{x_i}, 1, y_i)^T\).则:
则协方差矩阵\(\sum_i=\vec{X}\vec{X}^T\).
则两个分类的均值和协方差为\(\vec{W}^T\vec{\mu_i}, \vec{w^T}\sum_{i}\vec{w}\)。根据线性判别的思想要让同类密度大,异类密度小,则要求各类协方差之和尽量小,各类均值向量的欧式距离尽量大!对于一个二分类来说,则目标函数设计如下:
下面如何求解可学习参数的详细推导就不做详细说明了。
多分类学习
在实际任务中分类任务通常是多分类任务。对于有些模型可以直接扩展为多分类模型,比如神经网络直接在最后的全连接网络的输出层增加节点即可。但是对于二分类器来说就需要使用一些策略将二分类扩展到多分类:
常见的策略有:一对一,一对其余,多对多。
一对一:对多个分类两两配对形成\(\frac{N(N-1)}{2}\)个分类器
一对其余:只将其中一个类视作正样本,其余为负样本,形成N个分类器
多对多:将多个类别视作正样本,其余为负样本。
常用的多对多划分策略:纠错输出码(EOOC)
EOOC的过程主要分为2个步骤:
- 编码:对N个类别做M次划分,每次将一部分类别划为正样本,一部分为负样本,从从而形成二分问题。这样形成了M个二分问题的训练集,可以训练出M个分类器
- 解码:M个分类器分别对测试数据进行测试,这些测试数据进行编码,将这些编码与每个类别各自的编码进行比较,返回其中距离最小的类别为最终预测结果。
类别不平衡问题
类别不平衡指的是训练集中不用类别的训练样例数差别很大。从上面的对数几率回归来讲,如果正样本的数量远远大于负样本的数量,则\(p(y=1|x)\)的值也会很大。所以,我们需要对其进行调整。
假设\(m^+, m^-\)表示正负样本的数量,则令\(\frac{y}{1-y}>\frac{m^+}{m^-}\)为的预测为正样本。这种方式称为再放缩。但是该方法往往在实际中不适用。下面介绍三种方式:
欠采样:删除一些数量过大的样本,使得正负样本的数量达到平衡。
过采样:对类别数量少的种类进行重复采样,使得正负样本的数量达到平衡。
直接基于原始数据集:直接基于原始数据进行学习,但是在使用训练好的分类器其进行预测时,将再放缩放入决策过程中。