线性模型

“种一棵树最好的时间是十年前,其次是现在”

1 线性回归

线性回归是最简单的机器学习模型。尝试通过样本属性的线性组合完成对样本的预测。

假设样本 x = { x 1 , x 2 , ⋯   , x d } x = \{x_1,x_2,\cdots,x_d\} x={x1,x2,,xd},线性回归尝试通过下述式子完成对样本的预测:
f ( x ) = w 1 x 1 + w 2 x 2 + ⋯ + w d x d + b f(x) = w_1x_1 + w_2x_2 + \cdots + w_dx_d + b f(x)=w1x1+w2x2++wdxd+b
向量化表示为 f ( x ) = w T x + b f(x) = w^Tx + b f(x)=wTx+b,w是权重向量,b是偏置项。

线性回归中的权重w很直接的表示了样本各属性在预测中的重要性,模型具有很强的可解释性。权重越大,表示该属性对预测结果的影响越大。
线性模型虽然简单,但可在其基础上引入层级结构或者高维映射可以得到非线性模型。

定义了线性回归的形式,我们也需要定义一个损失函数对模型的拟合能力进行评价,即评估 f ( x ) f(x) f(x)与y之间的接近程度。

线性回归的损失函数定义为:
J ( w , b ) = 1 2 ∑ i = 1 m ( ( w T x ( i ) + b ) − y ( i ) ) 2 J(w,b) = \frac{1}{2}\sum_{i=1}^{m}((w^Tx^{(i)}+b) - y^{(i)})^2 J(w,b)=21i=1m((wTx(i)+b)y(i))2

那么,线性回归模型训练的目的是基于当前的训练集,最小化损失函数值,从而找到最优的w和b。即线性回归学得的模型为:
( w ∗ , b ∗ ) = a r g m i n ( w , b ) J ( w , b ) (w^*,b^*) = argmin_{(w,b)}J(w,b) (w,b)=argmin(w,b)J(w,b)
上面定义的损失函数为训练集样本的均方误差,均方误差也叫作欧式距离。

基于均方误差最小化进行模型求解的方法叫作最小二乘法。在线性回归中,最小二乘法的目的是找到一条直线,使得所有样本到直线上的欧氏距离之和最小。

2 最小二乘法

最小二乘法中估计参数w和b的过程叫作参数估计,梯度下降法是最常用的参数估计方法。

2.1 梯度下降法

梯度下降法的基本思想是:对于待估计的参数,首先选定初始值,然后按照某种设定的规则持续改变参数以减小损失函数的值,直至最后收敛得到损失函数最小时的参数值。

梯度下降法中参数更新的方向是沿着梯度的反方向进行更新。因为已知梯度总是指向函数上升最快的方向,因此梯度的反方向总是指向函数最快下降的方向,沿着函数在当前位置梯度的反方向移动,可以保证函数总是以最快的速度接近最小值。

将w和b连接成单一向量,表示为 θ \theta θ。将分类模型 h ( w , b ) h(w,b) h(w,b)表示成 h θ ( x ) h_{\theta}(x) hθ(x)。那么梯度下降法的更新规则为:
θ j : = θ j − α ∂ θ j J ( θ ) \theta_j := \theta_j - \alpha \frac{\partial}{\theta_j}J(\theta) θj:=θjαθjJ(θ)
α \alpha α称之为学习率,表示沿当前梯度反方向移动步长的大小。
∂ θ j J ( θ ) = ∂ θ j 1 2 ∑ i = 1 m ( θ T x ( i ) − y ( i ) ) 2 = ∑ i = 1 m ( θ T x ( i ) − y ( i ) ) ∗ ∂ θ j ∑ i = 1 m ( θ T x ( i ) − y ( i ) ) = ∑ i = 1 m ( θ T x ( i ) − y ( i ) ) ∗ ∑ i = 1 m x j ( i ) = ( h θ ( x ) − y ) ∗ x j \frac{\partial}{\theta_j}J(\theta) = \frac{\partial}{\theta_j}\frac{1}{2}\sum_{i=1}^{m}(\theta^Tx^{(i)}-y^{(i)})^2 \\ =\sum_{i=1}^{m}(\theta^Tx^{(i)}-y^{(i)})* \frac{\partial}{\theta_j}\sum_{i=1}^{m}(\theta^Tx^{(i)}-y^{(i)}) \\ =\sum_{i=1}^{m}(\theta^Tx^{(i)}-y^{(i)})*\sum_{i=1}^{m}x_j^{(i)} \\ =(h_{\theta}(x) - y) * x_j θjJ(θ)=θj21i=1m(θTx(i)y(i))2=i=1m(θTx(i)y(i))θji=1m(θTx(i)y(i))=i=1m(θTx(i)y(i))i=1mxj(i)=(hθ(x)y)xj

那么,梯度下降法的更新规则为:
这里写图片描述

梯度下降法的更新规则也有一个直观的解释,即更新量的幅值与误差的大小成正比。如果基于当前的参数w和b对当前这一个训练样本的预测结果与真实值较接近,也就是误差项 ( y ( i ) − h θ ( x ( i ) ) ) (y^{(i)}-h_{\theta}(x^{(i)})) (y(i)hθ(x(i)))很小,那么当前参数需要改变的幅度就比较小;反之,则需要对参数进行较大幅度的改变。

梯度下降法根据每次更新时基于的样本数量的不同,又分为批梯度下降法和随机梯度下降法。

2.1.1 批梯度下降法

这里写图片描述
批梯度下降法,每次都基于全体的训练样本完成一次参数的更新。批梯度下降法计算量大,更新速度慢,但在更新过程中不易产生震荡。

2.1.2 随机梯度下降法

这里写图片描述
每次参数的更新都是基于单个样本进行的。随机梯度下降法,更新速度快,但容易在最优解附近产生震荡。

2.1.3 总结

梯度下降法是最常用的迭代优化算法,由于损失函数的最优解往往不止一个,因此梯度下降法往往很难真正的收敛到最小值,但一般认为,经过梯度下降法的迭代之后往往可以收敛到近似最小值的位置,此时得到的模型也具有非常良好的分类性能。

2.2 从矩阵的角度再来看下最小二乘法

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

