机器学习——线性模型

一、线性模型的基本形式
给定由d个属性描述的示例X=(X1;X2;X3……;Xd),其中Xi是X的X在第i个属性上的取值,线性模型(Liner model)试图学得一个通过属性的线性组合来预测的函数,即:
f(x)=W1X1+W2X2+……+WdXd+b
二、线性回归——LR
线性回归是一种监督学习下的线性模型,线性回归试图给定数据集中学习一个线性模型来较好的预测输出(可视为:新来一个不属于D的数据,我们只知道他的X,要求预测Y,D如下表示:)
首先我们还是给定数据集的严格表示:
机器学习——线性模型_第1张图片
即是线性模型,那么我们容易给出目标函数:
这里写图片描述
用向量的方式来表示目标函数,其中目标函数产生的结果即是我们的输出:
这里写图片描述
为了便于后文分析,我们将d归并到w中:
机器学习——线性模型_第2张图片
现在,输入、目标函数、输出函数都有了。那么,我们要想很好的去预测y,那么我们首先应该在D上f(x)要能够表现的比较满意,即当D中任意一个(xi,yi)将xi代入f(x),最后得出的f(xi)约等于yi,当然某些情况除外,比如离群点,这些点可能本身受噪声影响太大,或者本身就是个错误的数据,那么我们要衡量f(xi)是否约等于yi,我们可以定义f(xi)与yi之间的均方误差,这种误差非常直观,它实际上也可以看成是欧几里得空间的距离计算。
这里写图片描述
上述分析师从直观上的结果,我们必须要用代数的方式来表示f(xi)与yi之间的进阶程度;这实际上是对1.1 的一个优化问题。即寻找一组(w,b)使得1.1式的值足够小,使用矩阵对1.1式进行表达:
这里写图片描述
根据线性方程组有解的条件,由于x、y是任意的,因此我们无法判断方程是否有解。那么,我们就需要分以下的情况进行讨论:
(1) y=W^T*X满足有解条件,即R(W^T* X)=R(W^T*X|y),此时,可以直接解除W。
(2) y=W^T*X无解,但肯定存在最小二乘解:
这里写图片描述
此时,我们学到的模型为:
这里写图片描述
三、对数几率回归
我们都知道,线性回归是利用线性模型进行回归学习,最终结果是找到一组合适的数值,使代价函数的值最小,可是对于分类任务该如何解决呢?其实,也是希望学习到的也是一组满足这种条件的数值。
对数几率回归,虽然名字是“回归”但是他是一种分类学习方法,这种方法有很多优点,例如:它是直接对分类可能性进行建模,无需事先假设数据分布,这样就避免了假设分布不准确所带来的问题;它不仅预测出“类别”,而是可得到近似概率预测,这对许多需利用概率辅助决策的任务很有用;此外,对率函数是任意阶可导的凸函数,有很好的数学性质,现有的许多数值优化算法都可直接用于求取最优解。

在广义线性模型中,只需要找到一个单调可微函数将分类任务的真实标记y与线性回归模型的预测值联系起来。
考虑二分类任务,其输出标记y属于{0,1},而线性回归模型产生的预测值z=W^T x+b是实值,于是,我们需将实值z转换为0/1值,最理想的是“单位阶跃函数”(unit-step function)
机器学习——线性模型_第3张图片
即若预测值z大于零就判为正例,小于零则判为反例,预测值为临界值则可以任意判别,如下图:
机器学习——线性模型_第4张图片
但是,我们可以看出单位阶跃函数不连续,因此我们需要进一步想办法解决这个问题:
机器学习——线性模型_第5张图片
从“对数几率函数”可以看出,对数几率函数是一种Sigmoid函数(Sigmoid函数即形似S的函数,对于函数是Sigmoid函数最重要的代表),它将z值转化为 一个接近0或者1的y值,并且其输出在z=0附近变化很陡。将对数几率函数作为g-(.)代入下式
这里写图片描述
可得到 式子(1) 如下:
机器学习——线性模型_第6张图片
(式子是在用线性回归模型的预测结果去逼近真实的标记的对数几率,因此,其对应的模型称为“对数几率回归(logistic regression)”)
且上式可变化为 式子(2) :
机器学习——线性模型_第7张图片
若将y视为样本x作为正例的可能性,则1-y是其反例可能性,两者的比值y/(1-y)称为“几率”(odds),反映了x作为正例的相对可能性。对几率取对数则得到“对数几率”(log odds,亦称logit) ln (y/(1-y))
对此,对数几率回归就是用线性回归模型的预测值去逼近真实标记的对数几率。
回归任务是连续型的,为支持分类任务(离散型),采用定义广义线性模型来实现,其中对数几率回归模型就支持分类学习方法。用线性回归模型来构建分类学习器,可以直接对分类可能性进行建模,无需事件假设数据分布,避免了假设分布不准确所带来的问题;不仅能预测出类别,也可以得到近似概率预测,在利用概率辅助决策上很有用。另外,几率函数是任意阶可到的凸函数在数值优化算法上可直接求取最优解。总结来说,三个优点:可对分类直接建模无需事先假设数据分布、可做近似概率预测、可直接求取最优解。机器学习算法,和统计概率的密切关系从这可看出一般,而统计概率本身所用的函数性质也很重要。或者说,机器学习算法的核心在于概率性,也就是说,机器学习的稳定性是基于概率的。
下面我们来看如何确定 式子(1)中的w和b,若将式中的y视为类后验概率估计p(y=1|x),则式(2)可重写为:
这里写图片描述
显然有:
机器学习——线性模型_第8张图片
于是,我们可通过“极大似然法”(maximum likelihood method)来估计w和b,给定数据集这里写图片描述 ,对数回归模型最大化“对数似然”(log-likelihood)
这里写图片描述
即令每个样本属于其真实标记的概率越大越好。为便于讨论,令这里写图片描述
机器学习——线性模型_第9张图片
机器学习——线性模型_第10张图片

