西瓜书学习笔记(第三章、线性模型)

系列文章目录

西瓜书学习笔记(第二章、模型评估与选择)https://blog.csdn.net/m0_56644478/article/details/132022111?spm=1001.2014.3001.5501


第三章、线性模型

目录

一、基本形式

二、线性回归

1.一元线性回归

2.多元线性回归

3.对数线性回归 

三、*对数几率回归

1.概述

2.具体公式以及求解方法

四、线性判别分析

1.概述

 2.具体公式

3.如何求解

 4.多分类任务

五、多分类学习

1.OvO

2.OvR

3.MvM

六、类别不平衡问题

总结 

 


一、基本形式

给定由d个属性描述的示例  x=\left (x _{1};x _{2};...;x _{d} \right ), 其中 x_{i} 是 x 在第i个属性上的取值,线性模型(linear model)试图学得一个通过属性的线性组合来进行预测的函数,即:

f\left ( x \right )=\omega _{1}x_{1}+\omega _{2}x_{2}+...+\omega _{d}x_{d}+b

一般用向量形式写成:

f\left ( x \right )=\omega ^{T}x+b

线性模型形式简单、易于建模,但却蕴含着机器学习中一些重要的基本思想。此外,由于\omega直观表达了各属性在预测中的重要性,因此线性模型具有很好的可解释性。

 


二、线性回归

1.一元线性回归

给定一个数据集 D=\left \{ \left ( x_{1}, y_{1} \right ) ,\left ( x_{2}, y_{2} \right ) ,...,\left ( x_{m}, y_{m} \right ) \right \}, 线性回归试图学得一个线性模型以尽可能准确地预测实值输出标记。

关于离散属性如何转化成数值标签:

  • 若属性值存在“序”的关系,可通过连续化将其转化成连续值。

       如身高中,将“高”和“矮”转化成{1.0,0.0};再比如将成绩中,“优”、“中”和“良”转化成{1.0,0.5,0.0}。

  • 若属性值间不存在“序”关系,则通常转化为k维向量(假定有k个属性值)。

       比如瓜类中,“西瓜”、“南瓜”和“黄瓜”可转化成(0,0,1),(0,1,0),(1,0,0)。

回归任务中最常用的就是均方误差(MSE),由此可以试图让均方误差最小化(这里仅考虑单个特征):

 均方误差对应了常用的欧几里得距离(Euclidean distance),基于均方误差最小化来进行模型求解的方法称为“最小二乘法”(least square method),在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧氏距离之和最小。

2.多元线性回归

更一般的情形是样本由d个属性所组成,此时我们试图学得(此时x是向量形式):

 称为“多元线性回归”,类似的同样可以使用最小二乘法,将\omega和b吸收如向量形式 \omega =\left ( \omega ;b \right ),相应的将数据集D表示成一个m*(d+1)大小的矩阵(m为样本数量,d为特征数):

 由此可以得到优化目标函数:

 令上式为零可得最优解的闭式解,当X^{T}X满秩矩阵(full-rank matrix)或正定矩阵时(即当其可以求逆时),可得:

\hat{\omega}^{*}=\left ( X^{T}X \right )^{-1}X^{T}y

 然而现实任务中X^{T}X往往不是满秩矩阵。比如:

1.在现实中的任务中特征数大于样例数(d>m):

 2.有特征是线性相关的:

 此时可以通过引入正则化(regularization)项来进行求解,这个在后面章节会详细说明。

3.对数线性回归 

 对数线性回归(log-linear regression):实质上是利用线性回归求取输入空间到输出空间的非线性函数映射。

\ln y=\omega ^{T}x+b

 


三、*对数几率回归

1.概述

第二节介绍的是使用线性模型完成回归任务,那么如何使用线性模型进行分类任务呢?接下来将介绍对数几率回归(logistic regression,亦称逻辑回归,LR回归)。

在二分类任务中,输出值为离散的{0,1},而线性回归模型产生的预测值是连续的实值,如何将实值转化成{0,1}呢?这里考虑两种映射函数:单位跃阶函数(unit-step function)和sigmoid函数

单位跃阶函数具体表达形式为:

y=\left\{\begin{matrix} 0, z< 0;\\ 0.5, z=0;\\ 1, z> 0, \end{matrix}\right.

而sigmoid函数(对数几率函数)表达式为:

y=\frac{1}{1+e^{-z}}

相比之下,单位跃阶函数有两个不可导点,并且不连续;而sigmoid函数处处可导,且其求导开销小,所以在对数几率回归中,采用sigmoid函数。

2.具体公式以及求解方法

z=\omega ^{T}x+b带入sigmoid函数,可以得到:

y=\frac{1}{1+e^{-\left (\omega ^{T}x+b \right )}}

继续化简,得

\ln \frac{y}{1-y} = \omega ^{T}x+b

将y看做是样本为正例的概率,1-y看做是样本为负例的概率,两者的比值称为“几率”(odds),反映了x作为正例的可能性,由此可以看出,对数几率回归就是在用线性回归模型的预测结果去逼近真实标记的对数几率。 

下面可以了解一下如何通过上式确定\omegab,设y对应后验概率估计p\left ( y=1|x \right )1-y对应后验概率估计p\left ( y=0|x \right ),则上式可改写为:

\ln \frac{p\left ( y=1|x \right )}{p\left ( y=0|x \right )} = \omega ^{T}x+b

同时有 p\left ( y=1|x \right )+p\left ( y=0|x \right )=1,联立两式,可以得到:

\left\{\begin{matrix} p\left ( y=1|x \right )=\frac{e^{\omega ^{T}x +b }}{1+e^{\omega ^{T}x +b }};\\ p\left ( y=0|x \right )=\frac{1}{1+e^{\omega ^{T}x +b }} .\end{matrix}\right.

 之后可以利用“极大似然法”(maximum likelihood method)来估计\omegab,得到:

l\left ( \omega ,b \right )=\sum_{i=1}^{m}\ln p\left ( y_{i}| x_{i}; \omega ,b\right ),

即令每个样本属于其真实标记的概率越大越好,接着使用经典的数值优化算法如梯度下降法(gradient descent method)或者牛顿法(Newton method)等都可以求得最优解。

 


四、线性判别分析

1.概述

线性判别分析(Linear Discriminant Analysis,简称LDA)是一种经典的线性学习方法,在二分类问题最早由Fisher提出,亦称“Fisher判别分析”。

LDA的思想可以概括为(以二分类为例):将给定训练集中的样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离。简单来说就是“最小化类内方差、最大化类间方差”。

 2.具体公式

如何来衡量类内方差和类间方差呢?在这里需要引入两个概念:类内散度矩阵(within-class scatter matrix)以及类间散度矩阵(between-class scatter matrix)。

定义类内散度矩阵为:

S_{\omega }=\sum_{0}+\sum_{1}\newline \\\\=\sum _{x\in X_{0}}\left ( x-\mu _{0} \right )\left ( x-\mu _{0} \right )^{T}+\sum _{x\in X_{1}}\left ( x-\mu _{1} \right )\left ( x-\mu _{1} \right )^{T}

定义类间散度矩阵为:

S_{b}=\left ( \mu _{0}- \mu _{1}\right )\left ( \mu _{0}- \mu _{1}\right )^{T}

其中X_{i}\mu _{i}\sum _{i}分别代表i\in \left \{ 0,1 \right \}类示例的集合、均值向量和协方差矩阵。

1. 若将数据投影到直线\omega上(由两个向量的内积得到投影),则两类样本的中心在直线上的投影为\omega^{T}\mu _{0}\omega^{T}\mu _{1},欲使异类样例的投影点尽可能远离,可以让类中心之间的距离尽可能大,即\left \| \omega ^{T}\mu _{0}- \omega ^{T}\mu _{1}\right \|^{2}_{2} 尽可能大;

2. 若将两类样本点都投影到直线上,则两类样本投影之后的协方差分别为\omega ^{T}\sum _{0}\omega\omega ^{T}\sum _{1}\omega,欲使同类样例的投影点尽可能接近,可以让同类样本投影后的协方差尽可能小,即\omega ^{T}\sum _{0}\omega+\omega ^{T}\sum _{1}\omega尽可能小。

综合考虑上述两个优化目标,可以得到:

J=\frac{\left \| \omega ^{T}\mu _{0}- \omega ^{T}\mu _{1}\right \|^{2}_{2}}{\omega ^{T}\sum _{0}\omega +\omega ^{T}\sum _{1}\omega}\newline \\=\frac{\omega ^{T}\left ( \mu _{0}-\mu _{1} \right )\left ( \mu _{0}-\mu _{1} \right )^{T}\omega}{\omega ^{T}\left ( \sum _{0} +\sum _{1} \right )\omega}\newline \\ =\frac{\omega ^{T}S_{b}\omega}{\omega ^{T}S_{\omega }\omega}

这就是LDA欲最大化的目标,即S_{b}S_{\omega }“广义瑞利商”(generalized Rayleigh quotient)。

3.如何求解

得到广义瑞利商,那么如何进一步确定\omega呢?

首先因为J的分子分母都是\omega的二次项,因此\omega在这里可以看做是一个方向向量,其长度无任何意义,最优解只和其方向有关,比如(1,2)和(2,4)是等价的,因此可以在这里假设 \omega ^{T}S_{\omega }\omega=1 以简化问题。由此可以得到一个有约束的最优化问题:

 对于有约束的最优化问题,采用拉格朗日乘子法:

 注意到 S_{b }\omega=\left ( \mu _{0}- \mu _{1}\right )\left ( \mu _{0}- \mu _{1}\right )^{T}\omega, 后两项乘积为标量,因此 S_{b }\omega 的方向只和\left ( \mu _{0}- \mu _{1}\right )相关,不妨设(\lambda可设定为任意值):

S_{b }\omega=\lambda \left ( \mu _{0}- \mu _{1}\right )

由此代入原式子可得:

\omega=S_{\omega }^{-1} \left ( \mu _{0}- \mu _{1}\right )

 4.多分类任务

假定存在N个类,且第i类示例数为mi,先介绍三个概念:

全局散度矩阵:可以大致理解为所有点的协方差矩阵,即所有点与总中心点的差异。

 类内散度矩阵(重定义):可以大致理解为每个类关于自己中心点的协方差矩阵,即每个类的点和这个类中心点的差异之和,该值越小越好。

 类间散度矩阵(重定义):可以大致理解为每个类的中心点和总中心点的协方差矩阵,即每个类中心点与总中心点的差异之和,该值越大越好。

 多分类LDA有多种实现方法,这里不多赘述。

 


五、多分类学习

这一节主要介绍如何利用二分类学习器来解决多分类问题。多分类学习的基本思路简单概括就是“拆解法”,即将多分类任务拆为若干个二分类任务求解。

最经典的拆分策略有三种(前方大量颜文字表情包出没doge):“一对一”(One vs One,简称OvO)、“一对其余”(One vs Rest,简称OvR)、“多对多”(Many vs Many,简称MvM)。

1.OvO

OvO是将给定数据集中的N个类别两两配对,从而产生 \frac{N\times \left ( N-1 \right )}{2} 个二分类任务。在测试阶段,新样本将同时提交给所有分类器,于是我们将得到 \frac{N\times \left ( N-1 \right )}{2} 个分类结果,最终结果通过投票产生。

2.OvR

OvR则是每次将一个类的样例作为正例,所有其他类的样例作为反例来训练N个分类器。在测试时若仅有一个分类器预测为正例,则对应的类别标记为最终结果;若有多个分类器预测为正例,则考虑分类器的预测置信度,选择置信度最大的类别作为最终结果。

 OvO和OvR的简要比较

OvR只需要N个分类器,但OvO需要 \frac{N\times \left ( N-1 \right )}{2} 个分类器,因此OvO的存储开销和测试时间比OvR更大;

但是OvR每次测试需要使用全部训练用例,而OvO每个分类器只需要使用两个类的样例,因此在类别很多时,OvO的训练时间比OvR更小。

3.MvM

MvM是每次将若干个类作为反例,若干个其它类作为正例,MvM常用“纠错输出码”(Error Correcting Output Codes,简称ECOC)来进行正反类的构造。

ECOC的主要工作过程为:

  1. 编码:对N个类别作M次划分,每次划分将一部分类作为正例,一部分作为反例,这样一共产生M个训练集,可以训练出M个分类器;
  2. 解码:M个分类器分别对测试用例进行预测,这些预测标记组成一个编码,将这个编码与各个类别各自的编码进行比较,返回其中距离最小的类别作为最终预测结果(可使用海明距离或者欧氏距离)。

海明距离: 是指在信息编码中,两个合法代码对应位上编码不同的位数,又称码距。

如100101和011100的海明距离为4(第1,2,3,6位编码不同)。

 例如在图a中,测试用例编码为(-1,-1,+1,-1,+1),和C3的编码海明距离是最短的,因此可以得到预测结果为C3.

在测试阶段,ECOC编码对分类器的错误有一定的容忍和修正能力,一个分类器发生预测错误,但基于这个错误编码一般来说还是可以产生正确的结果。对同一个分类任务,ECOC编码越长,纠错能力越好,但也意味着所需的训练分类器越多,开销越大。

 


六、类别不平衡问题

类别不平衡(class-imbalance)就是指分类任务中不同类别的训练样例数目差别很大的情况,例如有998个正例,只有2个反例。

在对数几率回归中,我们介绍了几率的概念,它反映了正例可能性和反例可能性的比值,阈值设置为0.5正好就表明分类器认为真实正、反例可能性相同,即分类器决策规则为:

\frac{y}{1-y}>1

然而当训练集中正例和反例的数量不同时,令m^{+}为正例数目, m^{-}为反例数目,则观测几率\frac{m^{+}}{m^{-}},假设训练集是真实样本总体的无偏采样,因此观测几率就代表了真实几率。因此,只要分类器的预测几率高于观测几率就被判定为正例,即:

\frac{y}{1-y}>\frac{m^{+}}{m^{-}}

 基于此对预测值进行调整,就是类别不平衡学习的一个基本策略--“再缩放”(rescaling),即:

\frac{y{}'}{1-y{}'}=\frac{y}{1-y}\times \frac{m^{-}}{m^{+}}

如此,经过再缩放,几率大于1时可判定其为正例样本。

再缩放的思想简单,但实际操作并不简单,因为往往“训练集是样本总体的无偏估计”这个假设并不成立,现有技术大体有三类做法:

1.“欠采样”(undersampling,亦称下采样):去除一些反例(正例)使得正、反例数目相等;

2.“过采样”(oversampling,亦称上采样):采用数据增强等方法增加一些正例(反例) 使得正、反例数目接近;

3.“阈值移动”(threshold-moving):即再缩放的方法。

 


总结 

本章最重要的还是对数几率回归(逻辑回归),其借用线性回归模型实现分类任务的思想非常重要。另外,如果本章很多公式仍然不太清楚,可以放一放不必深究,先搞清楚是怎么做的,毕竟实际在用的时候直接调用库函数就好了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值