机器学习(Machine Learning)是一门多学科交叉专业,涵盖概率论知识,统计学知识以及复杂算法知识,使用计算机作为工具并致力于真实实时的模拟人类学习方式, 并将现有内容进行知识结构划分来有效提高学习效率。本专栏将以学习笔记形式对《机器学习》的重点基础知识进行总结整理,欢迎大家一起学习交流! 专栏链接:《机器学习》学习笔记
目录
3.5 纠错输出码(Error Correcting Output Code)
线性模型要做的有两类任务:分类任务、回归任务
分类的核心就是求出一条直线w的参数,使得直线上方和直线下方分别属于两类不同的样本
回归就是用来拟合尽可能多的点的分布的方法,我们可以通过拟合的直线知道一个新样本的相关数值
线性模型:试图学得一个通过属性的线性组合来进行预测的函数,即:
上述公式可简写成向量形式
,简单、基本、可理解性好 w是参数向量,x是属性向量 具体而言,首先对模型w1、w2……wd进行学习,主要通过公式Y=wX确定(列方程组求出w),Y即f(x),X即(x1,x2,……,xd)亦即样本点的d个属性值,第一步也就是训练过程。训练好之后,进入测试过程,通过得知的w1、w2……wd,已知另一个新的样本属性x及可求出其对应的y值。对于分类问题来说,y值趋近于0则属于第1类样本,y趋近于1则属于第2类样本;对于回归问题来讲,通过上述公式求出的是新样本点对应的函数值。
在线性模型的基础上通过引入层级结构或高维映射可得到许多功能更为强大的非线性模型(nonlinear model)。 层级结构:类似f(x)=w(w(wx+b)+b)b……
线性回归(linear regression)试图学得一个线性模型以尽可能地预测实值输出标记。
①若属性值之间存在序关系,可通过连续化将其转换为连续值 如:个子的高中低按有序排列对应{1, 0.5, 0} ②若属性之间不存在序关系,假定属性值有k个,则通常转化为k维向量(One-Hot) 如:瓜类的取值黄瓜,西瓜,冬瓜,三类属性值转化为三维向量 若规定取值(黄瓜,西瓜,冬瓜),那么比如冬瓜,对应位置标1,其余位置标0, 进一步而言,可转化为冬瓜(0,0,1),西瓜(0,1,0),黄瓜(1,0,0)
离散属性的处理:若有“序”(order),则连续化;否则,转化为 k 维向量。
令均方误差最小化,有(求最优参数)
其中
是拟合直线预测的结果值,
是真实的结果值
意味着对求出预测值与真实值相差最小的样本的w和b
是将公式
带入上式的结果,由于
=
,故上两式相等 对
进行最小二乘参数估计(名字由来是对参数w和b求min且取平方值)
对E(w,b)关于w , b求一阶偏导,再令导数为0则可得w , b最优解的闭式解:
两个参数,所以求偏导。 令导数为 0, 得到闭式(closed-form)解(U型函数如f(x)=x^2通常为凸函数,对凸函数求导=0可得w,b最优解的闭式解):
更一般的情况,样本由多个属性描述。给定数据集
,其中
此时线性回归模型试图学得:
(本文前面提到过该式的由来,这里就不在赘述) 此即为多元线性回归(multivariate linear regression) 类似的,我们可以利用最小二乘法来对w和b进行估计。
根据上述内容,我们已经知道
把
和b吸收入向量形式
,数据集表示为
注:我们把w和b写成向量形式
=(w,b) 把数据集D表示成m(d+1)的矩阵X。 上述中m表示样本数,d表示属性数 每一行对应一个示例,该行前d个元素表示d个属性值,最后一个为1(常数项b系数为1)
那么同样,我们在稍前一点的单属性样本公式
亦可用这里所述的矩阵形式表示:
前面也讲过,求最优解也就是求导且令导数为0,则这个点就是最优样本点。 令
,对
求导,
令其为零可得
。 然而,麻烦来了:涉及矩阵求逆! 这就得分两种情况讨论了: (不满秩简单理解就是样本数目比方程数目中未知数个数要少) ①若
满秩或正定,则
; ②若
不满秩,则可解出多个
。 对于情况②,就需求助于归纳偏好,或引入正则化。具体而言,对于解出的多个
,它们都能使均方误差最小化,选择哪一个作为输出,将由学习算法的归纳偏好决定,常见做法是引入正则化(regularization)项。
为了便于讨论,我们把线性回归模型简写为
若我们认为示例所对应的输出标记不是在线性尺度上而是在指数尺度上变化,那就可将输出标记的对数作为线性模型逼近的目标 具体做法是取对数压缩,即
此即为对数线性回归(log-linear regression),它形式上仍是线性回归,但实质上是求取输入空间到输出空间的非线性函数映射
对数函数起到了将线性回归模型的预测值与真实标记(指数函数的y)联系起来的作用
对于样例
若希望线性模型的预测值逼近真实标记,则得到线性回归模型
实际是在用
逼近y
因此,更一般地,我们可推广到一个广义线性模型(generalized linear model) 考虑单调可微函数g(⋅) (连续且充分光滑),令
函数g(⋅) 称为“联系函数”(link function) 显然,对数线性回归(log-linear regression)就是广义线性模型在
时的特例
当然,广义线性模型也可进行均方差误差最小化呢且通常,广义线性模型的参数估计通过加权最小二乘法或极大似然法进行。
根据上述公式
可利用线性模型做分类任务,具体而言,利用单调可微函数将分类任务的真实标记y与线性回归模型的预测值z联系起来。 二分类的真实标记y∈{0,1},而线性回归模型产生的预测值
,为实值,则可将z对应到{0,1}里,最理想的是单位阶跃函数(unit-step function):
即线性模型的预测值z大于零就判定为正例,小于零就判定为反例,为临界值0时则可任意判定
不连续,不符合“联系函数”的要求,故引入对数几率函数作为替代函数。
单位阶跃函数和对数几率函数
很显然,対率函数曲线的特性近似于阶跃函数,它是一种“Sigmoid函数”,它将z值转化为一个接近0或1的y值,其输出值在z=0附近变化很陡。
对数几率函数(Sigmoid函数)
将对数几率函数作为
带入
中得:
转化为线性形式则为:
这里给出转化形式的推导过程 令
则
两侧取对数 即
亦即
实际上上式是在用线性回归模型的预测结果去逼近真实标记的对数几率 若将y看做样本x作为正例的可能性,则1−y是其反例的可能性,两者的比值
称为 “几率”, 反映了x作为正例的相对可能性,
则为对数几率(log odds,亦称logit)
事实上,在上述内容中,线性回归模型产生的实值输出
期望输出
所以要找y和z的联系函数,也就是稍前所述的理想的“单位阶跃函数”
对数几率回归的优点: • 无需事先假设数据分布 • 可得到“类别”的近似概率预测 • 可直接应用现有数值优化算法求取最优解
求解对数几率回归模型的w和b 首先,我们将式
中的 y视为类后验概率估计 p(y=1|x) ,即在 x 条件下 y=1 的概率 则1-y即可表示为 p(y=0|x) 且有 p(y=1|x) + p(y=0|x) = 1 于是,式
可写成
更进一步,有
这里我们用极大似然法来估计w和b 给定数据集
,其中
是数据,
是标签,对率回归模型最大化“对数似然”(log-likelihood)
利用上式,在已知数据
,参数w和b条件下,可求出
概率最大化的结果
若将 y 看作类后验概率估计 p(y=1|x),则
可写成
于是,可使用“极大似然法”(maximum likelihood method) 给定数据集
最大化“对数似然”(log-likelihood)函数
令
,则
可写成
再令
则似然项可重写为
于是,最大化似然函数
等价为最小化
高阶可导连续凸函数,可用经典的数值优化方法如梯度下降法/牛顿法 [Boyd and Vandenberghe, 2004]
总结一下,广义线性模型实际上就是通过“联系函数”
联系起来的: 如对数几率函数就是
时的特殊情况; 而一元或多元函数就是g(·) = 1 时的情况。
由于将样例投影到一条直线(低维空间),因此也被视为一种“监督降维”技术(降维)
☆ 由于
是
的转置,他们之间在图像上呈现正交关系,故上图中
的存在有利于求出分开两类样本的直线的参数
分类算法常见的有:LDA、PCA、ICA等
LDA的目标是最小化类内的投影点,最大化类间的投影点
给定数据集
,其中,
是样本属性值,
是样本标签,且数目是从1到m共m个样本 第 i 类示例的集合
第 i 类示例的均值向量
第 i 类示例的协方差矩阵
两类样本的中心在直线上的投影:
两类样本的协方差:
同类样例的投影点尽可能接近 →
尽可能小 异类样例的投影点尽可能远离 →
尽可能大 于是,最大化
注:使分子越大,分母越小,得到最大化,即用一个式子满足两种目标要求 类内散度矩阵 (within-class scatter matrix)
类间散度矩阵 (between-class scatter matrix)
LDA的目标:最大化广义瑞利商 (generalized Rayleigh quotient)
w 成倍缩放不影响 J 值,仅考虑方向
令
,最大化广义瑞利商等价形式为
运用拉格朗日乘子法,有
的方向恒为
,不妨令
(不仅有方向,且有大小) 于是
实践中通常是进行奇异值分解
然后
上述问题讨论的是二分类问题
那么现在,我们假定有 N 个类
多分类LDA有多种实现方法:采用
中的任何两个
的闭式解是
的 N-1 个最大广义,特征值所对应的特征向量组成的矩阵
拆解法:将一个多分类任务拆分为若干个二分类任务求解
OvO:训练N(N-1)/2个分类器, 存储开销和测试时间大;训练只用两个类的样例, 训练时间短 OVR:训练N个分类器,存储 开销和测试时间小;训练用到全部训练样例, 训练时间长 预测性能取决于具体数据分布,多数情况下两者差不多
多对多(Many vs Many, MvM): 将若干类作为正类,若干类作为反类 一种常见方法:纠错输出码(Error Correcting Output Code)
上图中二元意味着这个问题是二分类问题,三元意味着这个问题是三种分类情况问题 其次, 上图(a)对4个类别C1、C2、C3、C4做5次划分f1、f2、f3、f4、f5 做五次划分,就会形成长度为五的编码 第一次划分f1将C1、C3、C4划分为反类,将C2划分为正类 第二次划分f2将C2、C4划分为反类,将C1、C3划分为正类 …… 海明距离:五次划分下的测试示例(编码)分别与其对应的类别Cx做运算,若是不同类(不同色),则+1 因此分别为3、4、1、2 欧氏距离:简单而言,就是相减平方求和再开方 如C1:
其余算法与图(b)同理,这里就不再赘述。
☆ECOC编码对分类器错误有一定容忍和修正能力,编码越长、纠错能力越强 ☆对同等长度的编码,理论上来说,任意两个类别之间的编码距离越远,则纠错能力越强
不同类别的样本比例相差很大(类别不平衡问题);“小类”往往更重要
基本思路:
基本策略 ——“再缩放”(rescaling):
然而,精确估计 m-/m+ 通常很困难!
常见类别不平衡学习方法: • 过采样 (oversampling) 例如:SMOTE • 欠采样 (undersampling) 例如:EasyEnsemble • 阈值移动 (threshold-moving)
[1]线性模型是一个形式简单、易于建模的机器学习模型,因为w直观表达了各属性在预测中的重要性,因此线性模型有很好的可解释性。 [2]线性回归背后的逻辑是用模型的预测值去逼近真实标记y,并通过计算训练样本在向量空间上距离模型线的欧式距离之和的最小值来确定参数w和b。 [3]线性回归可写成广义线性模型形式:g(y) = wx + b,通过选择不同的联系函数 g(.)会构成不同的线性回归模型。 [4]在遇到多分类学习任务时,基本的解决思路是“拆解法”,即将多分类任务拆为若干个二分类任务求解。 [5]当不同类别的样例数不同时,会造成类别不平衡问题,解决该问题的基本策略是对数据进行“再缩放。
感谢阅读