四、线性判别分析
线性判别分析(Liner Discriminant Analysis,简称LDA)是一种经典的线性学习方法。
LDA的思想非常朴素:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的这条线上,再根据投影点的位置来确定新的样本的类别。下图给出了一个二维示意图:
机器学习——线性模型_第11张图片
给定数据集这里写图片描述 这里写图片描述类样例的集合、均值变量、协方差矩阵。若将数据投影到直线w上,则两类样本的中心在直线上的投影分别为这里写图片描述 ;若将所有样本点都投影到直线上,则两类样本的协方差分别为这里写图片描述。由于直线是以为空间,因此这里写图片描述
机器学习——线性模型_第12张图片
机器学习——线性模型_第13张图片
机器学习——线性模型_第14张图片

五、多分类学习
我们在面对多分类学习任务时,更多时候基于二分类学习方法延伸来解决。这里顺便说下多分类任务和多标记任务的区别,多分类任务是一个样本只属于一个分类但有多个选择;多标记任务是一个样本可以属于多个分类可以一个选择可以多个选择。多标记任务不是多分类任务,如一幅画像可以标注为“蓝天”、“白云”、“自然”等。现在来说是多分类学习如何通过二分类学习方法实现。
不失一般性,考虑N个类别C1,C2,……Cn,多分类学习的基本思路是拆解法,将多分类任务拆分成若干个二分类任务求解。具体来说,先对问题进行拆分,然后为拆分的每个二分类任务训练一个分类器;在测试时,对这些分类器的预测结果进行集成以获得最终的多分类结果。这里的关键是如何对多分类任务进行拆分,以及如何对多个分类器进行集成。
最经典的拆分策略有三种:“一对一”(One vs. One ,OvO),“一对其余”(One vs. Rest,简称 OvR),“多对多”(Mang vs. Many ,简称MvM)。
下面进行详细介绍这三种策略:
首先,给定数据集这里写图片描述
(1)OvO策略
将这N个类别两两配对,从而产生N(N-1)/2个二分类任务,例如OvO将为区分类别为Ci和Cj训练一个分类器,该分类器会把数据集D 中 的Ci类设为整理,Cj类设为反例。测试阶段,新样本提交给所有的分类器去预测,得到N(N-1)/2个结果,一般选择结果被预测最多的类别作为最终结果。
(2) OvR策略
每次把一个类别作为正例,其他类别作为反例,训练N个分类器。测试时,若仅有一个分类器预测为正类,则对应的类被标记为最终分类结果;若有多个分类器预测为正类,则通常考虑各分类器的预测置信度,选择置信度最大的类别标记作为分类结果。
通过对前两个比较发现,OvR只需要训练N个分类器,而OvO需要训练N(N-1)/2个分类器,后者存储开销和时间开销都比较大;不过在训练时,前者每个分类器均使用全部样例,而后者每个分类器仅用到两个类别的样例。在类别较多时,后者的开销比较小,两者的预测性能,取决于具体的数据分布,多数情形下差不多。
(3) MvM策略
该策略是每次将若干类作为正类,若干其他类作为反类,显然,OvO和OvR都是MvM的特例。该策略正反例的构造需要严格设计,常用的技术是纠错输出码(Error Correcting Output Codes,ECOC)。ECOC引入编码思想对类别进行拆分,支持在解码过程中的容错性,主要工作过程分两步:
i) 编码:将N个类别做M次划分,每次划分将一部分类别作为正类,一部分类别作为反类,从而形成一个二分类训练集;这样一共产生M个训练集,可训练处M个分类器。
ii) 解码:M个分类器分别对测试样本进行预测,这样预测标记组成一个编码,将这个预测编码与每个类别各自的编码进行比较,返回其中一个距离最小的类最为最终预测结果。