第三步是基于实数的迹仍然为该实数;第四步是基于 t r A = t r A T tr A = tr A^T trA=trAT及实数关于参数的导数为0;第五步是基于下式:
这里写图片描述
A = θ T , B = X T X , C = I A = \theta^T,B=X^TX,C=I A=θT,B=XTX,C=I可得第五个式子的前两项。
基于式子 ∇ A t r A B = B T \nabla _{A} trAB = B^T AtrAB=BT可得第五个式子的第三项。(备注: Y = A X , d Y d X = A ; Y = X A , d Y d X = A T ; Y = A T X B , d Y d X = A B T ; Y = A T X T B , d Y d X = B A T Y=AX,\frac{dY}{dX}=A;Y=XA,\frac{dY}{dX}=A^T;Y=A^TXB,\frac{dY}{dX}=AB^T;Y=A^TX^TB,\frac{dY}{dX}=BA^T Y=AX,dXdY=A;Y=XA,dXdY=AT;Y=ATXB,dXdY=ABT;Y=ATXTB,dXdY=BAT)。
令导数为0,可得 θ \theta θ的闭合解为:
θ = ( X T X ) ( − 1 ) X T y \theta = (X^TX)^{(-1)}X^Ty θ=(XTX)(1)XTy

上面的闭合解是基于 X T X X^TX XTX是一个满秩矩阵,即 X T X X^TX XTX可逆,但是在样本的特征数n大于样本数m时, r a n k ( X ) , r a n k ( X T ) ≤ m i n ( m , n ) ≤ m rank(X),rank(X^T) \leq min(m,n) \leq m rank(X),rank(XT)min(m,n)m r a n k ( X T X ) ≤ m i n ( r a n k ( X ) , r a n k ( X T ) ) ≤ m rank(X^TX) \leq min(rank(X),rank(X^T)) \leq m rank(XTX)min(rank(X),rank(XT))m,但 X T X ∈ R n × n X^TX \in R^{n\times n} XTXRn×n,因此此时 X T X X^TX XTX一定不可逆,此时可以解出多个参数使得均方误差最小化,选择哪一个解作为输出将由学习算法的归纳偏好决定,常见的做法是使用正则化。

2.3 选用平方和为损失函数的概率解释

假设对于线性回归,输入与输出之间的关系为:
y ( i ) = θ T x ( i ) + ϵ ( i ) y^{(i)} = \theta^Tx^{(i)} + \epsilon^{(i)} y(i)=θTx(i)+ϵ(i)
ϵ ( i ) \epsilon^{(i)} ϵ(i)表示未考虑到的特征或随机噪声。假设 ϵ ( i ) \epsilon^{(i)} ϵ(i)是独立同分布的,符合均值为0,方差为 σ 2 \sigma^2 σ2的高斯分布,即 ϵ ( i ) \epsilon^{(i)} ϵ(i) ~ N ( 0 , σ 2 ) N(0,\sigma^2) N(0,σ2)。那么,误差项的概率密度函数为:
这里写图片描述

这里写图片描述

θ \theta θ不是随机变量。
定义 θ \theta θ的似然函数为 L ( θ ) = L ( θ ; X , y ) = p ( y ∣ X ; θ ) L(\theta) = L(\theta;X,y) = p(y|X;\theta) L(θ)=L(θ;X,y)=p(yX;θ)
这里写图片描述

最大化该似然函数,由于对数函数为严格增函数,不改变函数取极值点的位置,且取对数之后,连乘变连加,避免了参数下溢也易于计算,因此定义似然函数为:
这里写图片描述

最大化似然函数即最小化误差的平方和,即
这里写图片描述

总结:基于误差项符合高斯分布的假设,最小化样本集误差的平方和即最大化参数的似然概率。也就是说最小化训练集的误差平方和即得到了出现可能性最大的线性回归模型,也就证明了将误差项的平方和作为损失函数的合理性。

3 局部加权线性回归

普通线性回归:
这里写图片描述

局部加权线性回归:
这里写图片描述

局部加权线性回归相比于普通的线性回归,就是在拟合每一个样本的过程中添加了一个权重系数,如果对某一个样本,权重系数很大,则很难最小化误差的平方,反之,则较易实现。

对于权重项的一个合理的假设是:
这里写图片描述

式子中的 x ( i ) x^{(i)} x(i)表示训练集中的各训练样本,x表示当前的测试样本。因此,若训练集中的样本与当前的测试样本很类似,则权重值为1,影响越大;否则,两者误差越大,权重值越接近于0,影响越小。w并不是一个随机变量,因此上式只是类似于高斯分布的形式,但不能说w符合高斯分布。

τ \tau τ值是局部加权线性回归中可以调整的一个超参数,其决定对当前测试样本进行预测时有多少训练样本会对其预测过程产生影响。 τ \tau τ值越大,会对其产生影响的训练样本越多; τ \tau τ值越小,会对其产生影响的训练样本越少。因此, t a u tau tau值越小,越易于使得学习到训练样本集的分布,即更易于过拟合。

局部加权线性回归是一个非参数化的学习算法,因为在对新样本做预测时,必须保留所有的训练样本以计算w,从而拟合得到最优模型参数进行预测。而普通的线性回归是一个参数化的算法,因为只要在训练集上拟合得到最优的参数w和b,在对新样本进行预测时,仅需计算 w T x + b w^Tx+b wTx+b即可,即模型训练完成之后只需保留训练出的参数即可,因此为参数化的机器学习算法。

4 logistic回归 and 感知机算法

4.1 logistic回归

线性回归虽然叫做回归,但其也可用于分类任务。以二分类任务为例,对于数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x m , y m ) } D = \{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\} D={(x1,y1),(x2,y2),,(xm,ym)},一般通过学习得到线性回归模型,即w和b。对新样本预测时,计算 f ( x ) = w T x + b f(x) = w^Tx+b f(x)=wTx+b,若结果大于设定的阈值则判断为正例,否则为反例。

对二分类任务,假设正类为1,负类为0.

在上面的线性回归部分中,我们定义 h θ ( x ) = θ T x h_{\theta}(x) = \theta^Tx hθ(x)=θTx,而在logistic回归中,定义 h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x h_{\theta}(x) = g(\theta^Tx) = \frac{1}{1 + e^{-\theta^Tx}} hθ(x)=g(θTx)=1+eθTx1

