线性模型

本章参照周志华《机器学习》第三章编写
从线性模型的基本形式开始,介绍了线性回归,然后讲了使用 logistic function 作为连接函数的对数几率回归;之后讲了线性判别分析(LDA)的基本思想及其数学推导;最后讲了如何用二分类学习器来解决多分类问题(三种经典的划分策略)。

3.1 基本形式

这里我们先看一下线性模型的基本形式。给出一个含有d个属性的样本对象x=(x1;x2;...;xd),其中xi表示每个属性上的取值情况。线性模型(linear model)要做的,就是通过一个属性的组合函数来进行预测。

线性模型简单来说就是我们说的对每个属性寻找合适的权值,最终得出样本估计的模型!

具体公式如下
  
向量形式为

其中, 和学得之后,模型就可以确定。
可以看出线性模型虽然形式简单、易于建模,但这是机器学习的重要基础,很多其他功能更为强大的非线性模型(nonlinear model)课在线性模型的基础上通过引入层级结构或者高维映射而得到。另外,每个代表着每个属性的权重,这使得线性模型有更好的解释性(comprehensibility)。
下面我们看一下几种经典的线性模型。先从回归问题开始,然后看一下分类问题。

3.2 线性回归

正如之前所讲,线性回归就是说通过学习到的线性模型来与猜测新的样本的输出值。一个很直观的例子就是说,我们通过历年的人口数量预测下一年的人口数量。在这类问题中,我们会先得到一系列有标记的数据,例如 ,可以看到这个时候的输入属性只有一个,就是年份;当然也有输入属性有多个的情况,例如预测一个人的收入情况,那输入属性可能有学历,年龄等等。
很多时候这些属性值并不能直接被我们的学习器所用,需要我们进行一下相应的处理。对于连续的属性值,一般都可以被学习器所用,但是有时候需要归一化等处理;而对于离散的属性值,一般要做这样的处理:

  • 如果属性值之间存在“序”关系(理解成为大小关系),则可以将其转化成为连续值,举一个栗子,身高属性为“高”、“中等”、“矮”,可以转化为数值{1, 0.5 ,0}
  • 如果属性值之间不存在“序关系”,转化为向量。性别属性为“男”、“女”,可以转化为二维向量:{(1,0),(0,1)}
3.2.1 输入属性只有一个

这就是我们上面说到的只用年份来预测人口数量的那种问题。
这是最简单的情况,也是我们高中所熟知的“最小二乘法(Euclidean Distance)”。做法是:先计算出每个预测值和真实值之间的误差并且求和,通过最小化MSE,使用求偏导为零的方法计算出拟合直线 y=wx+b,具体的计算过程如下:


线性模型_第1张图片
最小二乘法
3.2.1 输入属性有多个

这时候,就是上面提到过的工资收入的那种问题。
对于一个样本含有d个属性{(x1,x2,...,xd) , y},此时的 变成了
通常对于多元问题,常常使用矩阵的形式表示数据。在本问题中,将具有m个样本的数据集表示成矩阵X,将系数w和b合并成一个列向量,这样每个样本的预测值以及所有样本的MSE最小化就可以写成下面的形式:

线性模型_第2张图片
向量化表示1

下面这个可以看到如果要求w矩阵的对于最小MSE的解,跟前面单变量的最小二乘法里面第一个公式是一样的。只不过写成了矩阵的形式。
线性模型_第3张图片
向量化表示2

到这里我们写出了多输入的矩阵表示,同样,我们用最小二乘法对w和b进行估计,令MSE的求导为0。
由于求解过程中需要对矩阵求逆,所以要考虑矩阵行列式非0/满秩(即可逆)。如果不满足这个条件,需要用其他方法来处理,例如正则化。这里对于这种情况暂时不予讨论。
线性模型_第4张图片
多输入线性模型向量化的求解

至此,我们求得了w阵,完成了整个线性模型的计算。

需要注意的是,有时候像我们采用的原始的线性回归可能并不能满足需求。如果y值不是线性变化,而是在指数尺度上变化,显然我们的线性模型表现就很差。这个时候我们可以用线性模型来逼近y的衍生物,如lny,实际上就相当于将指数曲线投影在一条直线上面,如下图所示:


线性模型_第5张图片
lny的广义线性模型/对数线性回归

更一般地,考虑所有y的衍生物的情形,就得到了“广义的线性模型”(generalized linear model),其中,g(*)称为联系函数(link function)。

3.3 对数几率回归

回归是通过输入的属性值预测得到一个预测值,利用上面说过的广义线性回归模型,通过一个联系函数,将预测问题转化为分类问题,对数几率回归就是解决这样的问题。对数几率引入一个对数几率函数(logistic funciton),将预测值投影到0-1之间,从而将回归问题转化为一个二分类问题。


线性模型_第6张图片
对数几率函数

联系函数

这里具体的推导可以看一下书上写的。
若将y看做样本为正例的概率,(1-y)看做样本为反例的概率,则上式实际上使用线性回归模型的预测结果器逼近真实标记的对数几率。因此这个模型称为“对数几率回归”(logistic regression),也有一些书籍称之为“逻辑回归”。下面使用最大似然估计的方法来计算出w和b两个参数的取值,下面只列出求解的思路,不列出具体的计算过程。


线性模型_第7张图片
最大化似然函数

3.4 线性判别分析

线性判别分析(Linear Discriminant Analysis,LDA)的基本思想是:

  • 样本投影在一条直线上

  • 同类样本尽可能投影距离近

  • 不同类样本尽可能投影距离远

  • 新来的样本看投影来确定属于哪个类别。

    线性模型_第8张图片
    LDA示意图

    线性模型_第9张图片

    下面看一下上面思想的数学表达:
    同类样本点的投影尽可能接近,即同类样例投影点的协方差之和尽可能小,体现在下面两者之和尽可能小

    异类样本投影尽可能远 ,体现在类中心点距离尽可能大。
    尽可能大
    经过化简,定义了两个散度矩阵

  • 类内散度矩阵(within-class scatter matrix)


    线性模型_第10张图片
  • 类间散度矩阵(between-class scatter matrix)


    同时得到了LDA的最大化目标:“广义瑞利商(Generalized Rayleigh Quotient)”

    广义瑞利商中分子表示类间,分母表示类内,所以整个这个商是越大越好。
    到这里,分类问题转化为最优化求解 w 的问题,当求解出 w 后,对新的样本分类时候,只需要将该样本投影到这条直线上,然后与各个类的中心点去比较,从而确定类别。
    下面看怎么解出来 w
    线性模型_第11张图片

    若将w看做一个投影矩阵,类似PCA的思想,则LDA可将样本投影到N-1维空间(N为类簇数),投影的过程使用了类别信息(标记信息),因此LDA也常被视为一种经典的监督降维技术。

上面求解这一部分不懂。暂时先这样。

3.5 多分类学习

实际问题中,分类任务是多类别的。
除了少数能够直接从二分类推广到多分类的方法(如LDA法),其余大多数方法只能应用于二分类问题。所以通常情况下,我们是用 二分类学习器 + solution 来解决多分类问题的,即把多分类问题拆分成为多种二分类问题的组合。
最为经典的拆分方式有三种:“一对一(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个结果组成一个新的码,最终通过计算海明/欧式距离选择距离最小的类别作为最终分类结果。


    线性模型_第12张图片
    OvO & OvR

    线性模型_第13张图片
    MvM

3.6 类别不平衡问题

类别不平衡(class-imbanlance)就是指分类问题中不同类别的训练样本相差悬殊的情况,例如正例有900个,而反例只有100个,这个时候我们就需要进行相应的处理来平衡这个问题。常见的做法有三种:

  1. 在训练样本较多的类别中进行“欠采样”(undersampling),比如从正例中采出100个,常见的算法有:EasyEnsemble。
  2. 在训练样本较少的类别中进行“过采样”(oversampling),例如通过对反例中的数据进行插值,来产生额外的反例,常见的算法有SMOTE。
  3. 直接基于原数据集进行学习,对预测值进行“再缩放”处理。其中再缩放也是代价敏感学习的基础。


你可能感兴趣的:(线性模型)