类别划分通过编码矩阵(coding matrix)指定。编码矩阵有二元码和三元码两类,前者将每个类别分别指定为正类和反类,后者在正、反类之外,还可以指定停用类(用0表示)。在解码阶段,各分类器的预测结果联合起来形成了测试示例的编码,将该预测编码和各类所对应的编码进行比较,将距离最小的编码所对应的类别作为预测结果。比较有海明距离和欧式距离两种计算方法。
二元码如下表,C3无论是海明距离还是欧式距离都是最小,所以作为最终标记结果。

纠错输出码的意义在于,ECOC编码对分类器的错误有一定的容忍和修正能力。比如在某个分类器上预测错误,但整体编码的距离计算仍能产生正确结果(即还是最短距离)。自然,对同一个学习任务来说,ECOC编码越长,纠错能力越强,当然是牺牲性能了,因为编码越长,要训练的分类器就越多。对同等长度的编码来说,理论上,任意两个类别之间的编码距离越远,则纠错能力越强。在码长较小时,可根据这个原则计算出理论最优编码,然而码长稍大一些就难以有效地确定最优编码

机器学习——线性模型_第15张图片

在理论和实践之间,一个理论纠错性质很好,但导致二分类问题较难的编码,与另一个理论纠错性质差一些,但导致的二分类问题较简单的编码,最终产生的模型性能强弱不定。

六、类别不平衡问题
所谓类别不平衡问题是指分类任务中不同类别的训练样例数差别很大,导致训练出的学习器失真。怎么说呢?一般情况,假设分类学习任务中不同类别的样例数时相对平衡,数目相当的,如果有所倾斜,而且比例很大,那就失去意义了。如果假定样例中正例很少、反例很多,在通过拆分法解决多分类问题时,即使原始问题中不同类别的训练样例数目相当,在使用OVR、MVM策略后产生的二分类任务仍可能出现类别不平衡现象。
对线性分类器y=w^T*x+b来说,对新样本x进行分类时,将y值和一个阈值进行比较,分类器的决策规则是:若y/(1-y)>1,则预测为正例。当训练集中正、反样例数目不等时,令m+代表正例数目、m-代表反例数目,则观测几率是m+/m-,通常假设训练集是真实样本总体的无偏采样,因此观测几率就代表了真实几率,于是只要分类器的预测几率高于观测几率就可判定为正例,即:y/(1-y)> m+/m-,则预测为正例。如果从根源上可以做到无偏采样,那就没有类别不平衡问题,可惜一般情况下都无法实现,于是只好找到类别不平衡的解决方法。
再缩放的思想虽然简单,但实际操作并不平凡,主要是因为“训练集是真是样本总体的无偏采样”这个假设往往并不成立。也就是说,我们未必能有效的基于训练集观测几率来推断真实几率。有三类做法来改正:1)欠采样,去除一些反例,使得正反例数目相当;2)过采样,增加一些正例,使得正反例数相当;3)基于原始训练集学习,但用训练好的学习器进行预测时,对输出结果进行阈值移动(threshold-moving)。
欠采样少了训练样例,过采样多了训练样例,二者开销自然是后者大。另外过采样,如果是对原始训练集重复采集正例,则会出现严重的过拟合,可通过训练集里的正例进行插值来产生额外的正例,代表性算法是SMOTE,欠采样法同样面临问题,如果随机丢失反例,可能失去信息,可利用集成学习机制,将反例划分为若干个集合供不同学习器使用,对单个学习来说是欠采样,但就全局看来却不会丢失重要信息。

参考:《机器学习》 周志华著
https://blog.csdn.net/zk_j1994/article/details/53580676

你可能感兴趣的:(机器学习)