定义 g ( z ) = 1 1 + e − z g(z) = \frac{1}{1 + e^{-z}} g(z)=1+ez1为logistic function或sigmoid function,函数的曲线为:
这里写图片描述
函数有两个性质:
函数值域[0,1];
g , ( z ) = g ( z ) ( 1 − g ( z ) ) g^,(z) = g(z)(1 - g(z)) g,(z)=g(z)(1g(z))

给定了logistic regression的函数形式,剩下的问题就是如何去求解最优化参数?

前面在线性回归中我们看到了假设误差项符合高斯分布的情况下,可以通过最大化参数的对数似然函数求得参数的最优解。那么对于logistic regression,我们认为:
p ( y = 1 ∣ x ; θ ) = h θ ( x ) p ( y = 0 ∣ x ; θ ) = 1 − h θ ( x ) p(y=1|x;\theta) = h_{\theta}(x) \\ p(y=0|x;\theta) = 1 - h_{\theta}(x) p(y=1x;θ)=hθ(x)p(y=0x;θ)=1hθ(x)
那么两式联立,有 p ( y ∣ x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) ( 1 − y ) p(y|x;\theta) = (h_{\theta}(x))^y(1 - h_{\theta}(x))^{(1 - y)} p(yx;θ)=(hθ(x))y(1hθ(x))(1y)
由于各训练样本独立同分布,参数 θ \theta θ的似然函数为:
L ( θ ) = p ( y ∣ X ; θ ) = Π i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = Π i = 1 m ( h θ ( x ( i ) ) ) y ( i ) ( 1 − h θ ( x ( i ) ) ) ( 1 − y ( i ) ) L(\theta)=p(y|X;\theta) = \Pi_{i=1}^{m}p(y^{(i)}|x^{(i)};\theta) \\ =\Pi_{i=1}^{m}(h_{\theta}(x^{(i)}))^{y^{(i)}}(1 - h_{\theta}(x^{(i)}))^{(1 - y^{{(i)}})} L(θ)=p(yX;θ)=Πi=1mp(y(i)x(i);θ)=Πi=1m(hθ(x(i)))y(i)(1hθ(x(i)))(1y(i))

变似然函数为对数似然,可得:
l ( θ ) = log ⁡ L ( θ ) = ∑ i = 1 m y ( i ) log ⁡ ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) l(\theta) = \log L(\theta) = \sum_{i=1}^{m}{y^{(i)}\log(h_{\theta}(x^{(i)}))}+{(1 - y^{{(i)}})\log(1 - h_{\theta}(x^{(i)}))} l(θ)=logL(θ)=i=1my(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))

如果想最大化对数似然,可以使用梯度上升算法,即设定参数 θ \theta θ的初始值,在每一步都沿着当前位置的梯度方向移动,迭代过后可以到达对数似然函数的最大值处。因此核心问题依然是计算 l ( θ ) l(\theta) l(θ) θ \theta θ的导数。

对单个训练样本(x,y),有:
这里写图片描述

因此,最终的参数更新规则为:
这里写图片描述

相比于普通最小二乘,最后我们得到了同样的更新规则,原因就是最小二乘和logistic regression都属于GLM。

4.2 感知机算法

这里写图片描述

感知机算法和logistic reression的区别在于g(z)的函数形式不同,但是最终得到了同样的参数更新规则:
这里写图片描述

感知机算法虽然和logistic regression有同样的参数更新规则,但很难通过最大化似然概率的规则进行推导。

5 牛顿法

上面介绍的梯度下降法是一阶的迭代优化算法,而这里说的牛顿法是二阶的迭代优化算法。

