创建了一个微信交流群,想加入的朋友+WeChat:SODAS_MUSIC_STUDIO
1、基本形式
- 一般形式
-
- 向量模式
-
PS1-1:一般行向量用" , "隔开,列向量用" ;"隔开
- 线性模式的优点:形式简单、易于建模、可解释性、非线性模型的基础。
PS1-2:w可以非常直观的表示各个属性在预测中的重要性
- 线性模型要做的任务就两类:分类和回归
- 分类:就是求出一条直线w的参数,使直线两边分别属于两类不同的样本
- 回归:就是用来拟合更多的点的分布的方法。
2、线性回归
- 线性回归是通过数据发现或估计两个或多个变量之间可能存在的线性依赖关系的基本统计方法。
PS2-1:就是通过已知的(x,y)去得到线性模型的参数。
- 目的就是为了学的一个线性模型以尽可能准确的预测出实值输出标记。即,线性回归试图学得:
PS2-2:公式解读:每一个
进来都有一个合适的w和b来使预测值与真实情况相近似,如此构建的模型最好
- 线性回归的目标就是找到最佳的参数w和b,使得预测值f(
)与实际值
之间的差异(均方误差)最小,即:
PS2-3-2:求解w和b其本质是一个多元函数求最值的问题,更具体点就是凸函数求最值的问题。
- 为什么求平方?
- 我们考虑的是差值,差值就会有正有负。很有可能会出现所有差值相加为0的情况,为了克服这种情况使用平方使其全部化为正数。
- 既然是为了让其不出现正负混合的情况,为什么用平方不用绝对值?
- 还要对目标函数求微分,比起绝对值,平方的微分更简单。
PS2-4:均方误差有很好的几何意义,对应的就是常说的欧几里得距离,即"欧式距离"。
- 基于均方误差最小化来进行模型求解的方法称为最小二乘法(其实高中就学过)。最小二乘法就是试图找一条直线,是所有样本到直线上的欧式距离最小。
求解w和b使E(w,b)最小化的过程,称为线性回归模型的最小二乘"参数估计",回想多元微分求偏导得最值,将E(w,b)分别对w和b求偏导得:
分别令其等于0,就可以得到w和b最优解的闭式解:
- 有些时候,输入的属性值不能直接被学习模型所使用,需要进行相应的处理。转换为数值利于计算机计算。
- 对于连续值的属性,一般都可被学习器使用,有时会根据具体的情形作相对应的预处理,如:归一化等;
- 对于离散值的属性,可作下面的处理:
- 若属性值之间存在"序关系",则可以将其转化为连续值,如:身高的属性为:"高"、"中等"、"矮",则可以转化为数值(1,0.5,0)
- 若属性值之间无"序关系",则可以将其转为向量【设置R重向量】的形式,如:性别的属性为:"男"、"女",可转为向量{(1,0),(0,1)};瓜类的属性为:"南瓜"、"西瓜"、"黄瓜",则可以转为向量{(1,0,0),(0,1,0),(0,0,1)}
PS2-5:若将无序属性连续化,会不恰当地引入序关系,对后续处理,如距离计算造成误导。
- 当输入的属性有多个的时候,如对于一个样本有d个属性,则:
这就是多元线性回归,通常对于多元问题,常常使用矩阵的形式进行表示数据。在本问题中,将具有m个样本的数据集D表示成矩阵,将系数w与b合成一个列向量
,如此每个样本的预测值以及所有样本的均方误差最小化。
PS2-6:对于最后一个式子,其本质上与上面介绍的线性回归的均方误差的式子没有什么不同,y写成向量形式。
- 同样,我们使用最小二乘法对w和b进行估计,令均方误差的求导等于0,要注意,当一个矩阵的行列式不等于0时,我们才能去求逆,所以在求解过程中,要考虑矩阵
的行列式是否为0。若不为0,则可以求解:
PS2-7:当|A|=0时,A成为奇异矩阵;当|A|≠0时,A成为非奇异矩阵。
若是为0,即矩阵XTX不是满秩矩阵,解出多个,将有算法的归纳偏好所决定选择哪一个
。常常使用正则化项进行解决【西瓜书第六章】
- 线性回归的模型简写为:
。另一方面,有时像上面这种原始的线性回归可能不满足要求,如:y值不是线性变化,而是在指数尺度上变化的。这种情况我们会采用线性模型去逼近y的衍生物,如
,此时衍生的线性模型如图所示,就是把指数曲线投影到一条直线上,即对数线性回归:
若是考虑所有y的衍生物的情形,就得到了"广义的线性模型",考虑单调可微函数g(•),也称为联系函数。
3、对数几率回归【AKA.逻辑回归】
- 利用广义线性模型的特征,是否可以通过一个联系函数,将预测值转化为离散值从而进行分类呢?答案就是对数几率回归。对数几率回归引入了一个对数几率函数(一般是sigmoid函数),将预测值投射到0-1之间,使线性回归问题转换为二分类问题。
所以,虽然对数几率回归名字中有"回归"二字,但其实是一种分类算法,就是找一个g(•)将分类任务中的真实标记与线性回归模型的预测值进行联系,也就是广义线性回归。
- 考虑二分类任务,输出标记y∈{0,1},线性回归模型产生的预测值
是实值,只要将z转换为0或1值。理想情况,使用"单位阶跃函数",即:
但是单位阶跃函数不连续,所以要找到一个单调可微的函数g(•),在一定程度上尽量接近单位阶跃函数,这时我们想到了sigmoid函数作为我们需要的对数几率函数,即:
PS3-1:sigmoid函数的优点:1、处处可导;2、求导代价低。
两个函数都能实现,预测值z大于0为正例,小于0为负例,预测值为临界值0时可以任意判别:
将带入这个单调可微的函数g(•),即sigmoid函数,得:
若将y看做样本为正例的概率,1-y看做样本为反例的概率,则上式实际上是使用线性回归模型的预测结果逼近真实标记的对数几率。所以,这个模型称为"对数几率回归"。
- 使用极大似然估计的方法去计算w和b两个参数的取值,将上式中的y视为类后验概率估计p(y=1|x),则:
PS3-3:极大似然估计第七章学习,这里提供求解思路,看不懂的学完第七章再回顾
第一步:确定概率质量函数,
回顾原式,。已知y∈{0,1}取值为1和0的概率分别建模为:
PS3-4:这里是离散型变量,所以是概率质量函数。
由以上概率取值可推得随机变量y∈{0,1}的概率质量函数(不唯一,南瓜书有另一种写法)为:
PS3-5:当y=1时,
;当y=0时,
。
第二步:写出似然函数
然后将上式里的概率质量函数换成上面推导的形式,即:
然后带入似然函数的具体形式带入上式,即:
PS3-6:一定要仔细思考,自己带入
=0和
=1时会出现的情况
可见上式为高阶可导连续凸函数,可以使用凸优化理论、梯度下降法、牛顿法求出最优解,即:
PS3-7-1:"牛顿法"是一种用于求解方程根或函数的最小值的迭代优化算法。它利用函数的二阶导数信息(Hessian矩阵)来逼近函数的局部性质,能够更快地收敛到最优解。其基本思路就是构造函数的泰勒级数展开去近似原函数,并使用近似函数的根或者最小值去逐步逼近原函数的根或最小值。在每一次的迭代中,牛顿法使用当前点的切线去估计函数的根或最小值,并将切线与x轴的交点作为下一次迭代的点。如此一来通过不断迭代,就可以逐渐逼近函数的根或最小值。
在这个链接里可以看到动图演示
PS3-7-2."Hessian矩阵(AKA.海森矩阵)"是一个包含二阶偏导数信息的方阵。对于一个多元函数,其 Hessian 矩阵是由其各个变量的二阶偏导数组成的矩阵。假设有一个函数
,其 Hessian 矩阵 (H) 的元素是:
其中 i 和 j 是变量的索引,表示函数对变量
和
进行求导两次得到的结果。
Hessian 矩阵提供了函数局部极值的信息。在优化问题中,通过分析 Hessian 矩阵的特征值和特征向量,可以判断局部极值点的性质。比如:
- 当 Hessian 矩阵在某点是正定(所有特征值均为正),这个点是局部最小值点。
- 当 Hessian 矩阵在某点是负定(所有特征值均为负),这个点是局部最大值点。
- 当 Hessian 矩阵在某点的特征值有正有负,这个点是鞍点。
- 这个某点就是一阶偏导数为零的点。
例:
,则对应的Hessian矩阵为:
观察Hessian矩阵,特征值
和
,都是正值,说明该函数在(0,0)附近是一个局部最小值点。
故,由牛顿法可知,从当前β生成的t+1轮迭代解的更新公式为:
其中关于β的一阶、二阶导数分别为:
- 对数几率回归算法的机器学习三要素:
- 模型:线性模型,输出值的范围为{0,1},近似阶跃的单调可微函数
- 策略:极大似然估计,信息论
- 算法:梯度下降,牛顿
4、线性判别方法
- 线性判别分析(简称LDA,亦称 "Fisher判别分析")。LDA的基本思想为:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、不同类样例的投影点尽可能远离;对新样本进行分类时,将其投影到同样这条直线上,再根据投影点的位置确定新样本的类别。如图所示:
给定数据集D={(,
),(
,
),…,(
,
)},
={0,1},i=1,2,…,m。
其中j∈{0,1}类示例,令:
表示集合,
表示负类的集合;
表示正类的集合。
表示均值向量,
表示负类的
向量的均值向量;
表示正类的xi向量的均值向量。
PS4-1:均值向量顾名思义就是所有向量相加之和除所有的向量个数
表示协方差矩阵,
表示负类的协方差矩阵;
表示正类的协方差矩阵。
PS4-2:书里写到的关于协方差的公式并不符合数学的严谨,因为去掉了一个系数。因为去掉的系数并不影响线性判别分析建模的结果
这里我们要将数据投影到直线w(或者说向量w)上,则:
PS4-3:投影的直线w(或者说向量w)方向很重要,其模长不重要。因为这个w的方向要使样本在上面的投影能够最好的分类。投射到
方向可以完美分类;而投射到
方向则混合在了一起。如图所示:
那为什么模长不重要呢?因为投影长度只跟自身相关,w只决定角度问题,角度才会影响投影长度,如图:
- 两类样本的中心在直线上的投影为:
和
- 两类样本的协方差:
和
-
- 异类样例的投影点尽可能远离,就是使样本中心尽可能的远(并非严格投影):
PS4-4-1:由上面的图画可知,样本中心尽可能的远离。就是使
与
的差尽可能的大。同时乘上一个|w|之后,可以将|w|∙|
|∙cosθi转换为向量内积的形式,即
。
则,由上可得最大化目标为:
PS4-5:分子为异类样例的投影点尽可能远,分母为同类样例的投影点尽可能近。
对于max J式子,将分子中中间的公式定义为类间散度矩阵
,将分母中
中间的公式定义为类内散度矩阵
,即:
如此一来将和
带入max J中,得到LDA的最大化目标:"广义瑞利商",即:
PS4-6-1:可以直接把w的大小给固定,固定策略有很多,如令||w||=1(w的模长为1)、书中写的一样将分母固定,即:
固定,因为当给定样本以后
是固定的矩阵,
=1就等价于||w||=1了或者固定分子,即
=1也是可以的。
【方法不唯一,找助于解题的固定方式。当然你也可以令
=1000,只要是一个固定的数都行】
PS4-6-2:为什么使用min,因为一般的优化问题通常都转换为最小化的问题。尽管上面的式子为max J是一个最大化问题,最大化问题加一个负号就变成最小化问题了。
PS4-6-3:广义瑞利商:说广义瑞利商之前,先看看什么瑞利商的定义:假设x为非零向量,而A为厄米矩阵【厄米矩阵的解释见下面的PS4-6-4】。对于函数R(A,x):
瑞利商有一个重要的性质,其最大值等于矩阵A最大的特征值,最小值等于矩阵A的最小特征值,即:
当向量x为标准正交基时,即满足XHX=1时,瑞利商退化为:R(A,x)=
。这个形式在谱聚类和PCA中都有出现。
广义瑞利商的定义如下:
它的最大值和最小值是啥?只要通过标准化就能转化为瑞利商的格式:
而分子转化为:
此时的R(x)转化为R(A,B,X'):
另一种方法,回到我们线性判别分析的问题上来,固定
=1,就相当于固定
=1,使用拉格朗日乘子法可推得Ax=λBx这样一个广义特征值问题,因此x所有可能的解即为
(i=1,2,…,n)这n个广义特征向量,将其分别代入R(x)也可以推得上面最大值为最大的特征值,最小值为最小的特征值的结果。
PS4-6-4:存在有一个矩阵A,取其厄米为"
"【在物理学里,H上标用作了哈密顿量,所以也有用"
"来表示取厄米】,其方法为对A求转置求其复共轭(转置和复共轭可交换),即:
【共轭:对矩阵中的每个元素取复共轭,即将复数的虚部取负】
例:列向量α={1+ i;2 - i;3},则
={1 - i,2 + i,3}
【注意:分号分割表示列向量,逗号分割表示行向量】
当矩阵A元素涉及到复数的时候,一般只用厄米不用转置。其实当矩阵A为实矩阵时厄米运算等价于转置运算,说白了就是厄米的一个特例,即厄米>转置。
当
的时候,称A为厄米矩阵(又称厄米特矩阵)。要满足上式A需要满足:
- 首先A是一个方阵。
- 主对角线为实数,若对角线上是复数取复共轭后,对角线值就改变了。
- 上下三角对称对应位的复数系数互为相反数,复数取复共轭后应对应相等。
要是没看懂什么是厄米矩阵,可以暂时理解为实数对称矩阵。之后再去补习相关知识,关于厄米矩阵的其他性质,如正规矩阵、可酉相似对角化、特征值等。后续会在数学基础专栏里进行介绍。
- 上面的工作使分类问题转换为最优化求解w的问题,当解出w后,对新的样本进行分类时,只需要将该样本点投影到这条直线上,根据与各个类别的中心值进行比较,从而判定出新样本与哪个类别距离最近。求解w的方法使用拉格朗日乘子法(解带约束的优化问题最常用的方法),即:
PS4-7:什么是拉格朗日乘子法?【回想高数里的多元微分学的拉格朗日乘子法求极值】
对于仅含等式约束的优化问题:
其中自变量x∈
(n维向量),f(x)和
(x)均有连续的一阶偏导数。首先列出其拉格朗日函数:
其中
为拉格朗日乘子。就是把所有的约束乘上对应的拉格朗日乘子。然后对拉格朗日函数关于 x 求偏导,并令导数等于0在搭配约束条件
(x)=0解出x,会解出来一堆解。求解出的所有x即为上述优化问题的所有可能的极值点,最小值点就在极值点内。
按照拉格朗日乘子法去求解:
由拉格朗日乘子法可得拉格朗日函数为:
对w求偏导可得
PS4-8:如何对矩阵求偏导?见链接:矩阵偏导
令上式等于0,即令偏导等于0,可得
PS4-9-1:将类间散度矩阵
展开换成原来的式子。
PS4-9-2:上面第二个式子就得到了书中的(3.37),这个式子就是广义特征值。
由于和
都是列向量,做差以后转置就变为了一个行向量,w是一个列向量,行向量×列向量="数"。又因为样本是给定的
和
的值是固定的,所以这个"数"的值由||w||(w的模长)决定,上面说了我们不管w的长度是多少我们都能任意调控,随意的放大缩小。因为并不影响线性判别分析的模型。所以:
PS4-9-3:使用拉格朗日乘子法求出来的极值点w一定是最小值点吗?
为什么最大值为0?
因为
和
在w上投影的距离一定有最大最小值的,无论w的方向怎么转动,
和
之间的距离要么变大要么变小,所以一定存在最大最小值。
PS4-10-1:回想相似理论特征值分解,存在正交矩阵Q,n阶矩阵B,存在
。
奇异值分解(SVD分解),就是对任意m×n的矩阵A,我们都可以将它分解为
,其中U,V分别是m阶,n阶正交矩阵,Σ为对角矩阵(非方阵),其主对角线上的每个值被称为奇异值。其中:
正交矩阵U,该矩阵的每一个列向量都是
的特征向量;
正交矩阵V,该矩阵的每一个列向量都是
的特征向量;
对角阵Σ,将
或
的特征值开根号,得到的就是该矩阵主对角线上的元素,也就是A的奇异值。
对比看来都是一个矩阵分解成三个矩阵,无非B是方阵,而A是任意矩阵。也就是说,当矩阵非方阵时无法进行特征值分解,因为没有特征值的概念,所以就出现了奇异值分解。
推广到复数矩阵(忘记回看PS4-6-4),对于SVD分解
,此时U和V为酉矩阵(什么是酉矩阵看PS4-10-2),满足:
但是Σ里面的元素依旧为实数。
关于奇异值分解更详细的内容可见:超详细解释奇异值分解(SVD)
PS4-10-2:酉矩阵是一个复矩阵U,满足:
性质:
- 内积不变:酉矩阵保持向量的内积不变,即对于任意向量v和w,有
- 规范性:酉矩阵的列向量和行向量都是单位向量,并且相互正交。这意味着每列向量的模为1,且不同列向量的内积为0。
- 特征值:酉矩阵的特征值的模长为1,即如果 λ是U的特征值,那么 ∣ λ ∣ = 1。
- 将LDA推广到多分类任务中,假如存在N个类,第i类示例数为
,这里先定义"全局散度矩阵":
这里的μ是所有示例的均值向量,定义"类内散度矩阵"是每个类别的散度矩阵的和,即:
其中表示属于当前第i个类的点关于自己中间点的方差,即:
表示每个类自己的中心点关于全体中心点的方差,即:
多分类LDA有多种实现方法,用、
、
都行,常用的是采用优化目标:
W属于d×(N-1)维向量,tr(∙)是矩阵的迹。
PS4-11-1:回想二分类的LDA中w代表的是什么?是不是一个2×1的列向量,回看二分类的图,横纵坐标为
和
,其代表的是样本数据的两个特征,这些特征是用来描述样本的属性或特征的。所以这里的d代表的也是特征。对于二分类的图,两个类别两个特征,映射到了一维的直线。假设我们有一个三个类别三个特征的问题,是不是可以考虑将其映射到某个平面上,如图:
上图就映射到了由
和
组成的平面上了。
拓展出来,就是说我映射到了一个d×(N-1)高维空间的子空间,维度为N-1维。
总的看来,对于刚开始的二分类问题,w是一个2×1的列向量,是因为只有两个特征,只有两个类可以在一条直线上进行很好的分类。N-1就是我现在有N个类,最大映射到一个N-1维空间,或者说最多需要映射到一个N-1维空间,才能把N个类进行分开。
PS4-11-2:这里为什么要求tr(∙)?
首先这里求tr(∙)是众多方法其中的一种,并不绝对;
其次我们的目标是最大化
和最小化
化,最大化tr(∙)的商其实就是对角线之和的商。在LDA中类间散度矩阵
与类内散度矩阵
都是对称阵,因此具有实特征值。通过求迹,可以直接得到这些特征值的和,便于计算了。
然后跟LDA二分类一样使用拉格朗日乘子法,然后求偏导,令偏导为0得:
求解W,两边同乘即:
W的闭式解的N-1个最大广义特征值所对应的特征向量组成的矩阵,即:一直取前N-1个最大的特征值对应的特征向量。
PS4-12:这种取最大的特征值几个对应的做法,就是把最具有特征的抽取出来。在第十章降维也会比较常用。
- LDA也常被视为一种经典的监督降维技术。
5、多分类学习
- 现实中我们经常遇到的不只是二分类问题,还有多分类问题。多分类学习的基本思路为"拆解法",即将多分类任务拆解为若干个二分类任务进行求解。训练多个二分类学习器,最后将多个分类结果进行集成得出结论。
PS5-1:这里主要介绍"拆分"策略,关于多个分类器的集成见"第八章 集成学习"。
- 最经典的拆分策略有三种:"一对一(OvO)"、"一对其余(OvR)"、"多对多(MvM)":
- "一对一(OvO)":假如某个分类中有N个类别,我们将这N个类别进行两两配对(两两配对后转化为二分类问题),从而产生
个二分类任务。在测试阶段,把新样本交给所有分类器。于是可以得到
个分类结果。把预测的最多的类别作为预测的结果(或根据各分类器的预测置信度等信息进行集成)。例:
- "一对一(OvO)":假如某个分类中有N个类别,我们将这N个类别进行两两配对(两两配对后转化为二分类问题),从而产生
如上图所示,训练集中一共有三类分别为R、S、T。则根据两两配对共有3种组合方式,需要3个二分类器,分别构建区分R-S分类器、区分R-T分类器、区分S-T分类器。将只含有R和S类的样本交给分类器R-S,以此类推。得到:
通过训练以后,给出一个测试样本用三个分类器去判断,各自会输出两个属于不同类别的概率值,如图所示:
通过比较各分类器输出的概率,设置哪一个概率大就属于哪一类,则R-S分类器判断属于S类、R-T分类器判断属于R类、S-T分类器判断属于 "S" 类,即如图:
三个分类器告诉我们三种情况,可得表:
类别 | R | S | T |
输出比例 | 0 |
通过投票,可得认为上面的一个测试样本为 "S" 类。
- "一对其余(OvR)":每次将一个类的样例作为正例、所有其他类的样例作为反例来训练N个分类器。在测试时若只有一个分类器预测为正类,则对应的类别标记作为最终分类结果。若有多个分类器预测为正类,则通常考虑各分类器的预测置信度,选择置信度最大的类别标记作为分类结果。例:
如上图所示,训练集中一共有三类分别为R、S、T。需要3个二分类器,分别构建R-非R分类器、T-非T分类器、区分S-非S分类器。将R类和非R类的样本分成两类交给分类器R-非R分类器进行训练,以此类推。得到:
通过训练以后,给出一个测试样本用三个分类器去判断,只需要输出属于本分类器的类别的概率即可,通过比较各分类器输出的概率,设置哪一个概率大就属于哪一类。如图所示:
另外有的分类器会标注其概率,但是上面计算的概率为0.2、0.7、0.6。三者相加大于一,不符合归一化的标准,所以要对概率做一个转换,转换为一种得分评定使其符合归一化。这里不具体表述,方法很多具体问题具体分析,假设变为0.1、0.6、0.3。如此一来就符合归一化标准了。如表:
类别 | R | S | T |
一种得分评定方式 | 0.1 | 0.6 | 0.3 |
即可得认为上面的一个测试样本为 "S" 类。
这里再细细品味一下周志华老师西瓜书中给出的OvO、OvR示意图。
- "多对多(MvM)":每次将若干个类作为正例、若干个类作为反例。显然OvO、OvR都是其特例。MvM的正、反类设计必须有特殊的设计,常用的一种技术:”纠错输出码(AKA.ECOC)”。ECOC是将编码的思想引入类别的划分,并可能在解码过程中具有容错性。
ECOC工作过程主要分为两步:
1、编码:对N个类做M次划分,每次划分将一部分作为正类,一部分划分反类,从而形成一个二分类训练集。一共产生M个训练集,训练出M个分类器。其中有一个编码要求为不能出现某两行对应元素相同。ECOC编码有很多方式常见的是二元码 (正类" +1 "和反类" -1 ")和 三元码(正类" +1 ",停用类" 0 ",反类" -1 ")。
2、解码:M个分类器分别对测试样本进行预测,这些预测标记组成一个编码。将这个预测编码与每个类各自的编码进行比较,返回其中距离最小的类别作为最终结果。
举个例子:
这里的每一个类别的编码都可以理解为一个向量,如类别R对应的向量r=(-1,+1,+1,-1,-1,+1),以此类推。
PS5-2-1:为什么二元ECOC码所需二分类器个数k∈[m,
]?
- 右区间:其类别个数有m个,每一类编码方式有两种编码方式" +1 "和" -1 "。m个类别就是2m个编码方式,由于有两种情况"所有的分类器都显示 +1 "和"所有的分类器都显示 -1 "。解释一下:根据上图,假如有一个分类器7,使类别R、类别S、类别T都显示" +1 "。就会出现欠采样的情况,即该分类器偏差太严重了,只把" +1 "交给训练集进行训练,没有" -1 "的情况,这就是欠采样的现象。故,右区间为2m-2。
- 左区间:有编码要求,不能出现某两行对应元素相同。假如设置四类,如表:
此时m=4,设置两个分类器,即2<4。不满足上面k∈[m,2m-2],很明显不能将类别①和类别②进行分类。因为类别①和类别②的编码都是{-1,-1},单用分类器1和分类器2是不能把类别1和类别2进行有效的区分。为了避免这种情况,就把设置类别器的最小值设为m。故,左区间为m。
类别\分类器 分类器1 分类器2 类别① -1 -1 类别② -1 -1 类别③ +1 -1 类别④ -1 +1
PS5-2-2:假如有一个大型的训练集有50个类别,那分类器最多为
。数目非常大,这也叫NP-hand问题(NP难问题),即随着类别数的增长,其会按着指数级的增长,不是多项式的增长。所有对于类别过多的训练集,一般选择几个有代表性的分类器。而且至少保证不能出现某两行对应元素相同的情况。
对于上例,分类器1只把类别R看为" -1 ",则将类别R的样本全部标记为" -1 ",其余的全为" +1 ",分类器1就是用来区分R和非R的。以此类推,如图:
上图将训练集,按照编码分解为六个训练集喂给6个分类器进行训练。
通过训练以后,给出一个测试样本交给6个分类器去判断,每一个分类器都会输出关于" +1 "和" -1 "的概率(注意,每一个分类器输出的" +1 "和" -1 "的概率相加等于1),通过比较各分类器输出的概率,设置哪一个概率大就属于哪一类。如图所示:
将输出值做为一个列向量,分别有六个分量。将列向量转置后,就有:
测试样本分类结果 | -1 | +1 | -1 | +1 | -1 | -1 |
将测试样本与上面设置的二元ECOC编码矩阵进行比对,看测试样本分类结果的向量最接近二元ECOC编码矩阵中分属于各个类别的行向量的哪一个。通过计算距离的方式进行比较,哪个小就是哪个类别。在编码领域的计算距离有两种方式:海明距离和欧氏距离。,计算结果如下:
经过计算,则可以判断出该测试用例是类别T的。
PS5-3:海明距离(hamming distance):在信息编码中,两个合法代码对应位上编码不同的位数称为码距,又称海明距离。具体来说,对于两个n位二进制数(或等长字符串),将它们进行逐位比较,如果对应位上的数字(或字符)不同,则计算距离时该位置的距离值加1。然后将所有位上的距离值加在一起,得到的总和即为这两个二进制数(或字符串)之间的海明距离。
欧氏距离(Euclidean Distance):也称欧几里得距离,是一种在多维空间中测量两个点之间“直线”距离的方法。即在n维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。这种距离的计算基于欧几里得几何中两点之间的距离公式,通过计算两点在各个维度上的差的平方和,然后取平方根得到。公式为:
另外海明距离若为d,则其欧式距离为
某些分类算法,会对测试样本做一些评分,输出一些评分的方式给出相对应的结果。这里采用海明距离取倒数,然后比上倒数之和,即:
类别 | R | S | T |
一种得分评定方式 |
这里也看得出来类别T的大,则测试样本属于类别T。
PS5-4:上面提到的评分方法,除了示例的方法还有很多种,并不唯一。
现在再来体会一下周志华老师西瓜书上提到的例子就很好理解了,如图:
- ECOC编码越长,纠错能力越强。然而,编码越长,意味着所需训练的分类器越多,计算、存储开销都会增大;另一方面,对有限类别数,可能的组合数目是有限的,码长超过一定范围后就失去了意义。
6、类别不平衡问题
- 类别不平衡(class-imbalance):就是指分类任务中不同类别的训练样例数目差别很大的情况。比如在二分类任务种,正负样本不平衡的情况非常多,比如银行欺诈问题,失效检测问题中,正类样本的数量远远多于负类样本。在类别不平衡问题中,常将数量多的类别称为"大类",数量少的类别成为"小类"。
- 由于类别不平衡问题的数据集中被大类主导,追求高分类精度是毫无意义的。如:在信用卡欺诈任务中,当类别不平衡度为1000时,即正负样本的比例为 1000 : 1,将所有的样本全部分为正样本即可获得 99.99% 的分类精度,虽然分类精度很高,但是无法检测出任何负样本,显然,这样的模型是毫无意义的。
PS6-1:类别不平衡学习有一个隐含的假设:小类具有比大类更高的代价。 如果大类比小类更重要,那么由大类主导的学习就不会带来问题,相反,如果小类更重要的话,由大类主导的学习才会导致问题。
- 回想第二章的模型评估,分析一下类别不平衡问题中的性能指标:
上面说了类别不平衡问题中使用分类准确度作为评估指标毫无意义,更需要关注模型对小类的识别效果。对于类别不平衡问题,通常使用ROC曲线、AUC值等作为性能评估指标。
- 类别不平衡问题的解决方法:
1、欠采样:在训练样本较多的类别中进行"欠采样",即,去除一些反例使正、反例数目接近,然后再进行学习,另外注意欠采样法若随机丢弃反例,可能会丢失一些重要信息。常见的算法有:EasyEnsemble
PS6-2:EasyEnsemble是利用集成学习机制,将反例划分为若干个集合供不同学习器使用,这样对每个学习器来看都进行了欠采样,但在全局看来却不会丢失重要信息
2、过采样:在训练样本较少的类别中进行"过采样",即,增加一些数量少类型的样例,使正反样例数量接近,然后再进行学习。另外注意过采样法不能简单地对初始正例样本进行重复采样,容易导致严重的过拟合。常见的算法有:SMOTE
PS6-3:SMOTE是通过对训练集里的正例进行插值(合成新的少数类样本来增加少数类样本的数量)来产生额外的正例。其原理在于,对于每个少数类样本,SMOTE算法会计算其K个最近邻样本(基于K近邻算法),然后在两个随机选择的最近邻之间生成新样本。这种方式既能增加少数类样本的数量,又能保持数据的分布特性,有效缓解了数据不平衡问题。
以上的"欠采样"和"过采样"都属于重采样方法。"欠采样"和"过采样"均可通过有放回和无放回的随机采样实现。
3、 阈值移动:直接基于原始训练集进行学习,但在训练好的分类器进行预测时,将再缩放式嵌入到决策过程中,称为 "阈值移动"。这种"再缩放"处理,也是"代价敏感学习"的基础。
最常见的代价敏感学习方法是 "再缩放" ,该方法在学习过程中调节各个类别的影响,并使其和它对应的代价成正比。 “再缩放” 是一个通用框架,可以通过不同方法来实现。
其实基于正类和负类同样重要的情况的所有二分类问题都在做一个事情,即:
平时做的都在隐含一个条件就是大于 ,当大于认为
是正类的,反之为负类。即:
为正类样本,
为负类样本,m为总样本。当假设正类比较少,为:
在这种比例下,就不应该以0.5作为划分标准。应以0.25做为划分标准,即:
所以,当两类不平衡的时候,遵循的准则为:
基本策略——"再缩放":由于本身的划分比例为0.5,直接把和
的比例带入就好。
实际上,精确估计通常很困难,因为很难保证是否为无偏采样。无偏采样是一种理想的采样方式,是指采样得到的样本分布与真实的样本总体的分布一致,即对样本总体的属性的无偏估计。这意味着,从总体中抽取的样本能够真实、准确地反映总体的特征,不存在任何偏差。
PS6-4:代价敏感学习:是一种研究处理不均等代价的方法,其目标是在学习过程中最小化总体代价(如测试代价、教学代价、介入代价等),而不是最小化错误率或分类精度。 代价敏感学习中最常见的总体代价是误分代价(misclassification cost),有两种类型的误分代价:基于样本的代价和基于类别的代价。
- 基于样本的代价:假设代价是伴随着每个样本的,即每个样本都有自己的误分代价;
- 基于类别的代价:假设代价是伴随着每个类别,即每个类别有着自己的误分代价。
通常情况下使用的是基于类别的代价(获取每个类别的代价比较方便,可行性高)。