第三章 线性模型
3.1 基本形式
线性模型(Linear Model):通过属性的线性组合来进行预测的函数,许多更为强大的非线性模型(Nonlinear Model)可在线性模型基础上引入层级结构(Hierarchical Structure)或高级映射(Advanced Mapping)而得:
一般写成以下形式,在w和b学得之后模型就得以确定,w的存在直观表达各属性在预测中的重要性,使模型具有很好的可解释性(Comprehensibility)
3.2 线性回归
线性回归试图学得
,使得
衡量f(x)与y之间的差别最常用的性能度量是均方误差(Mean-Square Error,MSE),又称平方损失(Square Loss)
给予均方误差最小化来进行模型求解的方法称为最小二乘法(Least Square Method,LSM),即试图找到一条直线使所有样本到直线的欧式距离之和最小。该方法是回归任务中最常用的度量方法,我们试图让均方误差最小化来达到模型的性能最优化。
以上都是基于一个属性分析的,那么面对多个属性的多元问题,涉及到多元线性回归
矩阵表示
则最优解w如下(当XTX为满秩矩阵或正定矩阵(即可逆)时,令其为0,解得:)
正则化(Regularization):但现实中我们经常会遇到不是满秩矩阵的不理想情况,导致X列数多于行数,XTX不满秩,此时会解出多个w解,多个解会因为学习算法的归纳偏好造成不同输出,面对这种情况,常见的做法是引入正则化
广义线性模型(Generalized Linear Model):有时原始线性回归并不能满足需求,比如y值并不是线性变化,而是在指数尺度上变化,这时我们可以采用线性模型来逼近y的衍生物比如lny(这就是对数线性回归(Log-linear Regression))
一般,考虑所有y的衍生物情形,得到广义线性模型,其中g称为联系函数(Link Function):
考虑到二分类任务,按照上述思路我们需要把预测值转换成01值,此时最理想的是单位阶跃函数(Unit-step Function)但单位阶跃函数不连续不能过g函数,我们希望找出替代品,并希望它单调可微,此时对数几率函数(Logistic Function)是常用的选择。
3.3 线性回归
上一小节讨论的是回归,但若要做的是分类问题,根据广义线性模型中,只需找一个单调可微函数将分类任务标记y(比如二分类问题是y在{0,1}中取)与回归模型的预测值联系起来,将预测值转化成离散值就行(也是从g函数处来动手脚),这就是几率回归研究的问题。
-
- 对数几率函数是一种Sigmoid函数,将z值转化一个接近0或者1的y值,一般的大于0.5为正类。适合作为g函数。
- “几率”:y/1-y中y为正例的可能性,1-y为反例可能性,两者比值称为几率,几率取对数为对数几率(Log Odds,称为logit)。
- 对数几率回归(Logistic Regression,logit Regression):用线性回归模型的预测结果去逼近真实标记的对数几率,因此成为对数几率回归,又称逻辑回归。
3.4 线性判别分析
线性判别分析(Linear Discriminant Analysis,LDA):经典线性学习方法,在二分类问题上最早由Fisher提出,亦成为Fisher判别分析。基本思想是:将训练样本投影到一条直线上,使得同类的样例尽可能近,不同类的样例尽可能远。
性能度量:如何度量分类效果?
想让同类样本点的投影点尽可能接近,不同类样本点投影之间尽可能远,即:让各类的协方差之和尽可能小,不用类之间中心的距离尽可能大。基于这样的考虑,LDA定义了两个散度矩阵。类内散度矩阵(Within-class Scatter Matrix),类间散度矩阵(Between-class Scatter Matrix)
因此得到了LDA最大化的目标(度量方法):广义瑞利商(Generalized Rayleigh Quotient),广义瑞利商越大,越优:
- 现在变成了优化问题,如何求得w的最优解?通过拉格朗日乘子法,原式等价:
- lambda是拉格朗日乘子,因为Sbw的方向恒为mu0-mu1,不妨设:
- 代入原式等价式得:
- 若将w看做一个投影矩阵,类似PCA的思想,则LDA可将样本投影到N-1维空间(N为类簇数),投影的过程使用了类别信息(标记信息),因此LDA也常被视为一种经典的监督降维技术。
3.5 多分类学习
现实中我们经常遇到不只两个类别的分类问题,即多分类问题,在这种情形下,我们常常运用“拆分”的策略,通过多个二分类学习器来解决多分类问题,即将多分类问题拆解为多个二分类问题,训练出多个二分类学习器,最后将多个分类结果进行集成得出结论。最为经典的拆分策略有三种:“一对一”(OvO)、“一对其余”(OvR)和“多对多”(MvM)
- OvO:给定数据集D,假定其中有N个真实类别,将这N个类别进行两两配对(一个正类/一个反类),从而产生N(N-1)/2个二分类学习器,在测试阶段,将新样本放入所有的二分类学习器中测试,得出N(N-1)个结果,最终通过投票产生最终的分类结果。
- OvM:给定数据集D,假定其中有N个真实类别,每次取出一个类作为正类,剩余的所有类别作为一个新的反类,从而产生N个二分类学习器,在测试阶段,得出N个结果,若仅有一个学习器预测为正类,则对应的类标作为最终分类结果。
- MvM:给定数据集D,假定其中有N个真实类别,每次取若干个类作为正类,若干个类作为反类(通过ECOC码给出,编码),若进行了M次划分,则生成了M个二分类学习器,在测试阶段(解码),得出M个结果组成一个新的码,最终通过计算海明/欧式距离选择距离最小的类别作为最终分类结果。
3.6 类别不平衡问题
- 类别不平衡问题(Class-Imbalance):指分类任务中不同类别的训练样例数目差别很大的情况。
- 解决类不平衡学习的策略:
- 再缩放(Rescaling):基于原数据集新星学习,对预测值进行缩放。因为类平衡情况下,拿对数几率函数来说,我们一般在对新样本分类时拿预测出的y值与一个阈值比较(usually 0.5)大于为正例小于为反例(y>0.5即y/1-y>1,y/1-y就相当于正例可能性比上反例可能性)。再缩放的主要思想就是既然类别不平衡了那么我们将1改成m+/m-即正类数/负类数,即
-
- 劣势:再缩放是在假设“训练集是真实样本的总体的无偏采样”,但往往不成立
- 再缩放是代价敏感学习的基础(Cost-sensitive Learning):代价敏感学习将正负类数量比替换成正负类分错代价比。研究的最多的是误分类代价。
- 基于劣势,有下三类做法:
- 欠采样(Undersampling):去除一些反例使正反例数目接近再学习,代表性算法是EasyEnsemble。
- 过采样(Oversampling):增加一些正例使正反数目接近再学习,一般用插值造例子。代表性算法是SMOTE。
- 阈值移动(Threshold-moving):直接基于原始训练集学习,但在用训练好分类器进行预测时,将再缩放公式嵌入到决策过程中。
参考
https://zhuanlan.zhihu.com/p/180468508