考虑对函数f(x)=0进行求解,将f(x)=0在 x 0 x_0 x0处进行泰勒展开,可得:
f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + 1 2 ! f ′ ′ ( x 0 ) ( x − x 0 ) 2 + ⋯ + 1 n ! f ( n ) ( x 0 ) ( x − x 0 ) n + ⋯ f(x) = f(x_0) + f^{'} (x_0)(x-x_0) + \frac{1}{2!}f^{''}(x_0)(x-x_0)^2+\cdots+\frac{1}{n!}f^{(n)}(x_0)(x - x_0)^n+\cdots f(x)=f(x0)+f(x0)(xx0)+2!1f(x0)(xx0)2++n!1f(n)(x0)(xx0)n+
忽略二阶及以上的项,只保留线性部分。可得 f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) = 0 f(x_0)+f^{'}(x_0)(x-x_0) = 0 f(x0)+f(x0)(xx0)=0,求解可得 x = x 1 = x 0 − f ( x 0 ) f ′ ( x 0 ) x=x_1=x_0 - \frac{f(x_0)}{f^{'}(x_0)} x=x1=x0f(x0)f(x0)
因为在求解 x 1 x_1 x1的过程中忽略了二阶及更高阶的项,因此上面求得的 x 1 x_1 x1并不能真正意义上实现 f ( x ) = 0 f(x)=0 f(x)=0,而只是相比于 x 0 x_0 x0而言,使得 f ( x ) f(x) f(x)更加接近于0。因此,就有了迭代的思想, x n + 1 : = x n − f ( x n ) f ′ ( x n ) x_{n+1} := x_n - \frac{f(x_n)}{f^{'}(x_n)} xn+1:=xnf(xn)f(xn),迭代优化使得 f ( x ) f(x) f(x)越来越接近于0。

牛顿法的直观解释为:
这里写图片描述
在每一点处求得函数的切线,迭代得到的下一解为该切线与 f ( x ) = 0 f(x) = 0 f(x)=0的交点,如此迭代,越来越接近真实的解。上图中, x 0 = 4.5 x_0 = 4.5 x0=4.5,引出切线,得到其与 f ( x ) = 0 f(x) = 0 f(x)=0交点处为 x 1 = 2.8 x_1 = 2.8 x1=2.8,在 x 1 x_1 x1处再引出新的切线,得到 x 2 = 1.8 x_2 = 1.8 x2=1.8,如此迭代,直到接近函数的真实解。

而在使用牛顿法对最大似然函数进行求解的过程中,由于目的是最大化 l ( θ ) l(\theta) l(θ),也就是要求得 l ′ ( θ ) = 0 l^{'}(\theta)=0 l(θ)=0的解,那么牛顿法的迭代公式就变化为了 θ : = θ − f ′ ( θ ) f ′ ′ ( θ ) \theta := \theta - \frac{f^{'}(\theta)}{f^{''}(\theta)} θ:=θf(θ)f(θ)

在logistic regression中,参数 θ \theta θ为向量,此时牛顿法要变换迭代形式为 θ : = θ − H − 1 ∇ θ l ( θ ) \theta := \theta - H^{-1}\nabla_{\theta}l(\theta) θ:=θH1θl(θ)
H称之为Hessian矩阵, H i j = ∂ 2 l ( θ ) ∂ θ i ∂ θ j H_{ij}=\frac{\partial^2l(\theta)}{\partial\theta_i\partial\theta_j} Hij=θiθj2l(θ).

牛顿法相比于梯度下降法,收敛速度快,但是每一轮迭代都需要计算Hessian矩阵,计算量较大。

为了解决牛顿法计算量大的缺点,又有了拟牛顿法(BFGS、L-BFGS)。

6 GLM

前面介绍的线性回归、logistic regression都得到了相同的参数迭代形式,是巧合还是必然?答案是必然的,因为其都属于泛化线性模型(Generalized Linear Model,GLM)。

6.1 指数族

如果一个分布可以写成以下形式,则认为该分布属于指数族分布:
这里写图片描述

伯努利分布属于指数族:
伯努利分布:
y ∈ { 0 , 1 } ; P ( y = 1 ) = ϕ , P ( y = 0 ) = 1 − ϕ y \in \{0,1\};P(y=1)=\phi,P(y=0)=1-\phi y{0,1};P(y=1)=ϕ,P(y=0)=1ϕ.
这里写图片描述
η = log ⁡ ϕ 1 − ϕ \eta = \log \frac{\phi}{1-\phi} η=log1ϕϕ,得到 ϕ = 1 1 + e − η \phi = \frac{1}{1+e^{-\eta}} ϕ=1+eη1,同时有:
这里写图片描述
因此,伯努利分布属于指数族分布。

高斯分布:
根据2.3节看到,假设误差的分布为高斯分布时,最后得到的参数更新规则和方差无关,只和均值有关。因此,下面设定高斯分布的方差为1.
这里写图片描述

当设置参数为如下值时,可以发现高斯分布同样隶属于指数族分布。
这里写图片描述

多项式分布、泊松分布、gamma分布、beta分布都属于指数族。

6.2 构建GLM

考虑分类或回归的问题,希望预测y的值,其中y是x的函数。
为了构建出GLM,我们需要遵守三个假设:
这里写图片描述
这里写图片描述

6.2.1 普通最小二乘属于GLM

假设 y ∣ x ; θ y|x;\theta yx;θ ~ N ( u , σ 2 ) N(u,\sigma^2) N(u,σ2),那么有:
h θ ( x ) = E [ y ∣ x ; θ ] = u = η = θ T x h_{\theta}(x) = E[y|x;\theta] \\ =u = \eta = \theta^Tx hθ(x)=E[yx;θ]=u=η=θTx
第一个等号来自于上述第二个假设,第二个等号来自于高斯分布的期望为u,第三个等号来自于论证高斯分布属于指数族时得到的 u = η u = \eta u=η,最后一个等号来自于上述第三个假设。

6.2.2 logistic regression属于GLM

假设 y ∣ x ; θ y|x;\theta yx;θ~ B e r n o u l l i ( ϕ ) Bernoulli(\phi) Bernoulli(ϕ),有:
h θ ( x ) = E [ y ∣ x ; θ ] = ϕ = 1 1 + e − η = 1 1 + e − θ T x h_{\theta}(x) = E[y|x;\theta] \\ =\phi = \frac{1}{1+e^{-\eta}} = \frac{1}{1+e^{-\theta^Tx}} hθ(x)=E[yx;θ]=ϕ=1+eη1=1+eθTx1
第一个等号来自于上述第二个假设,第二个等号来自于伯努利分布的期望为 ϕ \phi ϕ,第三个等号来自于论证伯努利分布属于指数族时得到的 u = 1 1 + e − η u = \frac{1}{1+e^{-\eta}} u=1+eη1,最后一个等号来自于上述第三个假设。

我们考虑单独可微的函数g(.),令 g ( η ) = E [ T ( y ) ; η ] g(\eta) = E[T(y);\eta] g(η)=E[T(y);η],则这样的模型称之为GLM,g称之为响应函数(response function), g − 1 g^{-1} g1称之为联系函数(link function)。因此,高斯族的响应函数为恒等函数,伯努利分布的响应函数为sigmoid函数。

6.3 softmax

6.3.1 多项式分布属于指数族

softmax函数对应的是多项式分布,考虑多分类问题 y ∈ { 1 , 2 , , ⋯   , k } y \in \{1,2,,\cdots,k\} y{1,2,,,k},定义概率分布为: p ( y = j ) = ϕ j , j ∈ 1 , 2 , ⋯   , k − 1 ; p ( y = k ) = 1 − ∑ j = 1 k − 1 ϕ j p(y = j) = \phi_j,j \in 1,2,\cdots,k-1;p(y = k) = 1- \sum_{j=1}^{k-1}\phi_j p(y=j)=ϕj,j1,2,,k1;p(y=k)=1j=1k1ϕj

首先论证多项式分布同样属于指数族分布。
定义 T ( y ) ∈ R k − 1 T(y) \in R^{k-1} T(y)Rk1为:
这里写图片描述
再定义一个示性函数 1 { T r u e } = 1 , 1 { F a l s e } = 0 1\{True\}=1,1\{False\}=0 1{True}=1,1{False}=0
结合上述两种定义,可以有 T ( y ) i = 1 { y = i } T(y)_i = 1\{y=i\} T(y)i=1{y=i} E ( T ( y ) i ) = p ( y = i ) = ϕ i E(T(y)_i) = p(y=i) = \phi_i E(T(y)i)=p(y=i)=ϕi

这里写图片描述
因此有:
这里写图片描述
因此,说明多项式分布同样属于指数族分布。

6.3.2 softmax函数和softmax回归

由于有 η i = log ⁡ ϕ i ϕ k \eta_i = \log\frac{\phi_i}{\phi_k} ηi=logϕkϕi,那么有 e η i = ϕ i ϕ k e^{\eta_i} = \frac{\phi_i}{\phi_k} eηi=ϕkϕi e η i ϕ k = ϕ i e^{\eta_i}\phi_k=\phi_i eηiϕk=ϕi ϕ k ∑ i = 1 k e η i = ∑ i = 1 k ϕ i = 1 \phi_k\sum_{i=1}^{k}e^{\eta_i} = \sum_{i=1}^{k}\phi_i = 1 ϕki=1keηi=i=1kϕi=1 => ϕ k = 1 ∑ i = 1 k e η i \phi_k=\frac{1}{\sum_{i=1}^{k}e^{\eta_i}} ϕk=i=1keηi1,代回可得:
ϕ i = e η i ∑ j = 1 k e η j \phi_i = \frac{e^{\eta_i}}{\sum_{j=1}^{k}e^{\eta_j}} ϕi=j=1keηjeηi
上式就叫做softmax函数。

基于GLM中的第三个假设,有 η j = θ j T x , j ∈ { 1 , 2 , ⋯   , k − 1 } . θ j ∈ R n + 1 , 为 学 得 的 第 j 个 分 类 器 的 权 值 系 数 \eta_j = \theta_j^Tx,j\in\{1,2,\cdots,k-1\}.\theta_j \in R^{n+1},为学得的第j个分类器的权值系数 ηj=θjTx,j{1,2,,k1}.θjRn+1,j,因此,p(y|x)为:
p ( y = i ∣ x ; θ ) = ϕ i = e η i ∑ j = 1 k e η j = e θ i T x ∑ j = 1 k e θ j T x p(y=i|x;\theta) = \phi_i = \frac{e^{\eta_i}}{\sum_{j=1}^{k}e^{\eta_j}} = \frac{e^{\theta_i^Tx}}{\sum_{j=1}^{k}e^{\theta_j^Tx}} p(y=ix;θ)=ϕi=j=1keηjeηi=j=1keθjTxeθiTx
上式叫做softmax回归,可用于对多类别目标的分类,是softmax函数的泛化。
那么,使用softmax回归得到的模型的输出为:
这里写图片描述
即softmax回归得到了各样本属于类别 y ∈ { 1 , 2 , ⋯   , k − 1 } y \in \{1,2,\cdots,k-1\} y{1,2,,k1}的概率,那么样本属于第k类的概率为 ϕ k = 1 − ∑ i = 1 k − 1 ϕ i \phi_k = 1 - \sum_{i=1}^{k-1}\phi_i ϕk=1i=1k1ϕi

6.3.3 softmax回归的交叉熵损失和梯度

对单个样本 ( x , y ) , y ∈ { 1 , 2 , ⋯   , k } (x,y),y \in \{1,2,\cdots,k\} (x,y),y{1,2,,k},softmax回归的损失函数为:
l o s s ( y , x ) = − log ⁡ ( e θ y T x ∑ i = 1 k e θ i T x ) = log ⁡ ( ∑ i = 1 k e θ i T x ) − θ y T x = log ⁡ ( ∑ i = 1 k e f i ) − f y loss(y,x) = -\log(\frac{e^{\theta_y^Tx}}{\sum_{i=1}^{k}e^{\theta_i^Tx}}) = \log(\sum_{i=1}^{k}e^{\theta_i^Tx}) - \theta_y^Tx = \log(\sum_{i=1}^{k}e^{f_i}) - f_y loss(y,x)=log(i=1keθiTxeθyTx)=log(i=1keθiTx)θyTx=log(i=1kefi)fy
最后一个式子中的 f i = θ i T x f_i = \theta_i^Tx fi=θiTx,表示样本 x x x属于类别 i i i的score值(未归一化的对数值)。

由于 − l o g -log log为单调减函数,样本x被分类之后,得到了其属于各类别的概率,由于概率取值小于等于1,因此损失值一定大于等于0,同时其属于正确类别y的概率越大,损失值越小。因此在神经网络的训练中,随着训练程度的加深,样本被正确分类的概率越来越大,loss值也就逐步递减接近于0。

这里写图片描述

单个样本 ( x i , y i ) (x_i,y_i) (xi,yi)的loss值对softmax函数输入的梯度为:
∂ l o s s ∂ f y i = e f y i ∑ l = 1 k e f l − 1 ∂ l o s s ∂ f j = e f j ∑ l = 1 k e f l     ( j ≠ y i ) \frac{\partial loss}{\partial f_{y_i}} = \frac{e^{f_{y_i}}}{\sum_{l=1}^{k}e^{f_l}} - 1 \\ \frac{\partial loss}{\partial f_j} = \frac{e^{f_j}}{\sum_{l=1}^{k}e^{f_l}} ~~~(j \neq y_i) fyiloss=l=1keflefyi1fjloss=l=1keflefj   (j=yi)

包含m个样本的训练集的损失值为:
L o s s = − 1 m ∑ i = 1 m e f y i ∑ l = 1 k e f l Loss = -\frac{1}{m}\sum_{i=1}^{m}\frac{e^{f_{y_i}}}{\sum_{l=1}^{k}e^{f_l}} Loss=m1i=1ml=1keflefyi

7 LDA

线性判别分析(Linear Discriminant Analysis,LDA)的思想十分朴素:给定训练样本集,设法将样本投影到一条直线上,使得同类样本的投影点尽可能接近,异类样本的投影点尽可能远离。在对新样本进行类别判断时,同样将其投影到这条直线上,根据投影点的位置决定样本的类别。

7.1 样本到直线的投影

点x到直线w的投影为:
这里写图片描述

点x在单位向量 W ⃗ \vec{W} W 上的投影点M到原点的距离为: ∣ O M ⃗ ∣ = ∣ o x ⃗ ∣ cos ⁡ θ = ∣ o x ⃗ ∣ ∗ o x ⃗   w ⃗ ∣ o x ⃗ ∣ ∣ w ⃗ ∣ = o x ⃗ ∗ w ⃗ |\vec{OM}| = |\vec{ox}|\cos\theta = |\vec{ox}|*\frac{\vec{ox}~\vec{w}}{|\vec{ox}||\vec{w}|} = \vec{ox}*\vec{w} OM =ox cosθ=ox ox w ox  w =ox w 。因此,点x在单位向量 w ⃗ \vec{w} w 上的投影点M到原点的距离为 w ⃗ T x ⃗ \vec{w}^T\vec{x} w Tx

M点的坐标为:
M点满足两个式子: O M ⃗ = ∣ O M ⃗ ∣ ∗ w ⃗ , ∣ O M ⃗ ∣ = w ⃗ T x ⃗ \vec{OM} = |\vec{OM}|*\vec{w},|\vec{OM}| = \vec{w}^T\vec{x} OM =OM w ,OM =w Tx ,因此有 O M ⃗ = O x ⃗ w ⃗ T w ⃗ \vec{OM} = \vec{Ox}\vec{w}^T\vec{w} OM =Ox w Tw

假设 w ⃗ = [ 1 5     2 5 ] , x ⃗ = [ 3     4 ] \vec{w} = [\frac{1}{\sqrt{5}} ~~~ \frac{2}{\sqrt{5}}] , \vec{x} = [3 ~~~ 4] w =[5 1   5 2],x =[3   4],那么M点的坐标为: [ 3     4 ] [ 1 5 2 5 ] [ 1 5     2 5 ] = [ 2.2     4.4 ] [3 ~~~ 4] \left [ \begin{matrix} \frac{1}{\sqrt{5}} \\ \frac{2}{\sqrt{5}} \end{matrix} \right ] [\frac{1}{\sqrt{5}} ~~~ \frac{2}{\sqrt{5}}] = [2.2 ~~~ 4.4] [3   4][5 15 2][5 1   5 2]=[2.2   4.4]

方向向量:
1.已知直线ax+by+c = 0,则直线的方向向量 s ⃗ = ( − b , a ) 或 者 ( b , − a ) \vec{s}=(-b,a)或者(b,-a) s =(b,a)(b,a)
2.若直线的斜率为k,则该直线的一个方向向量为 s ⃗ = ( 1 , k ) \vec{s}=(1,k) s =(1,k)
3.若 A ( x 1 , y 1 ) A(x_1,y_1) A(x1,y1) B ( x 2 , y 2 ) B(x_2,y_2) B(x2,y2)均位于同一直线上,则该直线的一个方向向量为 s ⃗ = ( x 2 − x 1 , y 2 − y 1 ) \vec{s}=(x_2-x_1,y_2-y_1) s =(x2x1,y2y1)

7.2 二分类LDA

训练样本集 D = { ( x i , y i ) } , i ∈ ( 1 , ⋯   , m ) , y i ∈ { 0 , 1 } D=\{(x_i,y_i)\},i\in(1,\cdots,m),y_i\in\{0,1\} D={(xi,yi)},i(1,,m),yi{0,1},各样本点投影到直线w之后的投影点距离原点的距离为 w T x ( i ) , i = 1 , ⋯   , m w^Tx^{(i)},i=1,\cdots,m wTx(i),i=1,,m

LDA的目标是投影之后的样本点同类别的尽可能内聚,不同类别的尽可能远离,因此就有两个要求,一是不同类别的样本投影点团簇的中心位置尽可能远离,二是同类别的样本投影点方差尽可能小。

假设原始数据集中两类样本点的中心点分别为 u 0 u_0 u0 u 1 u_1 u1,方差分别为 Σ 1 \Sigma_1 Σ1 Σ 2 \Sigma_2 Σ2,则样本集投影到直线w之后的投影点的中心位置距离原点的距离分别为 w T u 0 w^Tu_0 wTu0 w T u 1 w^Tu_1 wTu1,而各类样本投影团簇的方差分别为 w T Σ 0 w w^T\Sigma_0w wTΣ0w w T Σ 1 w w^T\Sigma_1w wTΣ1w

联系我们上面提到的高内聚低耦合目标,希望 w T Σ 0 w + w T Σ 1 w w^T\Sigma_0w+w^T\Sigma_1w wTΣ0w+wTΣ1w尽可能小,而 ∣ ∣ w T u 0 − w T u 1 ∣ ∣ 2 2 ||w^Tu_0 - w^Tu_1||_2^2 wTu0wTu122尽可能大,因此最终拟最大化的目标是:
J = ∣ ∣ w T u 0 − w T u 1 ∣ ∣ 2 2 w T Σ 0 w + w T Σ 1 w = w T ( u 0 − u 1 ) ( u 0 − u 1 ) T w w T ( Σ 0 + Σ 1 ) w J = \frac{||w^Tu_0 - w^Tu_1||_2^2}{w^T\Sigma_0w+w^T\Sigma_1w} = \frac{w^T(u_0 - u_1)(u_0 - u_1)^Tw}{w^T(\Sigma_0+\Sigma_1)w} J=wTΣ0w+wTΣ1wwTu0wTu122=wT(Σ0+Σ1)wwT(u0u1)(u0u1)Tw

定义 S w = Σ 0 + Σ 1 = ∑ x ∈ x 0 ( x − u 0 ) ( x − u 0 ) T + ∑ x ∈ x 1 ( x − u 1 ) ( x − u 1 ) T S_w = \Sigma_0 + \Sigma_1 = \sum_{x \in x_0}(x - u_0)(x - u_0)^T + \sum_{x \in x_1}(x - u_1)(x - u_1)^T Sw=Σ0+Σ1=xx0(xu0)(xu0)T+xx1(xu1)(xu1)T为类内散度矩阵;
定义 S b = ( u 0 − u 1 ) ( u 0 − u 1 ) T S_b = (u_0 - u_1)(u_0 - u_1)^T Sb=(u0u1)(u0u1)T为类间散度矩阵。

那么LDA预最大化的目标为: J ( w ) = w T S b w w T S w w J(w) = \frac{w^TS_bw}{w^TS_ww} J(w)=wTSwwwTSbw
下面的任务就是求解w。注意到预最大化的目标分子分母都和w有关,因此对w扩充任意倍后,上式依然成立。故添加限制条件为 w T S w w = 1 w^TS_ww = 1 wTSww=1,因此最优化的目标变为:
m a x w     w T S b w s . t .     w T S w w = 1 max_w~~~ w^TS_bw \\s.t.~~~w^TS_ww = 1 maxw   wTSbws.t.   wTSww=1

引入拉格朗日乘子后,得: J ( w ) = w T S b w − λ ( w T S w w − 1 ) , ∂ J ( w ) ∂ w = 2 S b w − 2 λ S w w J(w) = w^TS_bw - \lambda(w^TS_ww - 1),\frac{\partial J(w)}{\partial w} = 2S_bw - 2\lambda S_ww J(w)=wTSbwλ(wTSww1),wJ(w)=2Sbw2λSww,令导数为0,可得 S b w = λ S w w S_bw = \lambda S_ww Sbw=λSww。由于 S b w = ( u 0 − u 1 ) ( u 0 − u 1 ) T w = ( u 0 − u 1 ) λ w S_bw = (u_0 - u_1)(u_0 - u_1)^Tw=(u_0 - u_1)\lambda_w Sbw=(u0u1)(u0u1)Tw=(u0u1)λw λ w \lambda_w λw为实数,因为对w扩充任意倍数仍为同一直线,因此同时约去等式两边的系数,得 w = S w − 1 ( u 0 − u 1 ) w = S_w^{-1}(u_0-u_1) w=Sw1(u0u1)

因此,只需在原始数据集上计算出两类样本的均值和协方差,就可以得到最佳的投影直线w。而求 S w S_w Sw的逆往往通过奇异值分解实现。

对一个数据集进行LDA得到具有最佳分类性能的投影直线后,对新样本x进行分类时,计算 w T x + b w^Tx+b wTx+b,根据该值是否大于0即可完成该样本的分类。

7.3 多分类LDA

假设现在样本有C类,原始每个样本为d维,投影之后变成了k维,即直线为 W = [ W 1 ∣ W 2 ∣ ⋯   , W k ] W = [W_1|W_2|\cdots,W_k] W=[W1W2,Wk]。因此,假设将样本点在k维投影后的结果为 [ y 1 , y 2 , ⋯   , y k ] [y_1,y_2,\cdots,y_k] [y1,y2,,yk],则有 y i = W i T x y_i = W_i^Tx yi=WiTx,即 y = W T x y = W^Tx y=WTx

现在仍然从类内散列度和类间散列度的角度来衡量投影直线。

在多分类的情况下, S w = ∑ i = 1 C S w i S_w = \sum_{i=1}^{C}S_{w_i} Sw=i=1CSwi S w i S_{w_i} Swi仍衡量的是各类别内部的协方差矩阵,即 S w i = ∑ x ∈ X i ( x − u i ) ( x − u i ) T S_{w_i} = \sum_{x \in X_i}(x - u_i)(x - u_i)^T Swi=xXi(xui)(xui)T

但类间散度 S b S_b Sb却需要作出一定的改变,现在要度量的是每类样本中心点相对于全体样本中心点的散列情况。类似地,可以将 u i u_i ui看做样本点, u u u是所有样本点的中心点,此时 S b S_b Sb变成各 u i u_i ui u u u之间的协方差矩阵,添加一个系数 N i N_i Ni表示第 i i i类的样本个数,这样某一类的样本点个数越多该类所占的权重越大。因此, S b = ∑ i = 1 C N i ( u i − u ) ( u i − u ) T , u = 1 N ∑ x ∈ X x = 1 N ∑ x ∈ C i N i u i S_b = \sum_{i=1}^{C}N_i(u_i - u)(u_i -u)^T,u = \frac{1}{N}\sum_{x \in X}x = \frac{1}{N}\sum_{x \in C_i}N_iu_i Sb=i=1CNi(uiu)(uiu)T,u=N1xXx=N1xCiNiui,u表示所有样本的均值。

此时最优化的目标依然是最大化 J ( w ) = w T S b w w T S w w J(w) = \frac{w^TS_bw}{w^TS_ww} J(w)=wTSwwwTSbw,即各类中心距全体中心的距离越大越好,而各类样本自身的散列度越小越好。

求解w时,依然是固定分母为1,求导,令导数为0,可得 S b w = λ S w w S_bw = \lambda S_ww Sbw=λSww,即w的闭式解是 S w − 1 S b S_w^{-1}S_b Sw1Sb的前k个特征向量组成的矩阵。

由于 S w − 1 S b S_w^{-1}S_b Sw1Sb不一定是对称矩阵,因此得到的前k个特征向量不一定正交,这也是LDA与PCA不同的地方。

LDA是选择具有最好分类性能的方向进行投影,而PCA是选择样本点投影后具有最大方差的方向。

7.4 LDA的一些限制

1.LDA至多可以生成C-1维的子空间
由于 S b S_b Sb ( u i − u ) (u_i - u) (uiu)的秩为1,因此 S b S_b Sb的秩至多为C(矩阵的秩小于等于各相加矩阵的秩的和),由于知道了前k-1个 u i u_i ui后,最后一个可以用前面的k-1个进行表示,因此 S b S_b Sb的秩最多为C-1,即特征向量最多为C-1。因此,LDA降维后的维度区间为[1,C-1],与原始特征的维度无关。对于二值分类,最多投影到1维。
2.LDA不适合对非高斯样本进行降维。
3.LDA在样本分类信息依赖方差而不是均值时,效果不好。
4.LDA可能会过度拟合数据。
5.LDA为变形后的线性回归,变形指的是对类标签重新定义,线性回归得到的直线即为二值LDA求得的直线方向w。

7.5 总结

LDA是基于如何让投影后的样本点的不同类之间尽可能的“高内聚、低耦合”,也就是同类样本的方差尽可能小,而不同类样本的中心点位置尽可能远离,从而获得最佳的投影直线。LDA原则上可以取得最佳的线性分类性能。

8 多分类学习

多分类学习是利用二分类的思想来解决多分类的问题。一般是将多分类任务拆解成多个二分类任务进行实现。具体来说,是将多分类任务按照某种原则拆解,训练多个二分类器,在测试时,对多个分类器的预测结果进行集成以获取最终的分类结果。

最常用的拆分原则有:一对一(One vs. One,OvO),一对其余(One vs. Rest,OvR)和多对多(Many vs. Many,MvM)。

给定数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x m , y m ) } , y i ∈ { C 1 , C 2 , ⋯   , C N } D=\{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\},y_i \in \{C_1,C_2,\cdots,C_N\} D={(x1,y1),(x2,y2),,(xm,ym)},yi{C1,C2,,CN}

