谈及线性模型,其实我们很早就已经与它打过交道,还记得高中数学必修3课本中那个顽皮的“最小二乘法”吗?这就是线性模型的经典算法之一:根据给定的(x,y)点对,求出一条与这些点拟合效果最好的直线y=ax+b,之前我们利用下面的公式便可以计算出拟合直线的系数a,b,从而对于一个新的x,可以预测它所对应的y值。
前面我们提到:在机器学习的术语中,当预测值为连续值时,称为“回归问题”,用于预测;离散值时为“分类问题”,用于分类。本篇先从线性回归任务开始,接着讨论分类和多分类问题。
线性模型 (linear model)试图学得一个通过属性的线性组合来进行预测的函数,
即
其中 权重ω=( ω1;ω2;’" ;ωd), 属性x = (x1; x2;…; xd) , ω 和 b 学得之后,模型就得以确定.(和线性代数中的矩阵方程类似)。
线性回归问题就是试图学到一个线性模型尽可能准确地预测新样本的输出值,例如:通过历年的人口数据预测2017年人口数量。在这类问题中,往往我们会先得到一系列的有标记数据,例如:2000–>13亿…2016–>15亿,这时输入的属性只有一个,即年份;也有输入多属性的情形,假设我们预测一个人的收入,这时输入的属性值就不止一个了,例如:(学历,年龄,性别,颜值,身高,体重)–>15k。
有时这些输入的属性值并不能直接被我们的学习模型所用,需要进行相应的处理(连续值的属性,离散值的属性),生活中大部分是离散值的属性,
对于连续值的属性:一般都可以被学习器所用,有时会根据具体的情形作相应的预处理,例如:归一化等;
对于离散值的属性:可作下面的处理,
1、若属性值之间存在“序关系”,则可以将其转化为连续值,例如:身高属性分为“高”“中等”“矮”,可转化为数值:{1, 0.5, 0}。
2、若属性值之间不存在“序关系”,则通常将其转化为向量的形式,例如:性别属性分为“男”“女”,可转化为二维向量:{(1,0),(0,1)}。
(1)当输入属性只有一个的时候,就是最简单的情形,也就是我们高中时最熟悉的“最小二乘法”(Euclidean distance),(和求一次函数类似) ,首先计算出每个样本预测值与真实值之间的误差并求和,通过最小化均方误差MSE,使用求偏导等于零的方法计算出拟合直线y=wx+b的两个参数w和b,计算过程如下图所示(求最小均方误差时w和b的值):
(2)当输入属性有多个的时候,例如对于一个样本有d个属性{(x1,x2…xd),y},则y=wx+b需要写成,上升到矩阵求解:
通常对于多元问题,常常使用矩阵的形式来表示数据。在本问题中,将具有m个样本的数据集表示成矩阵X,将系数w与b合并成一个列向量,这样每个样本的预测值以及所有样本的均方误差最小化就可以写成下面的形式(和上述一个属性的类似,x有d+1个属性,一共有m个样本):
同样地,我们使用最小二乘法对w和b进行估计(同样求最小均方误差下的w和b值),令均方误差的求导等于0,需要注意的是,当一个矩阵的行列式不等于0时,我们才可能对其求逆,因此对于下式,我们需要考虑矩阵(X的转置*X)的行列式是否为0,若不为0,则可以求出其解,若为0,则需要使用其它的方法进行计算,书中提到了引入正则化,此处不进行深入。
另一方面,有时像上面这种原始的线性回归可能并不能满足需求,例如:y值并不是线性变化,而是在指数尺度上变化。 这时我们可以采用线性模型来逼近y的衍生物,例如 lny,这时衍生的线性模型如下所示,实际上就是相当于将指数曲线投影在一条直线上,如下图所示(本来人家就是好好的线性关系,结果变成了广义线性模型,如 lny,这是为了特殊的分析需求):
更一般地,考虑所有y的衍生物的情形,就得到了 “广义的线性模型” (generalized linear model),其中,g(*)称为联系函数(link function)。
对数线性回归是广义线性模型在g(.) = ln(.) 时的特例。
回归就是通过输入的属性值得到一个预测值,利用上述广义线性模型的特征,是否可以通过一个联系函数, 将预测值转化为离散值从而进行分类呢?线性几率回归正是研究这样的问题。 对数几率引入了一个对数几率函数(logistic function),将预测值投影到0-1之间,从而将线性回归问题转化为二分类问题。
理想情况是使用阶跃函数(但是不连续):
实际情况使用对数几率函数(连续且和阶跃函数类似):
其实这就是一种广义线性回归模型,这样就确定了g(*),下图中进行反函数变换后得到标准的广义线性模型。
若将y看做样本为正例的概率,(1-y)看做样本为反例的概率,则上式实际上使用线性回归模型的预测结果器逼近真实标记的对数几率。因此这个模型称为“对数几率回归”(logistic regression),也有一些书籍称之为“逻辑回归”。
以下称为:“对数几率”
下面使用最大似然估计的方法来计算出w和b两个参数的取值,下面只列出求解的思路,不列出具体的计算过程。
最大似然准则就是所有情况概率相乘,使概率乘积最大时的估计值。
嗨~,求解就是这个大概思路,具体步骤的话,如果以后研究到了再详细学习。
线性判别分析(Linear Discriminant Analysis,简称LDA),其基本思想是:将训练样本投影到一条直线上,使得同类的样例尽可能近,不同类的样例尽可能远(高内聚,低耦合)。如图所示:
想让同类样本点的投影点尽可能接近,不同类样本点投影之间尽可能远,即:让各类的协方差之和尽可能小,不同类之间中心的距离尽可能大。
基于这样的考虑,LDA定义了两个散度矩阵。
以上证明能帮助更好地理解目标函数的形式,自己看来,
wT向量=在w向量的投影点
wT向量模平方*w=在w向量的投影点相关计算
分类问题转化为最优化求解w的问题,当求解出w后,对新的样本进行分类时,只需将该样本点投影到这条直线上,根据与各个类别的中心值进行比较,从而判定出新样本与哪个类别距离最近。
求解w的方法如下所示,使用的方法为拉格朗日乘子法,从图中可以看出w是一个向量,只需要确定向量方向即可确定一条直线的位置。
其中, A s.t. B 表示在条件B成立时,计算A。
哈哈哈!我怎么感觉从分类的那个图上直接就能确定方向是μ0-μ1。
据说LDA这种方法现在不怎么用了,但是非常经典。
现实中我们经常遇到不只两个类别的分类问题,即多分类问题,在这种情形下,我们常常运用“拆分”的策略,通过多个二分类学习器来解决多分类问题,即将多分类问题拆解为多个二分类问题,训练出多个二分类学习器,最后将多个分类结果进行集成得出结论。最为经典的拆分策略有三种:“一对一”(OvO)、“一对其余”(OvR)和“多对多”(MvM),核心思想与示意图如下所示。
知识点:
海明距离:序列相同位置上数据不同的个数。
如+1 -1 +1和+1 +1 -1,海明距离是2。
欧氏距离:空间点距离。
如v0=(+1,-1,-1) ,v1=(+1,+1,-1),欧氏距离是sqrt((0)2+(2)2+(0)2)
总结:
OvO和OvR,
OvR 需训练 N 个分类器,每个分类器均使用全部训练样例,
而 OvO 需训练 N(N - 1)/2 个分类器,每个分类器仅用到两个类的样例。
在类别较少时,OvR的存储开销和测试时间开销更小。
在类别较多时,OvO的训练时间开销更小。
MvM,
一般来说,对同一个学习任务, ECOC 编码越长,纠错能力越强。然而,编码越长,意味着所需训练的分类器越多,计算、存储开销都会增大;另一方面,对有限类别数,可能的组合数目是有限的,码长超过一定范围后就失去了意义。
不必找最优编码,因为非最优编码在实践中往往己能产生足够好的分类器。
一个理论纠错牲质很好,但导致的二分类问题较难的编码,与另一个理论纠错性质差一些,但导致的二分类问题较简单的编码,最终产生的模型性能孰强孰弱很难说。
类别不平衡(class-imbanlance)就是指分类问题中不同类别的训练样本相差悬殊的情况,本节假定正类样例较少,反类样例较多.,这个时候我们就需要进行相应的处理来平衡这个问题常见的做法有三种:
按照0.5作为阈值的预测几率:
修正后的预测几率(再缩放):
观测几率:
预测几率(再缩放) > 观测几率 即可认为是正例