西瓜书学习笔记——线性模型
一、基本形式
对于一个物体,线性模型通过学得各个属性的线性组合来对其进行预测:f(X) = w1*x1 + w2*x2 + …+wd*xd + b
上式可以用向量形式写成 f(x) = ωTx + b
当我们学习得到w和b之后便可以将模型确定下来。
线性模型的应用范围比较有限,但我们可以在这几个基础上通过层级结构或高维映射得到功能更为强大的非线性模型。
在线性模型中,w直观表达了各属性在预测中的重要性,因此线性模型有很好的可解释性(comprehensibility) 。
二、线性回归
在这里我们用均方误差来进行性能度量,直接让均方误差最小化便可求得结果。即:
我们求解w和b让E实现最小值,这个过程可以通过对w和b求导来实现:
让两者分别为0便可以求得w和b的最优解:
对于有多个属性的情况,我们可以用多元线性回归来实现问题的求解,将数据集用一个矩阵X来进行表示:
数据集的标记我们也可以用向量形式y 来表示,从而可以得到和单属性相似的结果:
令上式 = 0。当XTX是满秩矩阵时,有
否则,利用最小二乘法,求解方程组
此时可能会解出多个。选择哪一个解输出,将由学习算法的归纳偏好决定,常见的做法是引入正则化(regularization)项。
在上文部分,我们实现了单属性和多属性的线性回归推导,但在我们的实际生活中,线性回归的应用场景并不是那么常见,我们可以通过加一层映射来实现对y“衍生物”的逼近。
如x到y的实际映射为指数函数,我们令y ‘ = lny,则有:
上式形式上仍然是线性回归,但是在实质上已经是在求解输入空间到输出空间的非线性函数映射。这里的对数函数起到了将线性回归模型的预测值和真实标记联系起来的作用。
更一般的,我们通过引入单调可微函数g(`)得到广义线性模型:y=g-1(wTx + b)
其中g称为**“联系函数”(link function)**。
三、对数几率回归
我们通过一个单调可微函数将分类任务的真实标记y与线性回归模型的预测值联系起来。
用于分类任务,将线性回归模型产生的预测值z转化为0/1值,最理想的是单位阶跃函数:
但单位阶跃函数不连续,我们希望找到一个单调可微的替代品,即对数几率函数(sigmoid函数),它将z值转化为一个接近0或1的y值,并使其在z=0处很陡,这里,sigmoid函数即为上文提到的g(·)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ObTuBxWb-1626624705586)(TyporaNote/Markdown图片/20.png)]
将对数几率函数作为g-1(x) 代入y=g-1(wTx + b),即得到
经过变换得到
将y视为样本x作为正例的可能性,则1-y是其反例的可能性,两者的比值称为“几率”(odds),反映了x作为正例的相对可能性。对几率取对数,则得到“对数几率”(log odds, 亦称logit)。因此,上式实际上是在用线性回归模型的预测结果去逼近真实标记的对数几率,其对应模型称为“对数几率回归”(logistic regression, 亦称logit regression)。虽然名字是回归,实际则是一种分类学习方法。
对数几率回归的优点在于:可以直接对分类可能性建模,无需事先假设数据分布; 不仅可以预测出类别,还可以预测近似概率;对率函数任意阶可导,有很好的数学性质。
在对数几率回归模型中,若将y视为类后验概率估计p(y=1|x),则有
于是,可以用“极大似然法”(maximum likelihood method)估计w和b。
四、线性判别分析
**“线性判别分析”(Linear Discriminant Analysis, LDA)**在二分问题上最早由[Fisher, 1936]提出,因此亦称为“Fisher判别分析”。
**LDA的思想是:**设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异样例投影点尽可能远离;对新样本进行分类时,将其投影到直线上,再根据投影点的位置来确定新样本的分类。
给定数据集,令Xi, μi, ∑i分别表示第i类示例的集合、均值向量、协方差矩阵。将数据投影到直线ω上。则欲使同类样例投影点尽可能接近,协方差尽可能小
异类样例尽可能远:中心之间距离尽可能大
同时考虑而者,则得到欲最大化目标
定义“类内散度矩阵”(within-class scatter matrix)
以及“类间散度矩阵”(between-class scatter matrix)
于是
此即LDA欲最大化的目标,即Sω与Sb的“广义瑞利商”(generalized Rayleigh quotient)。
可以用拉格朗日乘子法来确定ω,解得。
五、多分类学习
现实中常遇到多分类学习任务。基于一些基本策略,可以利用二分类学习器来解决多分类问题。不失一般性,考虑N个类别C1, C2, …, CN,一个基本思路是“拆解法”,即将多分类任务拆解为多个二分类任务。
最经典的拆分策略有三种:“一对一”(One vs. One, OvO),“一对其余”(One vs. Rest, OvR),以及**“多对多”(Many vs. Many, MvM)**。
OvO:将N个类别两两匹配,在训练阶段为每一组配对训练一个分类器,测试阶段则将新样本同时提交给所有分类器。最终通过投票产生被预测得最多的类别作为最终分类结果。
OvR:将每个样例作为正例,其余样例作为反例来训练N个分类器。测试阶段,若仅有一个分类器预测为正类,则对应类别标记作为最终结果;若有多个分类器预测为正类,则考虑各分类器的预测置信度,选择置信度大的标记作为分类结果。
比较:OvO的存储开销及测试时间开销高于OvR;但当类别很多时,OvO的训练时间开销比OvR小。预测性能则取决于数据分布,多数情形下两者差不多。
MvM:每次将若干个类作为正类,若干个其它类作为反类。值得注意的是,正反例的构造需要特殊的设计,不可随意选取。
一种常用的MvM技术是**“纠错输出码”(Error Correcting Output Code, ECOC)**。ECOC工作步骤分为两步:
- 编码:对N个类别做M次划分,每次划分将一部分归为正类,另一部分归为反类,得到M个训练集。
- 解码:M个分类器对分类样本进行预测,预测标记组成一个编码。将此编码与每个类别各自的编码比较,返回其中距离最小的类别作为最终预测结果。
类别划分通过“编码矩阵”(coding matrix)指定。常见的编码矩阵的形式主要有:
- 二元码:将每个类别分别指定为正类和反类
- 三元码:在正反类之外,还可以指定“停用类”
从图中可以看出,在测试阶段,ECOOC编码对分类器的错误有一定的容忍能力,这也是其名“纠错输出码”的来由。
一般来说,对同一个学习任务,ECOOC编码越长,纠错能力越强,代价是分类器增多带来的计算、存储开销;以及对于有限类别,组合数有限,编码太长也会失去意义。另一方面,对于长度相同的编码,距离越远,纠错能力越强。编码较小时可以此原则确定理论最优编码;而当编码过长时,确定最优编码则成为NP-难问题。不过,并非编码的理论性质越好,分类器性能就越好。比如:一个理论性质很好、但导致的二分类问题较难的编码,与另一个理论性质稍差、但导致的而分类问题比较简单的编码相比,最终产生的模型孰强孰弱很难说。
六、类别不平衡问题
**类别不平衡(class-imbalance)**是指分类任务中不同类别的训练样例数差别很大的情况。例如,在拆分法解决多分类学习任务时,即便原始问题的不同类别的训练数据相当,在产生的而分类任务中仍然可能出现类别不平衡现象。因此有必要了解对类别不平衡的处理办法。
在线性分类器中,一个基本策略是**“再缩放”(rescaling),也称“再平衡”(rebalance)**。其思想是:
- 如果训练集中的正反例的数目相同,那么阈值应该是0.5,大于0.5的是正例,小于0.5的是反例。
- 如果训练集中正、反例的数目不同时,令m+表示正例数,m-表示反例数,则观测几率为m+ / m-。假设训练集是真实样本总体的无偏采样,则观测几率就代表了真实几率。因此,当y / (1 - y) > m+ / m-时,预测为正例。即令,再将阈值设为1,当预测值大于1时预测为正例。
然而在现实中,“训练集是真实样本总体的无偏采样”的假设往往并不成立,因此未必能有效地基于训练集的观测几率推断真实几率。现有技术有三类解决办法:
- 欠采样(undersampling):去除一些反例使得正、反例数目相近,再进行学习。
- 过采样(oversampling):增加一些正例使得正、反例数目相近,再进行学习。需要考虑过拟合问题。代表性算法是SMOTE,通过对训练集里的正例进行插值来产生额外的正例。
- 阈值移动(threshold-moving):基于原始训练集学习,但在预测时将再缩放策略嵌入到决策过程中。
七、参考链接
机器学习西瓜书笔记(三)-----------线性模型_超超人不会飞的博客-CSDN博客