OvO是取N个类别中的任意两个训练分类器,共训练N*(N-1)/2个分类器。在对新样本进行预测时,把被预测的最多的类别作为新样本的预测结果。
OvR是取N个类别中的任意一个类别作为正类,其余所有的类别作为负类,因此共需要训练N个分类器。在测试时,若该样本仅有一次被预测为正类,则该样本的类别为被预测为正类的类别;若样本被多次预测为正类,则样本的类别选择置信度最大的类别。OvO与OvR示意图如下图所示:
这里写图片描述
OvO需要训练的分类器数目多于OvR,存储和测试时间开销更大。但训练时,OvR使用全部的训练样本进行训练,而OvO每次仅需使用两个类别的样本进行训练。因此,在类别很多时,OvO的训练时间开销往往小于OvR,测试时则一般两者性能相差不大。

OvO与OvR都是MvM的特例,MvM的正反例必须有特殊的设计,一般采用"纠错输出码"(Error Correcting Output Code,ECOC)。
ECOC将编码的思想引入到类别划分过程中,并尽可能在解码过程中具有一定的容错设计。主要分为两步进行实现:
编码:将N个类别进行M次划分,每次选取一部分类别作为正类,其余类别作为负类,这样共训练得到M个分类器;
解码:使用M个分类器分别对测试样本进行预测,这样共得到了M个预测结果,将M次的预测结果组成一个编码,然后分别与每个类别各自的编码进行比对,返回其中距离最小的类别作为最终的预测结果。
类别划分通过“编码矩阵”进行实现,常见的形式有“二元码”和“三元码”两种。前者类别包括“正类”和“反类”,后者在此基础上添加了“停用类”。
这里写图片描述
如上图左所示,分类器 f 1 f_1 f1将类别2作为正类,其余所有的都作为负类,这样每个类别就有了一个编码,如类别 C 1 C_1 C1的编码为(-1,+1,-1,+1,+1)。对新样本预测时,各分类器都对样本进行预测,也可以得到一个预测编码,如图中(-1,-1,+1,-1,+1),若按照海明距离则选择类别3为测试样本的类别;若按照欧式距离还是选择类别3作为测试样本的类别。上图右中还包含了一个停用类,在计算距离时停用类位置是按照0进行计算的。

