《机器学习》 学习记录 - 第三章
第3章 线性模型
3.1 基本形式
给定由
(式3.1)一般用向量形式写成
其中
许多功能更为强大的非线性模型(nonlinear model)可以在线性模型的基础上通过引入层级结构或高维映射而得。
由于
3.2 线性回归
线性回归试图学的一个线性模型以尽可能准确地预测实值输出标记。
3.2.1 当输入属性数目只有一个时
对离散属性,若属性值间存在“序”关系,可通过连续化将其转化为连续值。例如:
- 二值属性“身高”的取值“高”“矮”可转化为{1.0,0.0};
- 三值属性“高度”的取值“高”“中”“低”可转化为{1.0,0.5,0.0};
若属性值间不存在序关系,假定有
- 属性“瓜类”的取值“西瓜”“南瓜”“黄瓜”可转化为(0,0,1),(0,1,0),(1,0,0).
若将无序属性连续化,则会不恰当地引入序关系,对后续处理如距离计算等造成误导。
线性回归试图学得
要确定式子中的
均方误差有非常好的几何意义,它对应了常用的欧几里得距离,简称“欧式距离”(Euclidean distance)。
- 最小二乘法(least square method):基于均方误差最小化来进行模型求解的方法。
在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧式距离之和最小。
求解
我们可以将
3.2.2 当输入属性数目有多个时
此时,我们试图学得
这称为“多元线性回归”(multivariate linear regression),也称“多变量线性回归”。
对多元线性回归模型求解时可能会解出多个
3.2.3 对数线性回归
为了便于观察,我们将线性回归模型简写为:
假设我们认为示例所对应的输出标记是在指数尺度上变化,那就可以将输出标记的对数作为线性模型逼近的目标,即
这就是“对数线性回归”(log-linear regression),它实际上是在试图让
如图3.1所示,这里的对数函数起到了将线性回归模型的预测值与真实标记联系起来的作用。
更一般的,考虑单调可微函数
这样得到的模型称为“广义线性模型”(generalized linear model),其中函数
广义线性模型的参数估计常常通过加权最小二乘法或极大似然法进行。并且
显然,对数线性回归时广义线性模型在
3.3 对数几率回归(logistic regression,亦称logit regression)
虽然对数几率回归的名字是“回归”,但它实际上确是一种分类学习方法。
- 它直接对分类可能性进行建模,无需事先假设数据分布,这样就避免了假设分布不准确所带来的问题。
- 它不仅预测出“类别”,而是可得到近似概率预测,这对许多需利用概率辅助决策的任务很有用。
若要使用线性模型进行分类任务,只需找一个单调可微函数将分类任务的真实标记
3.3.1 二分类任务
首先考虑二分类任务,其输出标记
最理想的是“单位阶跃函数”(unit-step function)(也叫Heaviside函数):
若预测值
但是从图3.2可以看出,单位阶跃函数不连续,并不能直接用作式(3.15)中的
于是找到一个常用的、能在一定程度上近似单位阶跃函数的“替代函数”(surrogate function),对数几率函数(logistic function)(可简称为“对率函数”):
可以从图3.2看出,对数几率函数是一种“Sigmoid”函数,即形似S的函数,它将
转化为一个接近0或1的
将对数几率函数作为
若将
3.4 线性判别分析
线性判别分析(Linear Discriminant Analysis,简称LDA)是一种经典的线性学习方法,亦称“Fisher判别分析”.
LDA的思想:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别。
LDA的二维示意图如图3.3所示:
3.5 多分类学习
在更多情形下,我们基于一些基本策略,利用二分类学习器来解决多分类问题。(通常称分类学习器为“分类器”(classifier))
考虑
- 具体来说,先对问题进行拆分,然后为拆出的每个二分类任务都训练一个分类器;
- 在测试时,对这些分类器的预测结果进行集成以获得最终的多分类结果。
最经典的拆分策略有三种:
- “一对一”(One vs. One,简称OvO)
- “一对其余”(One vs. Rest,简称OvR),亦称OvA(One vs. All)
- “多对多”(Many vs. Many,简称MvM)
3.5.1 OvO
OvO将数据集中的N个类别两两配对,从而产生
在测试阶段,新样本将同时提交给所有分类器,我们将得到
3.5.2 OvR
OvR是每次将一个类的样例作为正例、所有其他类的样例作为反例来训练
- 在测试时若仅有一个分类器预测为正类,则对应的类别标记为最终分类结果。
- 若有多个分类器预测为正类,则通常考虑分类器的预测置信度,选择置信度最大的类别标记作为分类结果。
图3.4给出了一个示意图:
容易看出,OvO的存储开销和测试时间开销通常比OvR更大。但在训练时,OvR的每个分类器均使用全部训练样例,而OvO每个分类器仅用到两个类的样例。因此,在类别很多时,OvO的训练时间开销通常比OvR更小。
3.5.3 MvM
MvM是每次将若干个类作为正类,若干个其他类作为反类。
MvM的正、反类构造必须有特殊的设计,不能随意选取。其中,有最常用的一种MvM技术:“纠错输出码”(Error Correcting Output Codes,简称ECOC)。
ECOC将编码的思想引入类别拆分,并尽可能在解码过程中具有容错性。
- 其中,类别划分通过“编码矩阵”(coding matrix)指定。常见的编码矩阵有二元码和三元码,前者将每个类别分别指定为正类和反类,后者在正、反类之外,还可指定“停用类”。图3.5给出了一个示意图。
- 一般来说,对同一个学习任务,ECOC编码越长,纠错能力越强。
- 理论上来说,对同等长度的编码,任意两个类别之间的编码距离越远,则纠错能力越强。在码长较小时可根据这个原则计算出理论最优编码。
- 并不是编码的理论性质越好,分类性能就越好。(机器学习问题涉及很多因素)
3.6 类别不平衡问题
前面介绍的分类学习方法都有一个共同的基本假设:不同类别的训练样例数目相当。
- 类别不平衡(class-imbalance):分类任务中不同类别的训练样例数目差别很大的情况。
从线性分类器的角度讨论:我们在用
几率
若
当训练集中正、反例数目不同时,令
若
但我们的分类器基于式(3.46)进行决策,所以我们需要对其预测值进行调整,让其实际上是在执行式(3.47)。要做到这但,只需令
此为类别不平衡学习的一个基本策略————“再缩放”(rescaling).
但是“训练集是真实样本总体的无偏采样”这个假设往往并不成立,我们未必能有效地基于训练集观测几率来推断出真实几率。现有技术大体上有三类做法:
- 直接对训练集里的反类样例进行“欠采样”(undersampling)/“下采样”(downsampling),即去除一些反例使正、反例数目接近,然后再进行学习;
- 对训练集里的正类样例进行“过采样”(oversampling)/“上采样”(upsampling),即增加一些正例使得正、反例数目接近,然后再进行学习;
- 直接基于原始训练集进行学习,但在用训练好的分类器进行预测时,将式(3.48)嵌入到其决策过程中,称为“阈值移动”(threshold-moving)。
需注意以下几点:
- 欠采样法的时间开销通常远小于过采样法,因为前者丢弃了很多反例,使分类器训练集远小于初始训练集;后者增加了很多正例,其训练集大于初始训练集。
- 过采样法不能简单地对初始正例样本进行重复采样,否则会招致严重的过拟合。
过采样法的代表性算法SMOTE是通过对训练集里的正例进行插值来产生额外的正例。 - 欠采样法若随机丢弃反例,则可能丢失一些重要信息。
欠采样法的代表性算法EasyEnsemble是利用集成学习机制,将反例划分为若干个集合供不同学习器使用,这样在全局来看不会丢失重要信息。
再缩放是代价敏感学习(cost-sensitive learning)的基础。在代价敏感学习中将式(3.48)中的
本文作者:xsRecord
本文链接:https://www.cnblogs.com/xsRecord/p/18498663
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步