机器学习-线性模型
机器学习—线性模型
线性模型:
(一)线性回归
(二)对数几率回归
(三)线性判别分析
(四)多分类学习(了解)
(五)
如西瓜书前言所述,本章内容仍属于第一部分机器学习基础知识;作为西瓜书介绍机器学习模型的开篇,线性模型也是机器学习中最为基础的模型,很多复杂模型均可认为由线性模型衍生而得。
(零) 线性模型
线性模型基本形式
给定数据集\(D = {(x_1,y_1), (x_2,y_2),\cdots,(x_d,y_d)}\), 我们是试图从此数据集中学习得到一个线性模型,这个模型尽可能准确的反映\(x(i)\)和\(y(i)\)的对应关系(函数即为对应关系)。这里的线性模型,就是属性(x)的线性组合的函数,可表示为:
给定有d个属性(维度)的数据\(x = (x_1; x_2; \cdots;x_d)\),其中xi是x在第i个属性的值.
线性回归模型要学习一个可以通过属性的线性组合来进行预测的函数:
写成向量形式为:
其中, \(W=(w_1; w_2;\cdots;w_d)\)表示d维的权重向量\(\begin{bmatrix}w_1 \\ w_2\\ \cdots \\ w_d \end{bmatrix}\),\(b\)为偏置。
(解释一下向量中的分号:逗号分割的向量通常为行向量,分号分割的向量通常为列向量。)
这里的\(w\)表示weight,表示对应的属性在预测结果的权重,直观表达了各属性在预测中的重要性。由此,我们可以知道,权重越大,对于结果的影响也就越多;更一般化的表示是\(\theta\),是线性模型的参数,用于计算结果。因此,线性模型有着很好的可解释性(comprehensibility)。
例如:西瓜有三种属性,色泽、根蒂、敲声,三个属性都影响了西瓜的好坏程度,假设通过一批数据,已经学得下式:
那么上式,就是一个输入属性值(色泽、根蒂、敲声),预测瓜的好坏程度的线性模型。
我们根据\(x\)的权值\(w\)的值可看出,对于判断瓜好不好,根蒂最要紧,而敲声比色泽更重要。
通俗的理解:\(x(i)\)就是数据集合中的一个个属性(例如,西瓜书中的色泽,根蒂;Andrew ng示例中的房屋面积,卧室数量等) 。\(\theta\)(或者\(w/b\)),也即对应属性的参数(或者权重),我们根据已有数据集来求得属性的参数(就相当于求得函数的参数),然后根据模型来对新的输入或者旧的输入来进行预测(或者评估)。
有时这些输入的属性值并不能直接被我们的学习模型所用,需要进行相应的处理:
对于连续值的属性,一般都可以被学习器所用,有时会根据具体的情形作相应的预处理,例如:归一化等;
对于离散值的属性,可作下面的处理:
-
若属性值之间存在“序关系”,则可以将其转化为连续值,例如:身高属性分为“高”“中等”“矮”,可转化为数值:{1, 0.5, 0}。
-
若属性值之间不存在“序关系”,则通常将其转化为向量的形式,例如:性别属性分为“男”“女”,可转化为二维向量:{(1 , 0),(0 , 1)}。
线性模型的“线性”
误区:线性模型学习出来的流形(划分超平面)只能是线性的
一些常见的错误说法:
1.线性和非线性的区别是:是否可以用直线/线性超平面来划分开
2.\(f(x) = w_1x_1 + w_2x_2 + \cdots + w_dx_d + b\)这种形式才是线性模型,因为每个自变量的参数w只能影响一个x,而\(w_1w_2\)这种形式则不是线性模型。
在数学中,基函数是函数空间中特定基底的元素。实际上,基函数的观点是,线性与否不是针对自变量x来看的,也不是看x的形式是否线性(\(x_1\)是线性,\(x_1^{2}\),\(x_1x_2\)不是线性)。
这里的线性其实是针对参数w来看的,只要w是线性的,那么这个模型就是线性的。而x是怎么样反而无所谓,因为我们可以把x加上一个基函数变成φ(x),因此\(f(x) = w_1x_1 + w_2x_2 + \cdots + w_dx_d + b\)是线性模型,是因为这个方程针对w来说是线性的。
(一)线性回归
线性回归(Linear Regression)是机器学习和统计学中最基础和最广泛应用的模型,是一种对自变量和因变量之间关系进行建模的回归分析。自变量数量为1时称为简单回归,自变量数量大于1时称为多元回归。
从机器学习的角度来看,自变量就是样本的特征向量\(x\in \mathbb{R}^D\)(每一维对应一个自变量),因变量是标签(输出目标)\(y\),这里的\(y \in \mathbb{R}\)是连续值(实数或连续整数)。
线性回归目标
给定数据集
其中\(x_i = (x_{i1};x_{i2};\cdots;x_{id})\),y ∈ R .
在分类问题中,由于输出目标\(y\)是一些离散的标签,而线性回归就是要学习一个线性模型以尽可能准确的预测实值输出标记。
参数学习
通过前面关于“线性”的讨论,我们知道模型的线性关系只取决于参数权重\(w\)。
于是,给定一组包含N个训练样本的训练集\(\mathcal{D} = \left\{(x^{(n)}, y^{(n)}\right\}_{n=1}^N\),我们希望能够学习一个最优的线性回归的模型参数\(w\),而若要习得最优模型参数\(w\),我们需要通过一些方法来对参数进行估计。
下面介绍四种不同的参数估计方法:经验风险最小化、结构风险最小化、最大似然估计、最大后验估计。
经验风险最小化
由于线性回归的标签\(y\)和模型输出都为连续的实数值,因此平方损失函数非常适合衡量真实标签和预测标签之间的差异。
根据经验风险最小化准则,训练集\(\mathcal{D}\)上的经验风险定义为\(\mathcal{R}\)(w):
其中,\(y = [y^{(1)},...,y^{(N)}]^T \in \mathbb{R}^N\)是由所有样本的真实标签组成的列向量,而\(X \in \mathbb{R}^{(D+1)×N}\)是所有样本的输入特征\(x^{(1)},...,x^{(N)}\)组成的矩阵:
风险函数\(\mathcal{R}(w)\)是关于\(w\)的凸函数,其对\(w\)的偏导数为
令\(\frac{\partial}{\partial w}\mathcal{R}(w) = 0\),得到最优的参数\(w^*\)为
这种求解线性回归参数的方法也称为最小二乘法(Least Square Method,LSM)。
下图给出了用最小二乘法来进行线性回归参数学习的示例。
在最小二乘法中,\(XX^T \in \mathbb{R}^{(D+1)×(D+1)}\)必须存在逆矩阵,即\(XX^T\)是满秩的\((rank(XX^T) = D+1)\)。
也就是说,\(X\)中的行向量之间是线性不相关的,即每一个特征都和其他特征不相关。
一种常见的\(XX^T\)不可逆情况是样本数量\(N\)小于特征数量\((D+1)\),\(XX^T\)的秩为\(N\)。这时会存在很多解\(w^*\),可以使得\(\mathcal{R}(w^*) = 0\)。
当\(XX^T\)不可逆时,可以下面两种方法来估计参数:
- 先使用主成分分析等方法来预处理数据,消除不同特征之间的相关性,然后再使用最小二乘法来估计参数;
- 使用梯度下降法来估计参数。先初始化\(w=0\),然后通过下面公式进行迭代:
其中,\(\alpha\)是学习率。这种利用梯度下降法来求解的方法也称为最小均方法(Least Mean Squares,LMS)算法。
结构风险最小化
最小二乘法的基本要求是各个特征之间要互相独立,保证\(XX^T\)可逆。但即使\(XX^T\)可逆,如果特征之间有较大的多重共线性(Multicollinearity),也会使得\(XX^T\)的逆在数值上无法准确计算。数据集\(X\)上一些小的扰动就会导致\((XX^T)^{-1}\)发生大的改变,进而使得最小二乘法的计算变得很不稳定。为了解决这个问题,[Hoerl et., 1970]提出了岭回归(Ridge Regression),给\(XX^T\)的对角线元素都加上一个常数\(\lambda\)使得\((XX^T+\lambda I)\)满秩,即其行列式不为0。
最优的参数\(w^*\)为
其中\(\lambda>0\)为预先设置的超参数,\(I\)为单位矩阵。
岭回归的解\(w^*\)可以看作结构风险最小化准则下的最小二乘法估计,其目标函数可以写为
其中\(\lambda>0\)为正则化系数。
最大似然估计
机器学习任务可以分为两类:
- 一类是,样本的特征向量\(x\)和标签\(y\)之间存在未知的函数关系\(y = h(x)\);
- 另一类是,条件概率\(P(y|x)\)服从某个未知分布。
前面介绍的最小二乘法属于第一类,直接建模\(x\)和标签\(y\)之间的函数关系。
此外,线性回归还可以从建模条件概率\(P(y|x)\)的角度来进行参数估计。
假设标签\(y\)为一个随机变量,并由函数\(f(x;w) = w^Tx\)加上一个随机噪声\(\epsilon\)决定,即
其中\(\epsilon\)服从均值为0、方差为\(\sigma^2\)的高斯分布。这样,\(y\)服从均值为\(w^Tx\)、方差为\(\sigma^2\)的高斯分布:
参数\(w\)在训练集\(\mathcal{D}\)上的似然函数(Likelihood)为
其中,\(y = [y^{(1)},...,y^{(N)}]^T\)为所有样本标签组成的向量,\(X = [x^{(1)},...,x^{(N)}]\)为所有样本特征向量组成的矩阵。
为了方便计算,对似然函数取对数得到对数似然函数(Log Likelihood):
最大似然估计(Maximum Likelihood Estimation,MLE)是指找到一组参数\(w\)使得似然函数\(P(y|X;w,\sigma)\)最大,等价于对数似然函数\(log P(y|X;w,\sigma)\)最大。
令\(\frac{\partial log P(y|X; w,\sigma)}{\partial w} = 0\),得到
可以看出,最大似然估计的解和最小二乘法的解相同。
最大后验估计
最大似然估计的一个缺点是当训练数据比较少时会发生过拟合,估计的参数可能不准确。为了避免过拟合,我们可以给参数加上一些先验知识。
假设参数\(w\)为一个随机向量,并服从一个先验分布\(P(w; v)\)。
为简单起见,一般令\(P(w;v)\)为各向同性的高斯分布:
其中,\(v^2\)为每一维上的方差,\(I\)为单位矩阵。
根据贝叶斯公式,参数\(w\)的后验分布(Posterior Distribution)为
其中\(P(y|X,w; \sigma)\)为\(w\)的似然函数,\(P(w;v)\)为\(w\)的先验。
这种估计参数\(w\)的后验概率分布的方法称为贝叶斯估计(Bayesian Esti-mation),是一种统计推断问题。采用贝叶斯估计的线性回归也称为贝叶斯线性回归(Bayesian Linear Regression)。
贝叶斯估计是一种参数的区间估计,即参数在一个区间上的分布。如果我们希望得到一个最优的参数值(即点估计),可以使用最大后验估计。最大后验估计(Maximum A Posterior Estimation,MAP)是指最优参数为后验分布\(P(w|X; v,\sigma)\)中概率密度最高的参数:
令似然函数\(P(y|X,w; \sigma)\)为公式\(P(y|X; w; \sigma) = \prod \limits_{n=1}^N P(y^{(n)}|x^{(n)}; w, \sigma) = \prod \limits_{n=1}^N \mathcal{N}(y^{(n)}; w^Tx^{(n)}, \sigma^2)\)中定义的高斯密度函数,则后验分布\(P(w|X; V, \sigma)\)的对数为
可以看出,最大后验概率等价于平方损失的结构风险最小化,其中正则化系数\(\lambda = \frac{\sigma^2}{v^2}\)。
最大似然估计和贝叶斯估计可以分别看作频率学派和贝叶斯学派对需要估计的参数\(w\)的不同解释。
当\(v \to \infty\)时,先验分布\(P(w; v)\)退化为均匀分布,称为无信息先验(Non-Informative Prior),最大后验估计退化为最大似然估计。
单特征线性回归
单特征时线性回归的目标函数为\(f(x_i) = wx_i + b\),使得\(f(x_i)≈y_i \quad (3.3)\)
这里每个\(x_i\)并不是\(x_i = (x_{i1};x_{i2};\cdots;x_{id})\),而是只有\(x_{x1}\)一个属性(特征),因此要学习的w值只有一个,总共需要学习\(w,b\)两个值即可(一个w对应一个特征)。
当输入属性只有一个的时候,就是最简单的情形,也就是我们高中时最熟悉的“最小二乘法”(Euclidean distance),首先计算出每个样本预测值与真实值之间的误差并求和,通过最小化均方误差MSE,使用求偏导等于零的方法计算出拟合直线\(y=wx+b\)的两个参数\(w\)和\(b\),计算过程如下图所示:
已知\(f(x_i) = wx_i + b\),则通过最小化均方误差,可得\(w^*\)和\(b^*\):
解释以下符号"\(\arg \min\)",其中"\(arg\)"是"argument"的前三个字母,"\(\min\)"是"minimum"的前三个字母。结合起来,表示目标函数的最小的参数。"min"与“arg min”的区别在于,“min"输出目标函数的最小值,而"arg min"输出目标函数最小值时的参数\((w,b)\),即"argument"。
又已知均方误差为\(E_{(w,b)} = \sum \limits_{i=i}^{m}(y_i -wx_i -b)^2\)(均方误差的几何意义为欧几里得距离)。
将\(E_{(w,b)}\)对\(w\)进行求导,得
将\(E_{(w,b)}\)对\(b\)进行求导,得
然后令\(\frac{\partial E_{(w,b)}}{\partial w}\),\(\frac{\partial E_{(w,b)}}{\partial b}\)=0可得(\(w\)和\(b\)最优解的闭式(closed-form)解)
其中,\(\overline{x} = \frac{1}{m} \sum \limits_{i=1}^{m}x_i\)为x的均值。
所谓“闭式解”(closed-form),即可以通过某个具体的表达式直接解出待解参数。机器学习算法很少有闭式解,线性回归是其他一个特例。
下面先推导式(3.8):
令式(3.5)为零,移项,两边同除以m既可得式(3.8):
接下来推导式(3.7):
令式(3.5)为零,可得
将b的表达式(3.8)代入上式等号右侧,得
此时,即有
移项,整理可得
解上式,即得
多特征线性回归(多元线性回归)
若有数据集D,样本由d个属性描述。
多特征\(f(x_i) = w^{T}x_i + b\),目标\(f(x_i)≈y_i\)
(通常把\(b\)写成\(W_0\)对应的增加一维\(w_0\),值为1)
W代表了什么? \(w_0\)实际上是一种补偿,补偿了目标值的平均值(在训练集上计算的)与基函数的值加权平均值之间的差距,该参数使得数据中可以存在任意固定的偏置。
当输入属性有多个的时候,例如对于一个样本有d个属性\({{x_1,x_2,\cdots,x_d}}\),则\(y=wx+b\)需要写成:
\(y_i = w_1x_{i1} + w_2x_{i2}+ \cdots + w_dx_{id} + b\)
对于多个属性的讨论,通常这时就引入了矩阵表示,矩阵表示可以很简洁地表示出公式,
\(f(x_i) = w^{T}x_i + b\)目标 \(f(x_i)≈y_i\) (通常把\(b写成\)W_0\(对应的增加一维\)w_0$,值为1)
将\(b\)作为\(w\)的一个参数(Andred ng的课程体系中用\(\theta\)来表示,实际意义一样)
多特征\(f(x_i) = w^{T}x_i + b\),
W代表了什么? \(w_0\)实际上是一种补偿,补偿了目标值的平均值(在训练集上计算的)与基函数的值加权平均值之间的差距,该参数使得数据中可以存在任意固定的偏置。
那么就有:
然后对\(\hat w\)求导就可以得到\(w\)矩阵的解:
上式即为Andrew ng给出的解析解(也即不使用梯度下降的算法)(周志华老师在西瓜书里有简单的求解过程)
过程如下:
通常对于多元问题,常常使用矩阵的形式来表示数据。在本问题中,将具有m个样本的数据集表示成矩阵X,将系数w与b合并成一个列向量,这样每个样本的预测值以及所有样本的均方误差最小化就可以写成下面的形式:
将\(w\)和\(b\)合并成一个列向量形式,同时,相应地,把数据集D表示为矩阵X(该矩阵大小为m×(d+1),其中每行对应于一个示例,该行前d个元素对应于示例的d个属性值,最后一个元素恒设置为1)
即有以下:
再把标记也转化为向量形式
则有
我们使用最小二乘法对w和b进行估计,令均方误差的求导等于0,需要注意的是,当一个矩阵的行列式不等于0时,我们才可能对其求逆,因此对于下式,我们需要考虑矩阵(X的转置*X)的行列式是否为0,若不为0,则可以求出其解,若为0,则需要使用其它的方法进行计算,书中提到了引入正则化,此处不进行深入。
令\(E_{\hat w} = (y - X \hat w)^{T}(y - X \hat w)\),对\(\hat w\)求导得到
令上式为零可得\(\hat w\)最优解的闭氏解。
当\(X^{T}X\)为满秩矩阵或正定矩阵时,令上式为零可得:
其中\((X^{T}X)^{-1}\)是矩阵\((X^{T}X)\)的逆矩阵。
令\(\hat w = (X_i;1)\),则最终学得的多元线性回归模型为:
以上,证毕
另一方面,有时像上面这种原始的线性回归可能并不能满足需求,例如:y值并不是线性变化,而是在指数尺度上变化。这时我们可以采用线性模型来逼近y的衍生物,例如将输出标记的对数作为线性模型逼近的目标,即
这称为“对数线性回归”(log-linear regression),它实际上是在试图用\(e^{w^{T}x+b}\)去逼近。上式在形式上仍是线性回归,但实际上已经是在求取输入空间到输出空间的非线性映射。
这时衍生的线性模型如下所示,实际上就是相当于将指数曲线投影在一条直线上,如下图所示:
联系函数与广义线性模型
更一般地,考虑可微函数\(g(\cdot)\),即考虑所有y的衍生物的情形,就得到了“广义线性模型”(generalized linear model),其中,g(*)称为联系函数(link function)。
显然,对数线性回归是广义线性模型\(在g(\cdot) = ln(\cdot)\)时的特例。
式(3.15)的解释
将该式变形为\(g(y) = w^Tx+b\),当\(g(y) = ln y\)时,即为式(3.4)\(ln y = w^T + b\)。
也就是说,线性回归虽然是线性模型,但可以求解\((w,b)\)使\(w^Tx + b\)逼近\(g(y)\),然后可得\(y = g^{-1}(y)\),相当于使用线性回归实现了一个非线性模型。
具体来说,对于数据集\(D = \left\{x_i,y_i\right\}_{i=1}^m\),先将其转化为\(\tilde{D} = \left\{x_i,g(y_i) \right\}_{i=1}^m\),在此函数\(g(\cdot)\)形式已知;
然后根据\(\tilde{D}\)训练一个线性回归模型\((w,b)\);对于未见示例\(x\),线性回归模型输出的预测值为\(g(\hat y) = w^Tx + b\),即\(\hat y = g^{-1}(w^Tx + b)\)。
(二)对数几率回归(Logistic Regression 逻辑回归)
什么是对数几率回归(logistic regression)?
logistic regression,在英语的术语里准确而简洁,但是翻译成中文则有多种译法,例如:逻辑回归(比较常见),对数几率回归(周志华),逻辑斯谛回归(Understanding Machine Learning:From Theory to Algorithms中译本)等等,个人比较喜欢周老师的翻译,从名称中可以看到背后的意义。(后文都采用此译法)
对数几率回归是一种常用于分类(classification)的算法,例如binary classification, multiclass classification等,和 (线性回归)处理连续分布比较而言,对数几率回归处理的是离散的结果分布。
也即给定x和参数\(\theta\)时,y=1的概率。
如何进行对数几率回归?
由推广后的广义线性模型,\(y = g^{-1}(w^{T}x+b)\)可知,若要进行分类任务,则只需找一个单调可微函数将分类任务的真实标记\(y\)与线性回归模型的预测值联系起来便可。
对于二分类(binary classification),其输出标记y∈{0, 1}两种,而线性回归模型产生的预测值\(z = w^{T}x +b\)是实值,为了方便起见,我们通过阶跃函数的对应关系来将实值转换为0 / 1值,可以使用跃迁函数来描述其输出。
形式如下:
也即若预测值\(z\)大于零就判断为正例,小于零则判为反例,预测值为临界值零则可任意判别。
由于这个跃阶函数不连续,为了能在一定程度上近似单位阶跃函数的“替代函数”,并希望它单调可微。我们常用对数几率函数(logistic function)作为替代函数。
形式为
通常我们使用某个连续函数使得\(h(x)\)的结果位于[0,1]之间,而我们选用的就是所谓的\(sigmoid\)函数(也可称为\(logistic\)函数)(这也是为什么称为logistic regression的原因)
下图为\(sigmoid\)函数的曲线
我们可以从图中,看到\(x\)->\(-\infty\)时,\(h(x)\)->0; \(x\)->\(+\infty\)时,\(h(x)\)->1;
那么回顾线性回归中的函数,我们进行\(sigmold\)变换,即可得到对数几率回归(logistic regression)函数
此时,离散的问题已化解为连续的线性回归问题(注意分类(classifcation)的结果是离散的,而这里经过\(sigmold\)变化后的结果是连续的)
进行变换后可得到:
这里直观地理解y(也即\(h(x)\)):
如果作为正例的概率,那么1-y就是反例的概率,两者的比例
就是正反例的比例,称之为“几率”(odds),反映了\(x\)作为正例的相对可能性,取对数则得到“对数几率”(log odds, logit),
而等式右边是线性回归模型的函数,所以\(logistic\)就是在用线性回归的预测结果去逼近真实标记的对数几率。
我们的目标仍然是确定\(y = \frac{1}{1 + e^{-(w^Tx+b)}}\)中的\(w\)和\(b\)。那么根据概率,我们将式(3.18)中的\(y\)视为类后验概率估计\(p(y=1|x)\),则我们可以将等式替换为:
从而根据\(p(y=1|x)\)+\(p(y=0|x)\)=1有:
对\(p(y=1|x)\)有
解释:注意到上文"若将式(3.18)中的\(y\)视为后验概率估计\(p(y=1|x)\)",即\(p(y=1|x)=y\),而\(p(y=0|x)= 1 - y\)。式(3.23)实质上就是对(3.18)的变形。
对\(p(y=0|x)\)有
解释:根据意义,式(3.24)实质上就是1减去(3.23)的结果。
由于这里的数据集满足于某个分布,因此使用“极大似然法”(maximum likelihood method)来估计参数\(w\)和\(b\)。
给定数据集\(\left\{(x_i, y_i)\right\}_{i=1}^m\),对率回归模型最大化”对数似然“(log-likelihood)
解释:由式(3.23)和(3.24)可知\(p(y=1|x)\)和\(p(y=0|x)\)与\((w,b)\)有关。
式(3.25)只是将式(3.23)和式(3.24)换了一种写法,然后将\((w,b)\)放入\(p(y=1|x)\)和\(p(y=0|x)\)之间而已。
即令每个样本属于其真实标记的概率越大越好。
为便于讨论,令\(\beta = (w;b)\),\(\hat x = (x;1)\),则\(w^Tx + b\)可简写为\(\beta^T \hat x\)。
再令\(p_1(\hat x; \beta) = p(y=1|\hat x; \beta)\),\(p_0(\hat x; \beta) = p(y=0|\hat x; \beta) = 1 - p_1(\hat x; \beta)\),则式(3.25)中的似然项可重写为
解释:注意此处的\(y_i\)要么等于0,要么等于1,分别将\(y_i = 0\)和\(y_i =1\)代入即可:
\(p(y_i|x_i; w, b) = \left\{\begin{matrix} p_1(\hat x_i; \beta) \quad y_i = 1 \\ p_0(\hat x_i; \beta) \quad y_i = 0 \\ \end{matrix}\right.\)
将式(3.26)代入(3.25),并根据式(3.23)和(3.24)可知,最大化式(3.25)等价于最小化
推导过程:对于式(3.27),将式(3.23)和式(3.24)代入式(3.26),然后将式(3.26)代入式(3.25),得\(\begin{align} &\ell(w,b) \\ & (1)= \sum \limits_{i=1}^m ln p(y_i|x_i; w,b) \\ & (2)= \sum \limits_{i=1}^m ln(y_i p_1(\hat x_i; \beta) + (1 - y_i)p_0(\hat x_i; \beta)) \\ & (3)= \sum \limits_{i=1}^m ln \left(y_ip_1(\hat x_i; \beta) + (1-y_i)\frac{1}{1 + e^{w^Tx_i + b}}\right) \\ & (4)= \sum \limits_{i=1}^m ln \left(y_i \frac{e^{\beta^T\hat x_i}}{1 + e^{\beta^T \hat x_i}} + (1 - y_i)\frac{1}{1 + e^{\beta^T \hat x_i}} \right) \\ & (5)= \sum \limits_{i=1}^m ln \left(\frac{y_i e^{\beta^T \hat x_i} + (1 - y_i)}{1 + e^{\beta^T\hat x_i}} \right) \\ & (6)= \sum \limits_{i=1}^m \left(ln(y_i e^{\beta^T\hat x_i}+(1-y_i)) - ln(1 + e^{\beta^T\hat x_i}) \right) \\ \end{align}\)
其中,
(1)即为式(3.25)
(2)即式(3.26)代入式(3.25)
(3)即将(3.23)和(3.24)代入
(4)即将\(w^Tx_i+b\)用\(\beta^T \hat x_i\)代替
(5)即进行通分整理
(6)利用对数的性质\(ln(\frac{a}{b}) = ln a = ln b\).
考虑\(y_i \in \left\{0,1\right\}\),分别代入\(y_i = 0\)与\(y_i=1\),对比发现,两者均有\(\ell(w,b) = \sum_{i=1}^m \left(y_i \beta^T \hat x_i - ln(1 + e^{\beta^T \hat x_i}) \right)\)。
最大化式(3.25)的\(\ell(w,b)\)等价于最小化\(-\ell(w,b)\),令\(\ell(\beta) = -\ell(w,b)\),将刚才\(y_i =0\)和\(y_i = 1\)的化简结果代入,得式(3.27)\(\ell (\beta) = -\ell(w,b) \\ = - \sum \limits_{i=1}^m (y_i \beta^T \hat x_i - ln(1 + e^{\beta^T \hat x_i})) \\ = \sum \limits_{i=1}^m \left(-y_i \beta^T \hat x_i + ln(1 + e^{\beta^T\hat x_i})\right)\)
其实式(3.27)的化简结果形式比较别扭,尤其是到了第六章与支持向量机做对比的时候就显得捉襟见肘了,因此将其进一步整理为
\(\ell(\beta) = \left\{\begin{matrix} \sum_{i=1}^m ln(1 + e^{-\beta^T \hat x_i}) \quad if \quad y_i = 1\\ \sum_{i=1}^m ln(1 + e^{\beta^T \hat x_i}) \quad if \quad y_i = 0\\ \end{matrix}\right.\)
使用对数的性质\(ln(a\cdot b) = lna+lnb\)整理后,进而可得
\(\begin{align} &\ell(\beta) = \sum \limits_{i=1}^m \left(-\beta^T \hat x_i + ln(1 + e^{\beta^T\hat x_i}) \right) \\ &= \sum \limits_{i=1}^m \left(ln(e^{-\beta^T\hat x_i}) + ln(1 + e^{\beta^T\hat x_i}) \right) \\ &=\sum \limits_{i=1}^m ln(e^{-\beta^T\hat x_i}(1 + e^{\beta^T\hat x_i})) \\ &= \sum \limits_{i=1}^m ln(1 + e^{-\beta^T\hat x_i}) \end{align}\)
这样变形后的好处在于,若正例标记仍然用\(y_i = 1\)表示,而反例标记换用\(y_i = -1\)表示,此时可将这种形式统一写为:
\(\ell (\beta) = \sum \limits_{i=1}^m ln(1 + e^{-y_i \beta^T \hat x_i})\)
而这几乎就是对率损失函数。
观察上式(3.27)是关于\(\beta\)的高阶可导连续凸函数,根据凸优化理论,经典的数值优化算法梯度下降法(gradient descent method)、牛顿法(Newton method)等都可求得最优解,于是就得到
这里以牛顿法为例,其第\(t+1\)轮迭代解的更新公式为
说明:式(3.29)其实就是牛顿法的迭代公式;需要注意的是,这里的“牛顿法”是无约束最优化方法中的一种,而不是求解方程\(f(x) = 0\)的根的牛顿迭代。不同于梯度下降法只需目标函数的一阶导数信息,牛顿法需要目标函数的二阶导数信息。
以下根据《最优化方法》(第二版),简单说明牛顿法原理。
设\(f(x)\)二次连续可微,\(x_k \in \mathbb{R}^n\),\(hesse\)矩阵\(\nabla^2f(x_k)\)正定。我们在\(x_k\)附近用二次泰勒展开近似\(f(x)\),\(f(x) \approx f(x_k) + \nabla f(x_k)^T(x - x_k) + \frac{1}{2}(x - x_k)^T \nabla^2f(x_k)(x - x_k)\)
若令\(s = x - x_k\)(自变量迭代增量,即\(x = x_k + s\)),则上式变为
\(f(x_k + s) \approx f(x_k) + \nabla f(x_k)^T s + \frac{1}{2} s^T \nabla^2 f(x_k)s\)
令\(q^k(s) = f(x_k) + \nabla f(x_k)^T s + \frac{1}{2} s^T \nabla^2 f(x_k) s\)为\(f(x)\)的二次近似,求解自变量迭代增量\(s\)使\(q^{k}(s)\)极小化,即对\(q^k(s)\)求导并令导数等于零:
\(\nabla q^k(s) = \nabla f(x_k) + \nabla^2 f(x_k)s = 0\)
解得 \(s = -[\nabla^2 f(x_k)]^{-1} \nabla f(x_k)\).
代入\(x = x_k + s\)可得迭代公式 \(x_{k+1} = x_k - [\nabla^2 f(x_k)]^{-1} \nabla f(x_k)\).
对应到式(3.29)中
\(\beta^t = x_k ,\\ \left[\nabla^2 f(x_k) \right]^{-1} = \left(\frac{\partial \ell(\beta)}{\partial \beta \partial \beta^T} \right)^{-1} \\ \nabla f(x_k) = \frac{\partial \ell(\beta)}{\partial \beta}\)
其中关于\(\beta\)的一阶、二阶导数分别为
推导过程:
先推导(3.30)
最后一步即将式(3.23)中\(w^Tx_i + b\)用$\beta^T \hat x_i $代替,代入即可。
推导(3.31)过程如下:
其中第一项偏导\(\frac{\partial y_i}{\partial \beta^T} = 0\),
第二项偏导
将两项偏导结果代入,
为什么要进行对数几率回归**?
对数几率回归是因为比较简单,常用于分类(classification),例如email spamming,癌症检测等学习问题上。通过\(sigmold\)变换后给出的结果分布是连续的,因而可以得到相应的概率值,从而可以给出一个该类型的结果(more explainable),例如明天的降水概率,癌症的概率等。
使用对数几率回归模型作为分类方法有很多优点,
- 其一是,它直接对分类可能性进行建模,无需事先假设数据分布,这样就避免了假设分布不准确所带来的问题;
- 其二是,它不是仅预测出“类别”,而是可得到近似概率预测,这对许多需利用概率辅助决策的任务很有用;
- 其三是,对率函数是任意阶可导的凸函数,有很好的数学性质,现有的许多数值优化算法都可直接用于求取最优解。
对数几率回归(逻辑回归)的优缺点
优点:
- 它不仅预测类别,而且可以得到近似概率预测,这对许多概率辅助决策的任务很有用;
- 可以适用于连续性和类别性自变量;
- 容易使用和解释;
- 它是直接对分类可能性建模,无需事先假设数据分布,这样就避免了假设分布不准确所带来的问题;
- 对数几率函数是任意阶可导凸函数,有很好的数学性质,现有许多的数值优化算法都可以直接用于求取最优解。
- 它不是仅预测出“类别”,而是可得到近似概率预测,这对许多需利用概率辅助决策的任务很有用
缺点:
1)对模型中自变量多重共线性较为敏感,例如两个高度相关自变量同时放入模型,可能导致较弱的一个自变量回归符号不符合预期,符号被扭转。需要利用因子分析或者变量聚类分析等手段来选择代表性的自变量,以减少候选变量之间的相关性;
2)预测结果呈“S”型,因此从log(odds)向概率转化的过程是非线性的,在两端随着log(odds)值的变化,概率变化很小,边际值太小,slope太小,而中间概率的变化很大,很敏感。 导致很多区间的变量变化对目标概率的影响没有区分度,无法确定阀值。
(三)线性判别分析LDA
3.1 LDA概述
线性判别分析(Linear Discriminant Analysis,简称LDA),是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的,这点和主成分分析(Principal components analysis,以下简称PCA)不同。PCA是不考虑样本类别输出的无监督降维技术。
我们对线性判别分析来进行理解辨析:
首先,应该弄清楚线性判别的功能:可以认为线性判别分析同对数几率回归(logistic regression)一样,也是一种二分类算法。对数几率回归在训练集上学得预测模型\(y = \frac{1}{1 + e^{-(w^Tx + b)}}\).对于新样本\(x\),将\(x\)代入以上预测模型得到一个\(y\)值,若\(y > 0.5\)判为正例,反之判为反例;
线性判别分析首先在训练集上学得预测模型\(y = w^Tx\)。
训练集中的每一个\(x\)均由此模型均对应一个\(y\)(这里的\(y\)其实是\(x\)在直线\(w\)上的投影),线性判别分析能够保证训练集的同类样本在\(w\)上的投影\(y\)很近,而异类样本在\(w\)上的投影\(y\)很远。对于新样本\(x\),首先得到它在直线\(w\)上的投影,然后判别这个投影与哪一类投影更近,则得到\(x\)的预测类别。
最后,需要清楚的是,线性判别分析也是一种降维方法,但不同于无监督降维方法,线性判别分析是一种监督降维方法,即降维过程需要样本类别信息。
其基本思想是:将训练样本投影到一条直线上,使得同类的样例尽可能近,不同类的样例尽可能远。
LDA的思想简单地用一句话概括,就是“投影后类内方差最小,类间方差最小”,我们要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别。
如图所示:
假设有两类数据,分别为红色和蓝色,如下图所示,这些数据特征是二维的,希望将这些数据投影到一维的一条直线,让每一种类别数据的投影点尽可能的接近,而红色和蓝色数据中心之间距离尽可能的大。
上图中提供了两种投影方式,哪一种能更好的满足我们的标准呢?
从直观上可以看出,右图要比左图的投影效果好,因为右图的黑色数据和蓝色数据各个较为集中,且类别之间的距离明显。左图则在边界处数据混杂。以上就是LDA的主要思想了,当然在实际应用中,数据是多个类别的,我们的原始数据一般也是超过二维的,投影后的也一般不是直线,而是一个低维的超平面。
给定数据集\(D = \left\{(x_i,y_i) \right\}_{i=1}^m, y \in \left\{0,1\right\}\),令\(X_i、\mu_i、\sum_i\)分别表示第\(i \in \left\{0,1 \right\}\)类示例的集合、均值向量、协方差矩阵。若将数据投影到直线\(\omega\)上,则两类样本的中心在直线上的投影分别为\(w^T\mu_0\)和\(w^T\mu_1\);
若将所有样本点都投影到直线上,则两类样本的协方差分别为\(w^T\sum_0\omega\)和\(w^T\sum_1 w\)。
由于直线是一维空间,因此\(w^T \mu_0、w^T\mu_1、w^t\sum_0 w\)和\(w^T\sum_1 w\)均为实数。
想让同类样本点的投影点尽可能接近,不同类样本点投影之间尽可能远,即:让各类的协方差之和尽可能小,不用类之间中心的距离尽可能大。
基于这样的考虑,LDA定义了两个散度矩阵。
-
类内散度矩阵(within-class scatter matrix)
\[S_w = ∑_0 + ∑_1 \\ = \sum \limits_{x \in X_0}(x - \mu_0)(x - \mu_0)^T + \sum \limits_{x \in X_1} (x - \mu_1)(x - \mu_1)^T \] -
类间散度矩阵(between-class scaltter matrix)
\[S_b = (\mu_0 - \mu_1)(\mu_0 - \mu_1)^T \]
因此得到了LDA的最大化目标:“广义瑞利商”(generalized Rayleigh quotient)。
注意:由于(3.35)的分子和分母都是关于\(w\)的二次项,因此其解只与方向有关,而与长度无关。
从而分类问题转化为最优化求解w的问题,当求解出w后,对新的样本进行分类时,只需将该样本点投影到这条直线上,根据与各个类别的中心值进行比较,从而判定出新样本与哪个类别距离最近。
求解w的方法如下所示,使用的方法为λ乘子。
不失一般性,令\(w^TS_w w = 1\),则式(3.35)等价于
又由拉格朗日乘子法,上式等价于
其中,\(\lambda\)是拉格朗日乘子。
注意到\(S_b w\)的方向恒为\(\mu_0 - \mu_1\),不妨令
代入上式(3.37)即得
考虑到数值的稳定性,在实践中通常是对\(S_w\)进行奇异值分解,即\(S_w = U \sum V^T\),这里\(\sum\)是一个实对角矩阵,其对角线上的元素是\(S_w\)的奇异值,然后再由\(S_w^{-1} = V \sum^{-1}U^{T}\)得到\(S_{w}^{-1}\)。
这里值得一提的是,LDA可从贝叶斯决策理论的角度来阐释,并可证明,当两类数据同验、满足高斯分布且协方差相等时,LDA可达到最优分类。
若将w看做一个投影矩阵,类似PCA的思想,则LDA可将样本投影到N-1维空间(N为类簇数),投影的过程使用了类别信息(标记信息),因此LDA也常被视为一种经典的监督降维技术。
3.2 LDA与PCA
LDA用于降维,和PCA有很多相同,也有很多不同的地方,因此值得好好的比较一下两者的降维异同点。
相同点
1)两者均可以对数据进行降维。
2)两者在降维时均使用了矩阵特征分解的思想。
3)两者都假设数据符合高斯分布。
不同点
1)LDA是有监督的降维方法,而PCA是无监督的降维方法
2)LDA降维最多降到类别数k-1的维数,而PCA没有这个限制。
3)LDA除了可以用于降维,还可以用于分类。
4)LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。这点可以从下图形象的看出,在某些数据分布下LDA比PCA降维较优。
当然,某些某些数据分布下PCA比LDA降维较优,如下图所示:
3.3 LDA原理与流程
给定数据集合\(\left\{(x_i,y_i)\right\}_{i=1}^m\),
第\(i\)类示例的集合\(X_i\).
第\(i\)类示例的协方差矩阵\(\sum_i\).
两类样本的中心在直线上的投影:\(w^T\mu_0\)和\(w^T\mu_1\).
两类样本的协方差:\(w^T \sum_0 w\)和\(w^T\sum_1 w\).
同类样例的投影点尽可能接近\(\to w^T\sum_0 w + w^T \sum_1 w\)尽可能小.
异类样例的投影点尽可能远离\(\to ||w^T\mu_0 - w^T\mu_1||_2^2\)尽可能大.
于是最大化
LDA的目标:最大化广义瑞利商(generalized Rayleigh quotient)
其中,\(w\)成倍缩放不影响\(J\)值,仅考虑其方向。
令\(w^TS_ww=1\),最大化广义瑞利商等价形式为
运用拉格朗日乘子法,有\(S_bw = \lambda S_w w\).
\(S_bw\)的方向恒为\(\mu_o - \mu_1\),不妨令\(S_bw = \lambda(\mu_0-\mu_1)\),
于是有\(w = S_w^{-1}(\mu_0 - \mu_1)\).
实践中通常是进行奇异值分解\(S_w = U∑V^T\),然后\(S_w^{-1} = V\sum^{-1}U^{T}\).
假定有N个类
- 全局散度矩阵 \(S_t = S_b + S_w = \sum \limits_{i=1}^m (x_i - \mu)(x_i - \mu)^T\).
- 类内散度矩阵 \(S_w = \sum \limits_{i=1}^N S_{w_i}\),\(S_{w_i} = \sum \limits_{x \in X_i}(x - \mu_i)(x - \mu_i)^T\).
- 类间散度矩阵 \(S_b = S_t - S_w = \sum \limits_{i=1}^N m_i(\mu_i - \mu)(\mu_i - \mu)^T\).
多分类LDA有多种实现方法:采用\(S_b,S_w,S_t\)中的任何两个。
例如,\(\max \limits_{W} \frac{(W^T S_b W)}{(W^TS_w W)} \to S_b W = \lambda S_w W\).\(w \in \mathbb{R}^{d×(N-1)}\).
\(w\)的闭式解是\(S_w^{-1}S_b\)的N-1个最大广义特征值所对应的特征向量组成的矩阵。
3.4 LDA小结
LDA算法既可以用来降维,又可以用来分类,但是目前来说,主要还是用于降维。在进行图像识别相关的数据分析时,LDA是一个有力的工具。
下面总结下LDA算法的优缺点。
优点
1)在降维过程中可以使用类别的先验知识经验,而像PCA这样的无监督学习则无法使用类别先验知识。
2)LDA在样本分类信息依赖均值而不是方差的时候,比PCA之类的算法较优。
缺点
1)LDA不适合对非高斯分布样本进行降维,PCA也有这个问题。
2)LDA降维最多降到类别数k-1的维数,如果我们降维的维度大于k-1,则不能使用LDA。当然目前有一些LDA的进化版算法可以绕过这个问题。
3)LDA在样本分类信息依赖方差而不是均值的时候,降维效果不好。
4)LDA可能过度拟合数据。
(四)多分类学习
我们在前面的讨论中涉及的分类学习方法是二分类学习方法,但现实情况中常遇到多分类学习任务,有些二分类学习方法可直接推广到多分类,但在更多情形下,我们是基于一些基本策略,利用二分类学习器来解决多分类问题。
不失一般性,考虑N个类别\(C_1,C_2,...,C_N\),多分类学习的基本思路是“拆解法”,即将多分类任务拆分成若干个二分类任务求解。具体来说,先对问题进行拆分,然后为拆出的每个二分类任务训练一个分类器;在测试时,对这些分类器的预测结果进行集成以获得最终的多分类结果。这里的关键是如何对多分类任务进行拆分,以及如何对多个分类器进行集成。
下面介绍将多分类任务拆分为若干个二分类任务的拆分策略:
最经典的拆分策略有三种:
-
“一对一”(One vs. One,简称OvO)
-
“一对其余”(One vs. Rest,简称OvR)
-
“多对多”(Many vs. Many,简称MvM)
我们基于给定数据集\(D = \left\{(x_1,y_1), (x_2,y_2),...,(x_m,y_m \right\},y_i \in \left\{C_1,C_2,...,C_N \right\}\)做下面的讨论。
\(OvO\)将这N个类别两两配对,从而产生\(N(N-1)/2\)个二分类任务,例如\(OvO\)将为区分类别\(C_i\)和\(C_j\)训练一个分类器,该分类器把数据集\(D\)中的\(C_i\)类样例作为正例,\(C_j\)类样例作为反例。
在测试阶段,新样本将同时提交给所有分类器,于是我们将得到\(N(N-1)/2\)个分类结果,最终结果可通过投票产生:即把被预测得最多的类别作为最终分类结果。
\(OvR\)则是每次将一个类的样例作为正例、所有其他类的样例作为反例来训练\(N\)个分类器。在测试时若仅有一个分类器预测为正类,则对应的类别标记作为最终分类结果。
若有多个分类器预测为正类,则通常考虑各分类器的预测置信度,选择置信度最大的类别标记作为分类结果。
图3.4的解释
左图为\(OvO\),共产生\(\frac{4×(4-1)}{2} = 6\)个二分类任务,其中\(C1\)得1票,\(C2\)得1票,\(C3\)得3票,\(C4\)得0票,因此预测为\(C3\)(把预测得最多的类别作为最终分类结果)。
有图为\(OvR\),共产生4个二分类任务,其中\(C_3\)预测为正类,因此预测为\(C3\)。
容易看出,\(OvR\)只需训练\(N\)个分类器,而\(OvO\)需训练\(N(N-1)/2\)个分类器,因此,\(OvO\)的存储开销和测试时间开销通常比\(OvR\)更多。但在训练时,\(OvR\)的每个分类器均使用全部训练样例,而\(OvO\)的每个分类器仅用到两个类的样例,因此,在类别很多时,\(OvO\)的训练时间开销通常比\(OvR\)更小。
至于预测性能,则取决于具体的数据分布,在多数情形下两者差不多。
\(MvM\)是每次将若干个类作为正类,若干个其他类作为反类。显然,\(OvO\)和\(OvR\)是\(MvM\)的特例。\(MvM\)的正、反类构造必须有特殊的设计,不能随意选取。
这里我们介绍一种最常用的\(MvM\)技术:“纠错输出码”(Error Correcting Output Codes,简称ECOC)。
ECOC是将编码的思想引入类别拆分,并尽可能在解码过程中具有容错性。
ECOC工作过程主要分为两步:
- 编码:对N个类别做M次划分,每次划分将一部分类别划为正类,一部分划分反类,从而形成一个二分类训练集;这样一共产生M次训练集,可训练出\(M\)个分类器。
- 解码:M个分类器分别对测试样本进行预测,这些预测标记组成一个编码。将这个预测编码与每个类别各自的编码进行比较,返回其中距离最小的类别作为最终预测结果。
类别划分通过“编码矩阵”(coding matrix)指定。
编码矩阵有多种形式,常见的主要有二元码和三元码。前者将每个类别分别指定为正类和反类,后者在正、反类之外,还可指定“停用类”。
下图给出一个示意图,在图3.5(a)中,分类器\(f_2\)将\(C_1\)类和\(C_3\)类的样例作为正例,\(C_2\)类和\(C_4\)类的样例作为反例;
在图3.5(b)中,分类器\(f_4\)将\(C_1\)类和\(C_4\)类的样例作为正例,\(C_3\)类的样例作为反例。
在解码阶段,各分类器的预测结果联合起来形成了测试示例的编码,该编码与各类所对应的编码进行比较,将距离最小的编码所对应的类别作为预测结果。
例如在图3.5(a)中,若基于欧氏距离,预测结果将是\(C_3\)。
对于图3.5解释
先解释图(a),在五个二分类器中,\(C_1\)类样本分别被指定为反类、正类、反类、正类、正类,
\(C_2\)类样本中分别被指定为正类、反类、反类、正类、反类,
\(C_3\)类样本中分别被指定为反类、正类、正类、反类、正类,
\(C_4\)类样本中分别被指定为反类、反类、正类、正类、反类。
而测试示例被五个二分类器分别预测为正类、反类、正类、反类、正类。
其中与\(C_1 \sim C_4\)类样本在五个二分类器中的角色谁最接近呢?
直观地看,应该是\(C_3\)类,因为只有\(f_2\)对测试示例的预测输出(反类)与\(C_3\)类样本在\(f_2\)训练时充当的角色(正类)不同,其余四个分类器对测试示例的输出均与\(C_3\)类样本在相应分类器训练时充当的角色相同。图(b)与图(a)唯一的不同是有停用类,即三元码。
上面解释图(a)中测试样本的类别时判断为\(C_3\)类,实际用的是海明距离。
所谓海明距离,即两个码对应位置不相同的个数,如图(a)中第1行为{-1,+1,-1,+1,+1},测试示例一行为{-1,-1,+1,-1,+1},其中第2个、第3个、第4个元素不相同,所以它们的海明距离为3;
同理第2行与测试示例一行除第2个元素不同,因此海明距离为1;
第4行与测试示例一行第4个、第5个元素不相同,所以它们的海明距离是2;
即第3行与测试示例一行的海明距离最小,因此预测结果将是\(C_3\)类;
在图(b)中新增了停用类,此时海明距离对应加0.5,其余与图(a)相同。
欧式距离即对应位置相减再平方,求和后再开方就是了,即差向量的2范数。
这里对于ECOC存在一个疑问,即为什么ECOC称为“纠错输出码”呢?
这是因为在测试阶段,ECOC编码对分类器的错误有一定的容忍和修正能力。
例如图3.5(a)中测试示例的正确预测编码是(-1,+1,+1,-1,+1),假设在预测时某个分类器出错了,例如\(f_2\)出错从而导致了错误编码(-1,-1,+1,-1,+1),但基于这个编码仍能产生正确的最终分类结果\(C_3\)。
一般来说,对同一个学习任务,ECOC编码越长,纠错能力越强。然而,编码越长,就意味着所需训练的分类器越多,进而计算、存储的开销都会增大;另一方面,对有限类别数,可能的组合数目是有限的,码长超过一定范围后就失去了意义。
理解:上面提到“对有限类别数,可能的组合数目是有限的,码长超过一定范围后就失去了意义。”,比如对于图3.5(a),最大的组合数为\(2^4 - 2 = 14\)种,其中\(2^4\)指每种类均有正类和反类两种可能,减2意味着\(C_1 \sim C_4\)不能全是正类或反类。
对同等长度的编码,理论上来说,任意两个类别之间的编码距离越远,则纠错能力越强。因此,在码长较小时可根据这个原则计算出理论最优编码。然而,码长稍大一些就难以有效地确定最优编码,事实上这是NP难问题。不过通常我们并无需获得理论最优编码,因为非最优编码在实践中往往已能产生足够好的分类器。另一方面,并不是编码的理论性质越好,分类性能就越好,因为机器学习问题涉及很多因素,例如将多个类拆解为两个“类别子集”,不同拆解方式所形成的两个类别子集的区分难度往往不同,即其导致的二分类问题的难度不同;
于是,一个理论纠错性质很好、但导致的二分类问题较难的编码,与另一个理论纠错性质差一些、但导致的二分类问题较简单的编码,最终产生的模型性能熟强输弱很难说。
(五)类别不平衡问题
这里简单做个总结回顾,我们在前面介绍和讨论的分类学习方法都有一个共同的基本假设,即不同类别的训练样例树目相当。如果不同类别的训练样例数目稍有差不多,通常影响不大,但若差别很大,则会对学习过程造成困扰。对类别平衡问题,性能度量“精度”并不能满足该特殊任务的需求。例如有一组1000个数据的数据集,其中有998个反例,但正例只有2个,那么学习方法只需返回一个永远将新样本预测为反例的学习器,就能达到99.8%的精度;然而这样的学习器往往没有价值,因为它不能预测为任何正例。
类别不平衡(class-imbalance)就是指分类任务中不同类别的训练样例数目差别很大的情况。不失一般性,假定正类样例较少,反类样例较多。在现实的分类学习任务中,我们经常会遇到类别不平衡,例如在通过拆分法解决多分类问题时,即使原始问题中不同类别的训练样例数目相当,在使用\(OvR、MvM\)策略后产生的二分类任务仍可能出现类别不平衡现象,因此有必要了解类别不平衡性处理的基本方法。
理解:上文提到了OvR、OvM策略产生的二分类任务可能出现类别不平衡现象,而边注中特别提到“对OvR、OvM来说,由于对每个类进行了相同的处理,其拆解出的二分类任务中类别不平衡的影响会相互抵消,因此通常不需专门处理”。举个例子帮助理解,若对于0~9数字的10分类问题,各类样本占总样本数的十分之一,针对每类样本实施OvR时,它们面临的都是1:9的不平衡分类,轮流一圈后大家遭受的不平衡待遇实际是一样的。
为方便理解,我们不妨从线性分类器的角度进行讨论,在我们用\(y = w^Tx + b\)对新样本\(x\)进行分类时,事实上是在用预测出\(y\)值与一个阈值进行比较,例如通常在\(y > 0.5\)时判别为正例,否则为反例。\(y\)实际上表达了正例的可能性,几率\(\frac{y}{1-y}\)则反映了正例可能性与反例可能性之比值,阈值设置为0.5恰表明分类器认为真实正、反例可能性相同,即分类器决策规则为
然而,当训练集中正、反例的数目不同时,令\(m^{+}\)表示正例数目,\(m^{-}\)表示反例数目,则观测几率是\(\frac{m^{+}}{m^{-}}\),由于我们通常假设训练集是真实样本总体的无偏采样,因此观测几率就代表了真实几率。于是,只要分类器的预测几率高于观测几率就应判定为正例,即
但是,我们的分类器是基于式(3.46)进行决策,因此,需对其预测值进行调整,使其在基于式(3.46)决策时,实际是在执行式(3.47)。要做到这一点很容易,只需令
再缩放的思想虽简单,但实际操作却并不平凡,主要因为“训练集是真实样本总体的无偏采样”这个假设往往并不成立,也就是说,我们未必能有效地基于训练集观测几率来推断真实几率。
对于这个问题的解决,目前现有技术大体有三类做法:
- 第一类是,直接对训练集里的反类样例进行“欠采样”(undersampling),即去除一些反例使得正、反例数目接近,然后再进行学习;
- 第二类是,对训练集里的正类样例进行“过采样”(oversampling),即增加一些正例使得正、反例数目接近,然后再进行学习;
- 第三类是,直接基于原始训练集进行学习,但在用训练好的分类器进行预测时,将式(3.48)嵌入到其决策过程中,称为“阈值移动”(threshold-moving)。
其中,“欠采样法”的时间开销通常远小于“过采样法”,因为前者丢弃了很多反例,使得分类器训练集远小于初始训练集,而“过采样法”增加了很多正例,其训练集大于初始训练集。
需注意的是,过采样法的代表性算法SMOTE是通过对训练集里的正例进行插值来产生额外的正例。另一方面,欠采样法若随机丢弃反例,可能丢失一些重要信息;
欠采样法的代表性算法EasyEnsemble则是利用集成学习机制,将反例划分若干个集合供不同学习器使用,这样对每个学习器来看都进行欠采样,但在全局来看却不会丢失重要信息。
值得一提的是,“再缩放”也是“代价敏感学习”(cost-sensitive learn-ing)的基础。在代价敏感学习中式(3.48)中的\(\frac{m^{-}}{m^{+}}\)用\(\frac{cost^{+}}{cost^{-}}\)代替即可,其中\(cost^{+}\)是将正例误分为反例的代价,\(cost^{-}\)是将反例误分为正例的代价。
————————————————
参考材料:
[1] 周志华[机器学习]
[2] 博主「zlinzju」原文链接
[3] 朱涛 机器学习之线性回归原文链接
[4] 朱涛 机器学习之对数几率回归 原文链接
[5] 线性判别分析 原文链接