ECOC具有一定的容错和修正能力,假设上图左样本的正确编码应该为(-1,+1,+1,-1,+1),因为 f 2 f_2 f2预测错误得到了(-1,-1,+1,-1,+1),但基于这个错误的编码仍然可以正确分类。因此ECOC就具有的容错能力。

一般而言,ECOC的编码长度越长,纠错能力越长,但也意味着分类器的数目也在增多,计算和存储的开销都在增加。同时对于有限的类别数,可能的组合数目是一定的,超过一定长度的码字也是没有意义的。

9 类别不平衡问题

如果训练集中包含2个正例,998个反例,则若直接将分类器设置为将任何样本都分类为反例,同样会有99.8%的分类准确率,但是这样的分类器不具有任何的使用价值。因此,我们需要对类别不平衡情况做特殊的处理。

以线性分类器为例,一般将 w T x + b > 0.5 w^Tx+b > 0.5 wTx+b>0.5判别为正例,而将使其小于0.5的样本判别为反例。y其实是在表达样本为正例的可能性,几率 y 1 − y \frac{y}{1-y} 1yy是在表达正例可能性与反例可能性的比值,阈值设置为0.5则表示分类器认为正例和反例的可能性相等,即分类决策规则为 y 1 − y > 1 \frac{y}{1-y} > 1 1yy>1则预测为正例。

