学习总结于《机器学习》周志华、cs229、CSDN大佬们的博客
y ^ ∣ x \hat y |x y^∣x : data, fixed thing
θ \theta θ : parameters, varing
if we view this thing as a function of the parameters holding the data fixed, we call that the likelihood.
y ^ ∣ x \hat y |x y^∣x : data, varing
θ \theta θ : parameters, fixed thing
if we view this thing as a function of the data holding the parameters fixed, we call that the probability.
梯度下降法又被称为最速下降法(Steepest descend method),其理论基础是梯度的概念。梯度与方向导数的关系为:梯度的方向与取得最大方向导数值的方向一致,而梯度的模就是函数在该点的方向导数的最大值。
该方法从某一个 θ \theta θ 的初始值开始,然后逐渐重复更新:
而对于等式右边的导数项,我们可以进行如下化简:
∂ ∂ θ j J ( θ ) = ∂ ∂ θ j 1 2 ( h θ ( x ) − y ) 2 = ( h θ ( x ) − y ) ∂ ∂ θ j ( ∑ i = 0 n θ i x i − y ) = ( h θ ( x ) − y ) x j \begin{aligned} \frac{\partial}{\partial\theta_j}J(\theta)&=\frac{\partial}{\partial\theta_j}\frac{1}{2}(h_{\theta}(x)-y)^2 \\&=(h_{\theta}(x)-y) \frac{\partial}{\partial\theta_j}(\sum_{i=0}^n \theta_i x_i -y)\\&=(h_{\theta}(x)-y)x_j \end{aligned} ∂θj∂J(θ)=∂θj∂21(hθ(x)−y)2=(hθ(x)−y)∂θj∂(i=0∑nθixi−y)=(hθ(x)−y)xj
所以对于单个训练样本,更新规则如下:
θ j : = θ j − α ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) \theta_j:=\theta_j-\alpha(y^{(i)}-h_{\theta}(x^{(i)}))x_j^{(i)} θj:=θj−α(y(i)−hθ(x(i)))xj(i)
批量梯度下降法是最原始的形式,它是指在每一次迭代时使用所有样本来进行梯度的更新。
具体过程如下:
Loop{
θ j : = θ j − α ∑ i = 0 m ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) \theta_j:=\theta_j-\alpha\sum_{i=0}^{m}(y^{(i)}-h_{\theta}(x^{(i)}))x_j^{(i)} θj:=θj−α∑i=0m(y(i)−hθ(x(i)))xj(i) (for every j)
}
随机梯度下降法对整个训练集进行循环遍历,每次遇到一个训练样本,根据训练样本的误差梯度来对参数进行更新。
具体过程如下:
Loop{
$\theta_j:=\theta_j-\alpha(y{(i)}-h_{\theta}(x{(i)}))x_j^{(i)} $ (for every j)
}
小批量梯度下降,是对批量梯度下降以及随机梯度下降的一个折中办法。其思想是:每次迭代使用 batch_size 个样本来对参数进行更新。
Loop{
θ j : = θ j − α ∑ i = 0 b a t c h _ s i z e ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) \theta_j:=\theta_j-\alpha\sum_{i=0}^{batch\_size}(y^{(i)}-h_{\theta}(x^{(i)}))x_j^{(i)} θj:=θj−α∑i=0batch_size(y(i)−hθ(x(i)))xj(i) (for every j)
}
1* 批梯度下降每次更新使用了所有的训练数据,最小化损失函数,如果只有一个极小值,那么批梯度下降是考虑了训练集所有数据,是朝着最小值迭代运动的,但是缺点是如果样本值很大的话,更新速度会很慢。
2* 随机梯度下降在每次更新的时候,只考虑了一个样本点,这样会大大加快训练数据,也恰好是批梯度下降的缺点,但是有可能由于训练数据的噪声点较多,那么每一次利用噪声点进行更新的过程中,就不一定是朝着极小值方向更新,但是由于更新多轮,整体方向还是大致朝着极小值方向更新,又提高了速度。
3* 小批量梯度下降通过矩阵运算,每次在一个batch上优化神经网络参数并不会比单个数据慢太多。每次使用一个batch可以大大减小收敛所需要的迭代次数,同时可以使收敛到的结果更加接近梯度下降的效果。可实现并行化计算。
对于代价函数为凸函数的模型,通过对代价函数的参数求导,并令其为零,联立方程组可以求得每个参数的最优解的闭式(closed-form)解。
如对于线性回归,最优解为:
θ = ( X T X ) − 1 X T Y \theta = (\pmb{X}^T\pmb{X})^{-1}\pmb{X}^T \pmb{Y} θ=(XXXTXXX)−1XXXTYYY
虽然对于代价函数为凸函数的情况下,封闭形式的数学解决方案可以求得每个参数的最优解,但是在几乎所有的情况下,我们都不会考虑求解最优解的闭式解,原因总结如下:
1* 在多因素情况下,变量数目远大于1,在求闭式解的矩阵运算过程中,计算量巨大。而梯度下降法计算量小,并支持并行计算。
2* 进行矩阵运算的过程,占用的内存空间也远大于梯度下降算法所需要的内存空间。
3* 同时梯度下降算法对于非凸的损失函数也具有通用性,而最优解的闭式解只适用于凸函数。
牛顿方法同梯度下降法一样,是一种优化算法,用于求函数零点的数值方法,主要应用于目标函数最优化求解。
具体更新过程如下所示:
θ : = θ − l ′ ( θ ) l ′ ′ ( θ ) \theta := \theta - \frac{l'(\theta)}{l''(\theta)} θ:=θ−l′′(θ)l′(θ)
下图是牛顿法的图解:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-alOruQ08-1619875981317)(/Users/xingxl/Desktop/证书扫描/Newton.gif)]
在多数情况下, θ \theta θ 是一个有值的向量,所以我们要对Newton法扩展到多维的情况,由此产生了Newton-Raphson法。
具体更新过程如下所示:
θ : = θ − H − 1 ∂ ∂ θ l ( θ ) \theta := \theta - H^{-1}\frac{\partial}{\partial_{\theta}}l(\theta) θ:=θ−H−1∂θ∂l(θ)
上式中, ∂ ∂ θ l ( θ ) \frac{\partial}{\partial_{\theta}}l(\theta) ∂θ∂l(θ) 是 l ( θ ) l(\theta) l(θ) 关于 θ \theta θ 的偏导数向量, H H H 是一个 n × n n\times n n×n 矩阵(实际上包含截距项,应该是 ( n + 1 ) × ( n + 1 ) (n+1)\times(n+1) (n+1)×(n+1) ),也叫做 Hessian矩阵,其定义是:
H i j = ∂ 2 l ( θ ) ∂ θ i ∂ θ j H_{ij} = \frac{\partial^2l(\theta)}{\partial \theta_i \partial \theta_j} Hij=∂θi∂θj∂2l(θ)
对于 θ \theta θ 参数的数量n,
当n较小时,使用Newton/Newton-Raphson法。
当n较大时,使用梯度下降法。
学习GLMs之前,先定义一下指数族分布。如果一个分布能用下面的方式写出来,我们则认为这类分布属于指数族:
η \eta η 叫做分布的自然参数(natural parameter),也叫典范参数(canonical parameter)
T ( y ) T(y) T(y) 叫做充分统计量(sufficient statistic),目前常用的分布中,通常 T ( y ) = y T(y)=y T(y)=y
a ( η ) a(\eta) a(η) 叫做对数分割函数(log partition function), e a ( η ) e^{a(\eta)} ea(η) 本质上扮演了归一化常数的角色,确保 P ( y ; η ) P(y;\eta) P(y;η) 的总和等于1
对于固定的 T , a , b T,a,b T,a,b,就定义了一个用 η \eta η进行参数化分布的分布族,通过改变 η \eta η,我们就得到了这个分布族的不同分布。
常见的如伯努利分布:
P ( y ; ϕ ) = ϕ y ( 1 − ϕ ) 1 − y = e x p ( y l o g ϕ + ( 1 − y ) l o g ( 1 − ϕ ) ) = e x p ( l o g ( ϕ 1 − ϕ ) y + l o g ( 1 − ϕ ) ) \begin{aligned} P(y;\phi)&=\phi^{y}(1-\phi)^{1-y} \\ &=exp(ylog\phi+(1-y)log(1-\phi)) \\ &=exp(log(\frac{\phi}{1-\phi})y+log(1-\phi)) \end{aligned} P(y;ϕ)=ϕy(1−ϕ)1−y=exp(ylogϕ+(1−y)log(1−ϕ))=exp(log(1−ϕϕ)y+log(1−ϕ))
高斯分布:
P ( y ; μ ) = 1 2 π e x p ( − 1 2 ( y − μ ) 2 ) = 1 2 π e x p ( − 1 2 y 2 ) e x p ( μ y − 1 2 μ 2 ) \begin{aligned} P(y;\mu)&=\frac{1}{\sqrt{2\pi}}exp(-\frac{1}{2}(y-\mu)^2) \\ &=\frac{1}{\sqrt{2\pi}}exp(-\frac{1}{2}y^2)exp(\mu y-\frac{1}{2}\mu^2) \\ \end{aligned} P(y;μ)=2π1exp(−21(y−μ)2)=2π1exp(−21y2)exp(μy−21μ2)
指数分布族里面还有很多其他分布,如多项式分布(multinomial)、泊松分布(Poisson)、 γ \gamma γ和指数分布(the gamma and the exponential)、 β \beta β 和狄利克雷分布(the beta and the Dirichlet)
线性模型有着非常强的局限,响应变量(response variable) y y y 必须服从高斯分布,且拟合目标 y y y 的 scale 是一个实数 ( − ∞ , + ∞ ) (-\infty,+\infty) (−∞,+∞)。具体来说有两个问题:
y y y 的取值范围和一些常见问题不匹配。例如 count(游客人数统计恒为正)以及 binary(某个二分类问题)
y y y 的方差是常数 constant。有些问题上方差可能依赖 y y y 的均值,例如我预测目标值越大方差也越大(预测越不精确)
所以这时我们使用 Generalized Linear Model 来克服这两个问题。
一句话定义 GLM 即:
In statistics, the generalized linear model (GLM) is a flexible generalization of ordinary linear regression that allows for response variables that have error distribution models rather than a normal distribution.
广义线性模型的可以粗略的概括为:
y = g − 1 ( w T x + b ) y = g^{-1}(w^Tx + b) y=g−1(wTx+b)
广义线性模型的整体流程如下图所示:
常见的响应变量(response variable) y y y 与指数族的对应关系如下所示:
正整数:指数、Gamma
实数:高斯
二进制:伯努利
非负数:泊松
多分类:多项式分布
response function 与 link function
分布均值函数 g g g 是一个对自然参数 η \eta η 的函数, g ( η ) = E [ T ( y ) ; η ] g(\eta)=E[T(y);\eta] g(η)=E[T(y);η]。该函数也叫做规范响应函数(canonical link function),他的反函数 y = g − 1 ( μ ) y = g^{-1}(\mu) y=g−1(μ)叫做规范链接函数(canonical link function)。
要导出适用于这个问题的广义线线性模型,就要对我们的模型、给定 x x x 下 y y y 的条件分布来做出一定的假设:
1* y ∣ x ; θ ∼ E x p o n e n t i a l F a m i l y ( η ) y|x;\theta \sim Exponential Family(\eta) y∣x;θ∼ExponentialFamily(η),即给定 x x x 和 θ \theta θ , y y y 的分布属于指数分布族,是一个参数为 η \eta η 的指数分布
2* 给定 x x x ,目的是要预测对应这个给定的 x x x 的 T ( y ) T(y) T(y) 的期望值,这意味着我们的学习要假设 h h h 输出的预测值 h ( x ) h(x) h(x) 要满足 h ( x ) = E [ y ∣ x ] h(x)= E[y|x] h(x)=E[y∣x]
3* 自然参数 η \eta η 和输入值 x x x 是线性相关的, η = θ T x \eta = \theta^Tx η=θTx,或者如果 η \eta η 是有值的向量,则有 η i = θ i T x \eta_i=\theta_i^Tx ηi=θiTx
我们可以把 GLM 分解为 Random Component、System Component 和 Link Function 三个部分。
An exponential family model for the response 对应假设1
这里是指响应变量(response variable) y y y必须服从某一指数族分布(exponential family distribution),即 y ∣ x ; θ ∼ E x p o n e n t i a l F a m i l y ( η ) y|x;\theta \sim Exponential Family(\eta) y∣x;θ∼ExponentialFamily(η), η \eta η 指 exponential family 的 natural parameter 自然参数。
linear predictor 对应假设3
广义线性模型 GLM 本质上还是线性模型,我们推广的只是 response variable y y y 的分布,模型最终学习的目标还是 linear predictor w T x w^Tx wTx中的 weight vector。
A link function connects the mean of the response to the linear predictor 对应假设2
对任意指数族分布(exponential family distribution),都存在 link function $g(\mu)=\eta , , ,\mu$是分布的均值,而 η \eta η 是自然参数(natural parameter);例如 Gaussian 的 link function 是 identity $g(\mu)=\eta $,Bernoulli 的 link function 是 logit $g(\mu)=ln(\frac{\mu}{1-\mu})=\eta $。
指数族分布具有如下三条性质:
1* MLE(最大似然估计)是关于 y y y 的凹函数
2* E [ y ; η ] = ∂ ∂ y a ( η ) E[y;\eta] = \frac{\partial}{\partial y}a(\eta) E[y;η]=∂y∂a(η),确定 η \eta η 之后,关于 y y y 的分布的期望等于 a ( . ) a(.) a(.) 关于 y y y 的导数
3* V a r [ y ; η ] = ∂ 2 ∂ y 2 a ( η ) Var[y;\eta] = \frac{\partial^2}{\partial y^2}a(\eta) Var[y;η]=∂y2∂2a(η),确定 η \eta η 之后,关于 y y y 的分布的方差等于 a ( . ) a(.) a(.) 关于 y y y 的二阶导数
1* Model Parameters: θ \theta θ
2* Natural Parameters: η \eta η
3* Canonical Parameters: ϕ \phi ϕ (伯努利)、 μ , σ 2 \mu,\sigma^2 μ,σ2(高斯)、 λ \lambda λ(泊松)
线性回归试图学得:
f ( x i ) = w x i + b , 使 得 f ( x i ) ≅ y i f(x_i) = wx_i + b,使 得 f(x_i)\cong y_i f(xi)=wxi+b,使得f(xi)≅yi
为了衡量 f ( x ) f(x) f(x) 与 y y y 之间的差别,我们引入回归任务中最常用的性能度量:均方误差,并试图让均方误差最小化,即
( w ∗ , b ∗ ) = a r g m i n w , b ∑ i = 1 m ( f ( x i ) − y i ) 2 = a r g m i n w , b ∑ i = 1 m ( y i − w x i − b ) 2 \begin{aligned} (w^*,b^*) &= argmin_{w,b}\sum_{i=1}^{m}(f(x_i)-y_i)^2\\&=argmin_{w,b}\sum_{i=1}^{m}(y_i - wx_i -b)^2 \end{aligned} (w∗,b∗)=argminw,bi=1∑m(f(xi)−yi)2=argminw,bi=1∑m(yi−wxi−b)2
均方误差具有非常好的几何意义,它对应了常用的欧几里得距离或简称“欧氏距离”。基于均方误差最小化来进行模型求解的方法称为“最小二乘法”。
求解 w w w 和 b b b 使 E ( w , b ) = ∑ i = 1 m ( y i − w x i − b ) 2 E(w,b) = \sum_{i=1}^{m}(y_i-wx_i-b)^2 E(w,b)=∑i=1m(yi−wxi−b)2 最小化的过程,称为线性回归模型的最小二乘“参数估计”,我们将 E ( w , b ) E(w,b) E(w,b) 分别对 w w w 和 b b b 求导,得到:
∂ E ( w , b ) ∂ w = 2 ( w ∑ i = 1 m x i 2 − ∑ i = 1 m ( y i − b ) x i ) \frac{\partial E(w,b)}{\partial w} = 2(w\sum_{i=1}^{m}x_i^2-\sum_{i=1}^{m}(y_i - b)x_i) ∂w∂E(w,b)=2(wi=1∑mxi2−i=1∑m(yi−b)xi)
∂ E ( w , b ) ∂ b = 2 ( m b − ∑ i = 1 m ( y i − w x i ) ) \frac{\partial E(w,b)}{\partial b} = 2(mb-\sum_{i=1}^{m}(y_i - wx_i)) ∂b∂E(w,b)=2(mb−i=1∑m(yi−wxi))
这里 E ( w , b ) E(w,b) E(w,b) 是关于 w w w 和 b b b 的凸函数,当它关于 w w w 和 b b b 的导数均为零时,得到 w w w 和 b b b 的最优解:
w = ∑ i = 1 m y i ( x i − x ‾ ) ∑ i = 1 m x i 2 − 1 m ( ∑ i = 1 m x i ) 2 w = \frac{\sum_{i=1}^m y_i(x_i - \overline x)}{\sum_{i=1}^m x_i^2-\frac{1}{m}( \sum_{i=1}^m x_i)^2} w=∑i=1mxi2−m1(∑i=1mxi)2∑i=1myi(xi−x)
b = 1 m ∑ i = 1 m ( y i − w x i ) b = \frac{1}{m} \sum_{i=1}^m (y_i-wx_i) b=m1i=1∑m(yi−wxi)
对于数据集 D D D ,样本由 d d d 个属性描述,多元线性回归试图学得:
f ( x i ) = w T x i + b , 使 得 f ( x i ) ≅ y i f(x_i) = \pmb{w}^T \pmb{x}_i + b,使 得 f(\pmb{x}_i)\cong y_i f(xi)=wwwTxxxi+b,使得f(xxxi)≅yi
类似的,可利用最小二乘法来对 w \pmb{w} www 和 b b b 进行估计。我们把 w \pmb{w} www 和 b b b 吸收入向量形式 w ^ = ( w ; b ) \hat{\pmb{w}} = (\pmb{w};b) www^=(www;b),相应的,把数据集 D D D 表示为一个 m × ( d + 1 ) m\times(d+1) m×(d+1) 大小的矩阵 X X X,再把标记也写成向量形式 y = ( y 1 , y 2 , . . . y m ) y=(y_1,y_2,...y_m) y=(y1,y2,...ym)。
X = [ x 11 x 12 ⋯ x 1 d 1 x 21 x 22 ⋯ x 2 d 1 ⋮ ⋮ ⋱ ⋮ ⋮ x m 1 x m 2 ⋯ x m d 1 ] = [ x 1 T 1 x 2 T 1 ⋮ ⋮ x m T 1 ] X=\begin{bmatrix} {x_{11}}&{x_{12}}&{\cdots}&{x_{1d}}&1\\ {x_{21}}&{x_{22}}&{\cdots}&{x_{2d}}&1\\ {\vdots}&{\vdots}&{\ddots}&{\vdots}&{\vdots}\\ {x_{m1}}&{x_{m2}}&{\cdots}&{x_{md}}&1\\ \end{bmatrix}=\begin{bmatrix} {\pmb{x}^T_{1}}&1\\ {\pmb{x}^T_{2}}&1\\ {\vdots}&{\vdots}\\ {\pmb{x}^T_{m}}&1\\ \end{bmatrix} X=⎣⎢⎢⎢⎡x11x21⋮xm1x12x22⋮xm2⋯⋯⋱⋯x1dx2d⋮xmd11⋮1⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡xxx1Txxx2T⋮xxxmT11⋮1⎦⎥⎥⎥⎤
因此我们可以得到
W ^ ∗ = a r g m i n w ^ ( y − X w ^ ) T ( y − X w ^ ) \hat{W}^* = argmin_{\hat{w}}(\pmb{y}-\pmb{X\hat{w}})^T(\pmb{y}-\pmb{X\hat{w}}) W^∗=argminw^(yyy−Xw^Xw^Xw^)T(yyy−Xw^Xw^Xw^)
令 E ( w ^ ) = ( y − X w ^ ) T ( y − X w ^ ) E(\hat{w})=(\pmb{y}-\pmb{X\hat{w}})^T(\pmb{y}-\pmb{X\hat{w}}) E(w^)=(yyy−Xw^Xw^Xw^)T(yyy−Xw^Xw^Xw^),对 w ^ \hat{w} w^求导得到
∂ E w ^ ∂ w ^ = 2 X T ( X w ^ − y ) \frac{\partial E_{\pmb{\hat{w}}}}{\partial \pmb{\hat{w}}} = 2\pmb{X}^T(\pmb{X\hat{w}}-\pmb{y}) ∂w^w^w^∂Ew^w^w^=2XXXT(Xw^Xw^Xw^−yyy)
令偏导为零可得
w ^ ∗ = ( X T X ) − 1 X T y \pmb{\hat{w}^*} = (\pmb{X}^T\pmb{X})^{-1}\pmb{X}^T \pmb{y} w^∗w^∗w^∗=(XXXTXXX)−1XXXTyyy
最终线性回归模型为:
f ( x i ^ ) = x i ^ T ( X T X ) − 1 X T y f(\hat{\pmb{x}_i}) = \hat{\pmb{x}_i}^T(\pmb{X}^T\pmb{X})^{-1}\pmb{X}^T \pmb{y} f(xxxi^)=xxxi^T(XXXTXXX)−1XXXTyyy
此时可以解出多个 w ^ \pmb{\hat{w}} w^w^w^,它们都能使均方误差最小化,选择哪一个解作为输出,将由学习算法的归纳偏好决定,常见的做法是引入正则化项。
我们知道线性回归的一个问题就是欠拟合,将不能取得很好的预测效果。因为它是具有最小均方误差的无偏估计。解决这个问题的方法就是允许在估计中一些偏差。其中一个非常有效的方法就是局部加权线性回归(Locally Weighted linear regression)。
局部加权线性回归的核心思想是,对于我们要预测的点 x x x,我们聚焦于 x x x周围的点 x i x_i xi,并利用 x i x_i xi,做线性回归,来求得 x x x局部的线性函数。
LWR的代价函数为:
J ( θ ) = ∑ i = 1 m w ( i ) ( y ( i ) − θ T x ( i ) ) 2 J(\theta) = \sum_{i=1}^{m}w(i)(y(i)-\theta^Tx^{(i)})^2 J(θ)=i=1∑mw(i)(y(i)−θTx(i))2
w ( i ) w(i) w(i)是权重,它是通过要预测的点 x x x与数据集中的点 x i x_i xi的距离来确定的,距离越近, 权值越大,相应的误差值 ( y ( i ) − θ T x ( i ) ) (y(i)-\theta^Tx^{(i)}) (y(i)−θTx(i))影响就越大(可以达到增加多项式的效果),反之同理。我们通常使用如下的权重函数:
w ( i ) = e x p ( − ( x ( i ) − x 2 ) 2 τ 2 ) w(i) = exp(-\frac{(x^{(i)}-x^2)}{2\tau^2}) w(i)=exp(−2τ2(x(i)−x2))
其中, x x x是我们的要预测的点, τ \tau τ是我们需要指定的参数,他控制了权值随距离变化的速率,然后我们可以通过梯度下降或者正规方程(求偏导等于零)的方法来求解我们的 θ \theta θ。
线性回归算法针对于回归学习,而对于分类任务,我们则需要在广义线性模型中,找到一个单调可微函数将分类任务的真实标记 y y y 与线性回归模型的预测值联系起来。对于二分类问题,最理想的函数便是逻辑函数/sigmoid函数:
对于上式变形可得:
l n y 1 − y = w T x + b ln\frac{y}{1-y} = w^Tx+b ln1−yy=wTx+b
若将 y y y 看作样本为正例的可能性, 1 − y 1-y 1−y 则是其反例的可能性,二者的比值 y 1 − y \frac{y}{1-y} 1−yy 称为“几率”,反映了样本作为正例的可能性。对几率取对数则得到“对数几率”(log odds,亦称logit): l n y 1 − y ln\frac{y}{1-y} ln1−yy
由此看出,逻辑回归的实质是用线性回归模型的预测结果去逼近真实标记的对数几率,因此也称为“对数几率回归”。虽然它的名字是“回归”,但实际却是一种分类学习方法。
对于逻辑函数 g ( z ) g(z) g(z) 的导数有如下的性质:
g ′ ( z ) = d d z 1 1 + e − z = 1 ( 1 + e − z ) e − z = 1 1 + e − z ( 1 − 1 ( 1 + e − z ) ) = g ( z ) ( 1 − g ( z ) ) \begin{aligned}g'(z) &= \frac{d}{dz}\frac{1}{1+e^{-z}} \\&= \frac{1}{(1+e^{-z})}e^{-z} \\&= \frac{1}{1+e^{-z}}(1-\frac{1}{(1+e^{-z})})\\& =g(z)(1-g(z)) \end{aligned} g′(z)=dzd1+e−z1=(1+e−z)1e−z=1+e−z1(1−(1+e−z)1)=g(z)(1−g(z))
我们采用最大似然法来拟合参数,首先假设:
P ( y = 1 ∣ x ; θ ) = g ( θ T x ) P(y=1|x;\theta) = g(\theta^Tx) P(y=1∣x;θ)=g(θTx)
P ( y = 0 ∣ x ; θ ) = 1 − g ( θ T x ) P(y=0|x;\theta) = 1-g(\theta^Tx) P(y=0∣x;θ)=1−g(θTx)
因此对于二分类问题,我们可以得到:
p ( y ∣ x ; θ ) = ( g ( θ T x ) ) y ( 1 − g ( θ T x ) ) 1 − y p(y|x;\theta) = (g(\theta^Tx))^y(1-g(\theta^Tx))^{1-y} p(y∣x;θ)=(g(θTx))y(1−g(θTx))1−y
假设m个训练样本都是各自独立生成的,那么参数的似然函数可以如下表示
L ( θ ) = p ( y ⃗ ∣ X ; θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = ∏ i = 1 m ( g ( θ T x ( i ) ) ) y ( i ) ( 1 − g ( θ T x ( i ) ) ) 1 − y ( i ) \begin{aligned} L(\theta)&=p(\vec{y}|X;\theta)\\&=\prod_{i=1}^{m}p(y^{(i)}|x^{(i)};\theta) \\&= \prod_{i=1}^{m}(g(\theta^Tx^{(i)}))^{y^{(i)}}(1-g(\theta^Tx^{(i)}))^{1-y^{(i)}} \end{aligned} L(θ)=p(y∣X;θ)=i=1∏mp(y(i)∣x(i);θ)=i=1∏m(g(θTx(i)))y(i)(1−g(θTx(i)))1−y(i)
对似然函数取对数,更容易计算最大值,我们得到:
l ( θ ) = l o g L ( θ ) = ∑ i = 1 m y ( i ) l o g ( g ( θ T x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − g ( θ T x ( i ) ) ) \begin{aligned} l(\theta) &= logL(\theta) \\&=\sum_{i=1}^{m}y^{(i)}log(g(\theta^Tx^{(i)}))+(1-y^{(i)})log(1-g(\theta^Tx^{(i)})) \end{aligned} l(θ)=logL(θ)=i=1∑my(i)log(g(θTx(i)))+(1−y(i))log(1−g(θTx(i)))
为了让似然函数最大,我们采用梯度上升法( θ : = θ + α ∇ θ l ( θ ) \theta:=\theta + \alpha\nabla_{\theta}l(\theta) θ:=θ+α∇θl(θ) ),因此我们从一组训练样本 ( x , y ) (x,y) (x,y) 开始,求导来求出随机梯度上升规则:
∂ ∂ θ j = ( y 1 g ( θ T x ) − ( 1 − y ) 1 1 − g ( θ T x ) ) ∂ ∂ θ j g ( θ T x ) = ( y 1 g ( θ T x ) − ( 1 − y ) 1 1 − g ( θ T x ) ) g ( θ T x ) ( 1 − g ( θ T x ) ) ∂ ∂ θ j θ T x = ( y ( 1 − g ( θ T x ) ) − ( 1 − y ) g ( θ T x ) ) x j = ( y − g ( θ T x ) ) x j \begin{aligned} \frac{ \partial }{\partial \theta_{j}} &= (y\frac{1}{g(\theta^Tx)}-(1-y)\frac{1}{1-g(\theta^Tx)})\frac{ \partial }{\partial \theta_{j}}g(\theta^Tx) \\&=(y\frac{1}{g(\theta^Tx)}-(1-y)\frac{1}{1-g(\theta^Tx)})g(\theta^Tx)(1-g(\theta^Tx))\frac{ \partial }{\partial \theta_{j}}\theta^Tx \\&=(y(1-g(\theta^Tx))-(1-y)g(\theta^Tx))x_j \\&=(y-g(\theta^Tx))x_j \end{aligned} ∂θj∂=(yg(θTx)1−(1−y)1−g(θTx)1)∂θj∂g(θTx)=(yg(θTx)1−(1−y)1−g(θTx)1)g(θTx)(1−g(θTx))∂θj∂θTx=(y(1−g(θTx))−(1−y)g(θTx))xj=(y−g(θTx))xj
上述式子中,我们用到了逻辑函数求导的定理 g ′ ( z ) = g ( z ) ( 1 − g ( z ) ) g'(z)=g(z)(1-g(z)) g′(z)=g(z)(1−g(z)),因此我们可以到随机梯度上升规则:
现实中常遇到多分类学习任务,有些二分类学习方法可直接推广到多分类问题,但更多情形下,我们是基于一些基本策略,利用二分类学习器来解决多分类问题。
考虑N个类别 C 1 , C 2 , . . . , C N C_1,C_2,...,C_N C1,C2,...,CN,多分类学习的基本思路是“拆解法”,即将多分类任务拆解为若干个二分类任务求解。经典的拆分策略有三种:“一对一”(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),...,(x_m,y_m)},y_i \in \{C_1,C_2,...,C_N\} D=(x1,y1),(x2,y2),...,(xm,ym),yi∈{ C1,C2,...,CN}。OvO将这N个类别两两配对,从而产生N(N-1)/2个二分类任务。测试阶段,新样本将同时提交给所有分类器,于是我们将得到N(N-1)/2个分类结果,最终结果可以通过投票产生:即把被预测的最多的类别作为最终分类结果。
给定数据集 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),...,(x_m,y_m)},y_i \in \{C_1,C_2,...,C_N\} D=(x1,y1),(x2,y2),...,(xm,ym),yi∈{ C1,C2,...,CN}。OvR每次将一个类的样例作为正例、所有其他的样例作为反例来训练N个分类器。测试阶段,若仅有一个分类器预测为正类,则对应的类别标记作为最终分类结果。若有多个分类器预测为正类,则通常考虑各个分类器的预测置信度,选择置信度最大的类别标记作为分类结果。
可以看出,OvR只需要训练N个分类器,而OvO需要训练N(N-1)/2个分类器,但在训练时,OvR的每个分类器均使用全部训练样例,而OvO的每个分类器仅用到两个类的样例。因此,在类别很多时,OvO的训练时间开销通常比OvR的小。至于预测性能,多数情况下二者差不多。
MvM每次将若干个类作为正类,若干个其他类作为反类,MvM的正、反类构造必须有特殊的设计,不能随意选取,最常用的MvM技术是“纠错输出码”(ECOC)。
即利用纠错编码的思想,对于某个、某些分类器的错误可以进行纠正,并精准定位到某一个类别。
线性判别分析(Linear Discriminant Analysis, LDA)是一种经典的线性学习算法。LDA的思想非常朴素,给定训练样例集,设法将样例的投影点尽可能接近、异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的直线上,再根据投影点的位置来确定新的类别。
对于给定数据集 D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) , y i ∈ { 0 , 1 } D={(x_1,y_1),(x_2,y_2),...,(x_m,y_m)},y_i \in \{0,1\} D=(x1,y1),(x2,y2),...,(xm,ym),yi∈{ 0,1},将数据投影到直线 w w w 上,则两样本的中心在直线上的投影分别为 w T μ 0 w^T\mu_0 wTμ0 和 w T μ 1 w^T\mu_1 wTμ1。
我们定义“类内散度矩阵”为
S w = ∑ 0 + ∑ 1 = ∑ x ∈ X 0 ( x − μ 0 ) ( x − μ 0 ) T + ∑ x ∈ X 1 ( x − μ 1 ) ( x − μ 1 ) T \begin{aligned} S_w &= \sum_{0} + \sum_1 \\&= \sum_{x\in X_0}(x-\mu_0)(x-\mu_0)^T +\sum_{x\in X_1}(x-\mu_1)(x-\mu_1)^T \end{aligned} Sw=0∑+1∑=x∈X0∑(x−μ0)(x−μ0)T+x∈X1∑(x−μ1)(x−μ1)T
以及“类间散度矩阵”为
S b = ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T S_b=(\mu_0-\mu_1)(\mu_0-\mu_1)^T Sb=(μ0−μ1)(μ0−μ1)T
因此我们可以得到最大化的目标函数“广义瑞利商”:
J = w T S b w w T S w w J = \frac{w^TS_bw}{w^TS_ww} J=wTSwwwTSbw
如何确定 w w w ,我们注意到分子分母都是关于 w w w 的二次项,因此 J J J 的解与 w w w 的长度无关,只与其方向有关。不失一般性的令 w T S w w = 1 w^TS_ww=1 wTSww=1 ,则我们可以得到:
m i n w − w T S b w s . t . w T S w w = 1 min_{w} -w^TS_bw \\ s.t. \ w^TS_ww=1 minw−wTSbws.t. wTSww=1
利用拉格朗日乘子法,可以解得:
w = S w − 1 ( μ 0 − μ 1 ) w = S^{-1}_w(\mu_0-\mu_1) w=Sw−1(μ0−μ1)
我们可以将LDA推广到多分类任务中,假定存在N个分类,且第 i i i 类示例数为 m i m_i mi.
先定义“全局散度矩阵”为
S t = S b + S w = ∑ i = 1 m ( x i − μ ) ( x i − μ ) T \begin{aligned} S_t &= S_b+S_w \\&=\sum_{i=1}^m (x_i-\mu)(x_i-\mu)^T \end{aligned} St=Sb+Sw=i=1∑m(xi−μ)(xi−μ)T
其中 μ \mu μ 是所有示例的均值向量。我们将“类内散度矩阵”重定义为每个类别的散度矩阵之和,即
S w = ∑ i = 1 N S w i = ∑ i = 1 N ∑ x ∈ X i ( x − μ i ) ( x − μ i ) T \begin{aligned} S_w &= \sum_{i=1}^{N}S_{w_i} \\&=\sum_{i=1}^{N} \ \sum_{x\in X_i} (x-\mu_i)(x-\mu_i)^T \end{aligned} Sw=i=1∑NSwi=i=1∑N x∈Xi∑(x−μi)(x−μi)T
由上述式子可得
S b = S t − S w = ∑ i = 1 N m i ( μ i − μ ) ( μ i − μ ) T \begin{aligned} S_b &= S_t-S_w \\ &=\sum_{i=1}^N m_i(\mu_i-\mu)(\mu_i-\mu)^T \end{aligned} Sb=St−Sw=i=1∑Nmi(μi−μ)(μi−μ)T
显然,多分类LDA有多种实现方法:使用 S b , S t , S w S_b, S_t,S_w Sb,St,Sw 中任意两个即可,常见的一种实现是采用优化目标
m i n w − t r ( w T S b w ) t r ( w T S w w ) min_{w} -\frac{tr(w^TS_bw)}{tr(w^TS_ww)} minw−tr(wTSww)tr(wTSbw)
其中tr(.)表示矩阵的迹, w w w的闭式解则是 S w − 1 S b S_w^{-1}S_b Sw−1Sb的 d ′ d' d′个最大非零广义特征值所对应的特征向量组成的矩阵, d ′ ≤ N − 1 d'\le N-1 d′≤N−1。
若将 w w w视作一个投影矩阵,则多分类LDA将样本投影到 d ′ d' d′维空间, d ′ d' d′通常远小于数据原有的属性数。于是,可通过这个投影来减小样本点的维数,且投影过程中使用了类别信息,因此LDA也常被视为一种经典的监督降维技术。
类别不平衡是指分类任务中不同类别的训练样例数目差别很大的情况。这种情况往往对我们分类结果的准确性产生一定的影响。
如线性分类器中,我们用 y = w T x + b y=w^Tx+b y=wTx+b对新样本x进行分类时,事实上是在用预测出的 y y y值与一个阈值进行比较,例如通常在 y > 0.5 y>0.5 y>0.5时判别为正例,否则为反例。 y y y实际上表达了正例的可能性,几率 y 1 − y \frac{y}{1-y} 1−yy则反映了正例可能性与反例可能性的比值,阈值设置为0.5恰表明分类器认为正、反例可能性相同,即分类器决策规则为:若 y 1 − y > 1 \frac{y}{1-y}>1 1−yy>1,则预测为正例。
而当正负比例严重失衡时,该分类方法则会出现一定的问题,例如有998个反例,2个正例,那么学习方法只需要返回一个永远预测为反例的学习器,就能达到99.8%的精度。
因此有以下几种改进方法:
我们令 m + m^+ m+表示正例数目, m − m^- m−表示反例数目,则观测几率为 m + m − \frac{m^+}{m^-} m−m+。由于我们通常假设训练集是真实样本总体的无偏采样,因此观测几率就代表了真实几率,所以我们只需令:
y ′ 1 − y ′ = y 1 − y × m − m + \frac{y'}{1-y'} = \frac{y}{1-y} \times \frac{m^-}{m^+} 1−y′y′=1−yy×m+m−
再放缩虽然思想简单,但实际操作并不容易。实际中我们往往无法保证“训练集是真实样本总体的无偏采样”,具有一定的局限性。
再放缩也是“代价敏感学习”的基础,即研究非均等代价下的学习。
直接对训练集里的反类样例进行欠采样,即去除一些反例使得正、反例数目接近,再进行学习。
欠采样法若随机丢弃反例,可能会丢失一些重要的信息。欠采样法的代表算法EasyEnsemble是利用集成学习机制,将反例划分为若干个集合供不同学习器使用,这样对每个学习起来看都进行了欠采样,但在全局来看却并不会丢失重要信息。
对训练集里的正类样例进行过采样,即增加一些正例使得正、反例数目接近,再进行学习。
过采样法不能简单地对初始正例样本进行重复采样,否则会招致严重的过拟合。过采样法的代表算法SMOTE是通过对训练集里的正例进行插值来产生额外的正例。
直接基于原始训练集进行学习,但在用训练好的分类器进行预测时,将 y ′ 1 − y ′ = y 1 − y × m − m + \frac{y'}{1-y'} = \frac{y}{1-y} \times \frac{m^-}{m^+} 1−y′y′=1−yy×m+m−嵌入到其决策过程中。