而当样本的正例和反例数量相差较大时,则应该调整决策规则。假设样本中正例数目为 m + m^+ m+,反例数目为 m − m^- m,则观测几率为 m + m − \frac{m^+}{m^-} mm+,由于假设训练集来自于真实样本的独立采样,所以真实几率也为 m + m − \frac{m^+}{m^-} mm+,所以应该调整判别规则为 y 1 − y > m + m − \frac{y}{1-y} > \frac{m^+}{m^-} 1yy>mm+则判定为正例。

但是对于类别不均衡的分类问题,我们往往还是要按照 y 1 − y > 1 \frac{y}{1-y} > 1 1yy>1则预测为正例,因此就需要对分类器输出的计算值进行再缩放处理,即将分类器的输出映射为 y ′ 1 − y ′ = y 1 − y ∗ m − m + \frac{y^{'}}{1-y^{'}} = \frac{y}{1-y} * \frac{m^{-}}{m^{+}} 1yy=1yym+m

但是由于IID假设实际上并不成立,因此我们未必能够得到样本的真实几率。对类别不均衡问题的常见处理策略有三种方法,分别是欠采样法、过采样法和重映射法。欠采样法是从样本数较多的类别中移除一些样本,但也不是简单的移除,简单的移除会造成样本的浪费,代表方法有EasyEnsemble,采用集成学习的思想,将较多类的样本划分到不同的子分类器的训练中去,综合来看并没有样本的浪费,每一个分类器学习过程中也没有存在样本不均衡的问题。第二种处理办法是采样过采样法,即对样本数少的类别补充样本,但补充也不是简单的复制,因为这样做会造成过拟合,而是对训练集中已有的数量少的类别的样本进行插值模拟新的样本。第三种方法则是采样上面所说的重映射方法进行近似的处理。

10 进一步思考

在多项式模型最高次项比较大或者线性回归中某些特征对分类的贡献较小时,可以使用正则化的方式提升线性模型的泛化能力。具体可以参考下一篇转载的《正则化的线性回归 - 岭回归和Lasso回归》,岭回归是在损失函数的基础上添加 L 2 L_2 L2约束,Lasso是在损失函数的基础上添加 L 1 L_1 L1约束。

参考

周志华 《机器学习》
CS229
《机器学习实战》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值