Logistic 回归

假设我们有一个多元线性回归模型,其中因变量 y 取值 0 或 1,自变量 X 是一个 p 维向量。我们可以写出线性模型如下:

y = β 0 + β 1 X 1 + β 2 X 2 + … + β p X p y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \ldots + \beta_p X_p y=β0+β1X1+β2X2++βpXp

为了将这个线性模型转换成概率,我们可以使用Sigmoid函数:

p = e ( β 0 + β 1 X 1 + β 2 X 2 + … + β p X p ) 1 + e ( β 0 + β 1 X 1 + β 2 X 2 + … + β p X p ) p = \frac{e^{(\beta_0 + \beta_1 X_1 + \beta_2 X_2 + \ldots + \beta_p X_p)}}{1+e^{(\beta_0 + \beta_1 X_1 + \beta_2 X_2 + \ldots + \beta_p X_p)}} p=1+e(β0+β1X1+β2X2++βpXp)e(β0+β1X1+β2X2++βpXp)

在这个模型中, p p p y = 1 y = 1 y=1 的概率,即 P ( Y = 1 ∣ X ) P(Y=1|X) P(Y=1∣X) 。因此, 1 − p 1-p 1p 就是 y = 0 y=0 y=0 的概率,即 P ( Y = 0 ∣ X ) P(Y=0|X) P(Y=0∣X)

最大似然估计

首先我们引入 odds 的概念。Odds是成功概率和失败概率的比值:

odds = p 1 − p \text{odds} = \frac{p}{1-p} odds=1pp

p = odds 1 + odds = e ( β 0 + β 1 X 1 + β 2 X 2 + … + β p X p ) 1 + e ( β 0 + β 1 X 1 + β 2 X 2 + … + β p X p ) p = \frac{\text{odds}}{1 + \text{odds}} = \frac{e^{(\beta_0 + \beta_1 X_1 + \beta_2 X_2 + \ldots + \beta_p X_p)}}{1 + e^{(\beta_0 + \beta_1 X_1 + \beta_2 X_2 + \ldots + \beta_p X_p)}} p=1+oddsodds=1+e(β0+β1X1+β2X2++βpXp)e(β0+β1X1+β2X2++βpXp)

然后我们对 odds 取对数,得到 log-odds (logit) 变换:

logit ( p ) = ln ( p 1 − p ) = β 0 + β 1 X 1 + β 2 X 2 + … + β p X p \text{logit}(p) = \text{ln}\left(\frac{p}{1-p}\right) = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \ldots + \beta_p X_p logit(p)=ln(1pp)=β0+β1X1+β2X2++βpXp

这就是我们的Logistic回归模型。注意这个模型是线性的,关于 X 和 log-odds ,我们可以使用最大似然估计法来估计 β i β_i βi

Logistic回归模型中,某事件发生的概率p可以表示为:

p ( Y = 1 ∣ X ; β ) = e ( β 0 + β 1 X 1 + β 2 X 2 + … + β p X p ) 1 + e ( β 0 + β 1 X 1 + β 2 X 2 + … + β p X p ) p(Y=1|X;β) = \frac{e^{(\beta_0 + \beta_1 X_1 + \beta_2 X_2 + \ldots + \beta_p X_p)}}{1 + e^{(\beta_0 + \beta_1 X_1 + \beta_2 X_2 + \ldots + \beta_p X_p)}} p(Y=1∣X;β)=1+e(β0+β1X1+β2X2++βpXp)e(β0+β1X1+β2X2++βpXp)

然后我们有n个独立的观测结果,即数据集 D = {(y1, x1), (y2, x2), …, (yn, xn)}。因为这些观测结果是独立的,所以他们的联合概率分布就是各个单独概率分布的乘积。我们可以写出似然函数L(β)如下:

L ( β ∣ D ) = Π i = 1 n p ( Y = y i ∣ X = x i ; β ) = Π i = 1 n [ h ( x i ) ] y i ∗ [ 1 − h ( x i ) ] 1 − y i L(β|D) = Π_{i=1}^{n} p(Y=y_i|X=x_i;β) = Π_{i=1}^{n} [h(x_i)]^{y_i} * [1 - h(x_i)]^{1 - y_i} L(βD)=Πi=1np(Y=yiX=xi;β)=Πi=1n[h(xi)]yi[1h(xi)]1yi

其中 h ( x i ) h(x_i) h(xi) 是 sigmoid 函数,它将输入的线性函数映射到 0 和 1 之间,即 h ( x i ) = 1 1 + e − ( β T ⋅ x i ) h(x_i) = \frac{1}{1 + e^-(β^T \cdot x_i)} h(xi)=1+e(βTxi)1。这里的 β T ⋅ x i β^T \cdot x_i βTxi 是参数 β β β 和特征向量 x x x 的点积。

为了简化计算,我们通常取似然函数的对数,将乘法转换为加法,得到对数似然函数 l ( β ) l(β) l(β)

l ( β ∣ D ) = l o g ( L ( β ∣ D ) ) = Σ i = 1 n y i ∗ l o g ( h ( x i ) ) + ( 1 − y i ) ∗ l o g ( 1 − h ( x i ) ) l(β|D) = log(L(β|D)) = Σ_{i=1}^{n} y_i * log(h(x_i)) + (1 - y_i) * log(1 - h(x_i)) l(βD)=log(L(βD))=Σi=1nyilog(h(xi))+(1yi)log(1h(xi))

我们的目标是找到参数β,使得对数似然函数最大。可以通过求解使得 l ( β ∣ D ) l(β|D) l(βD) 达到最大值的 β β β 值,通常使用梯度下降或者牛顿法等优化算法。

线性判别分析 (Linear Discriminant Analysis, LDA)

LDA是一种用于分类的统计技术。它基于一个设定,即每个分类中的数据都遵循高斯(正态)分布,并且所有类别的协方差矩阵都相同。然后,LDA 试图找到通过这些高斯分布划分类别的最佳方式。

在多元高斯分布假设下,LDA 仅需要估计每个类别的均值向量和共享的协方差矩阵。这些参数可以通过最大化似然函数得到,具体的公式如下:

类别 k 的均值向量的估计是由该类别所有样本的均值计算得出的:

μ ^ k = 1 n k ∑ i : y i = k x i \hat{\mu}_k = \frac{1}{n_k} \sum_{i: y_i = k} x_i μ^k=nk1i:yi=kxi
共享的协方差矩阵的估计是由所有类别的加权协方差矩阵计算得出的:

σ ^ 2 = 1 n − K ∑ k = 1 K ∑ i : y i = k ( x i − μ ^ k ) 2 \hat{\sigma}^2 = \frac{1}{n - K} \sum_{k=1}^K \sum_{i: y_i = k} (x_i - \hat{\mu}_k)^2 σ^2=nK1k=1Ki:yi=k(xiμ^k)2
类别 k 的先验概率的估计是由该类别的样本占总样本的比例计算得出的:

π ^ k = n k n \hat{\pi}_k = \frac{n_k}{n} π^k=nnk
其中,n 是总的样本数,K 是类别的数量,n_k 是类别 k 的样本数,x_i 是第 i 个样本,y_i 是第 i 个样本的类别。

然后我们可以使用下面的公式计算给定特征 x 的观测值属于类别 k 的后验概率:

p k ( x ) = P ( Y = k ∣ X = x ) = π k f k ( x ) ∑ l = 1 K π l f l ( x ) p_k(x) = P(Y = k|X = x) = \frac{\pi_k f_k(x)}{\sum_{l=1}^{K} \pi_l f_l(x)} pk(x)=P(Y=kX=x)=l=1Kπlfl(x)πkfk(x)
最后,我们将观测值分配给具有最大后验概率的类别。

在一元变量的情况下,LDA 的决策边界可以由以下条件得出:

p 1 ( x ) p 2 ( x ) > 1 \frac{p_1(x)}{p_2(x)} > 1 p2(x)p1(x)>1

这等效于:

x > μ 1 2 − μ 2 2 2 ( μ 1 − μ 2 ) = μ 1 + μ 2 2 x > \frac{\mu_1^2 - \mu_2^2}{2(\mu_1 - \mu_2)} = \frac{\mu_1 + \mu_2}{2} x>2(μ1μ2)μ12μ22=2μ1+μ2

那么决策边界就在他们的均值中点。

这种情况下的决策边界是线性的,这也就是 LDA 的名字所来源。对于多维度的数据,决策边界仍然是线性的,这是因为对数概率比的线性性质。这就是 LDA 能够对数据进行线性分类的原因。

LDA (线性判别分析)和逻辑回归是两种常用的分类方法,它们都可以用于二分类或多分类问题。尽管它们在某些方面有相似之处(例如,它们都使用线性决策边界进行分类),但是在其他方面,它们有一些重要的区别。

当样本量小并且预测变量 X 大致呈正态分布时,LDA 通常比逻辑回归更稳定。这是因为 LDA 在建模时对数据分布有一定的假设(即每个类别的数据都服从正态分布,且各类别的数据具有相同的协方差矩阵),在满足这些假设的情况下,LDA 的表现通常会更好。然而,如果这些假设被严重违反,那么 LDA 的性能可能就会受到影响。

此外,当响应类别超过两类时,LDA 往往更受欢迎。这是因为 LDA 不仅能提供类别的预测,还能给出观测值在各类别上的后验概率,这使得 LDA 的结果具有更好的可解释性。

在类别之间有明显分隔的情况下,逻辑回归的参数估计可能会变得不稳定。这是因为逻辑回归是基于极大似然估计进行参数估计的,而在类别完全分离的情况下,似然函数可能不会收敛,导致估计的参数值非常大,从而影响模型的稳定性。而 LDA 并不受此问题的影响,因为它是基于贝叶斯定理进行分类的,即使在类别完全分离的情况下,也能得到稳定的结果。

支持向量机 (Support Vector Machine, SVM)

SVM(支持向量机)是一种用于分类和回归分析的监督学习模型。SVM的目标是找到一个最优的超平面,这个超平面称为最大边距超平面,也就是使得该超平面到最近的训练样本点的距离最大。

Hard-margin SVM

假设我们有一个线性分类问题,数据点为 x i x_i xi,标签为 y i y_i yi。SVM试图找到一个超平面来区分数据,超平面由向量 w w w和偏置 b b b定义,即:

f ( x ) = w T x + b f(x) = w^T x + b f(x)=wTx+b

如果一个点位于超平面的一侧,则 f ( x ) > 0 f(x) > 0 f(x)>0,反之则 f ( x ) < 0 f(x) < 0 f(x)<0。我们要找到满足 y i ( w T x i + b ) ≥ 1 y_i (w^T x_i + b) \geq 1 yi(wTxi+b)1的超平面,这是因为在这种情况下,如果 y i y_i yi是1或-1,点 x i x_i xi就被正确分类。

其中 w w w是超平面的法向量, b b b是偏移项。给定一个数据点 x i x_i xi,其到超平面的距离为:

∣ w T x i + b ∣ ∣ ∣ w ∣ ∣ \frac{|w^T x_i + b|}{||w||} ∣∣w∣∣wTxi+b

其中 ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣表示 w w w的二范数。我们的目标是找到 w w w b b b,使得到超平面的最小距离最大,这可以通过以下优化问题解决:

minimize w , b 1 2 ∣ ∣ w ∣ ∣ 2 subject to y i ( w T x i + b ) ≥ 1 ,    i = 1 , … , m \begin{aligned} & \underset{w, b}{\text{minimize}} & & \frac{1}{2}||w||^2 \\ & \text{subject to} & & y_i (w^T x_i + b) \geq 1, \; i = 1, \ldots, m \end{aligned} w,bminimizesubject to21∣∣w2yi(wTxi+b)1,i=1,,m

这是一个凸二次规划问题,可以通过拉格朗日乘数法和KKT条件求解。具体来说,我们引入拉格朗日乘数 λ i ≥ 0 \lambda_i \geq 0 λi0,构造拉格朗日函数:

L ( w , b , λ ) = 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i = 1 m λ i [ y i ( w T x i + b ) − 1 ] L(w, b, \lambda) = \frac{1}{2}||w||^2 - \sum_{i=1}^{m} \lambda_i [y_i (w^T x_i + b) - 1] L(w,b,λ)=21∣∣w2i=1mλi[yi(wTxi+b)1]

我们的目标是最小化关于 w w w b b b L ( w , b , λ ) L(w, b, \lambda) L(w,b,λ),同时最大化关于 λ \lambda λ L ( w , b , λ ) L(w, b, \lambda) L(w,b,λ)

对于每个样本点,我们都有一个拉格朗日乘子 λ i \lambda_i λi。我们对 w w w b b b求偏导,并将它们设为0,得到:

w = ∑ λ i y i x i w = \sum \lambda_i y_i x_i w=λiyixi

0 = ∑ λ i y i 0 = \sum \lambda_i y_i 0=λiyi

我们可以用这些方程替换目标函数,得到一个只包含 λ \lambda λ的函数,得到对偶问题:

max ⁡ λ ( ∑ λ i − 1 2 ∑ ∑ λ i λ j y i y j x i T x j ) subject to  λ i ≥ 0 , ∑ i = 1 m λ i y i = 0 \begin{aligned} & \max\limits_\lambda (\sum \lambda_i - \frac{1}{2} \sum \sum \lambda_i \lambda_j y_i y_j x_i^T x_j)\\ & \text{subject to}\ \lambda_i \geq 0, \quad \sum_{i=1}^{m} \lambda_i y_i = 0 \end{aligned} λmax(λi21∑∑λiλjyiyjxiTxj)subject to λi0,i=1mλiyi=0

通过求解拉格朗日对偶问题来找到最优的 λ \lambda λ,我们就可以通过 λ \lambda λ来计算 w w w b b b,以及支持向量:

w ∗ = ∑ i = 1 m λ i y i x i w^* = \sum_{i=1}^{m} \lambda_i y_i x_i w=i=1mλiyixi

然而,并非所有的训练样本都对决策边界有贡献,因为在优化过程中,很多的 λ i \lambda_i λi都会变为0,只有对应于支持向量的 λ i \lambda_i λi才会大于0。因此, w w w其实是少数几个支持向量的线性组合,这大大减少了计算复杂度。支持向量是那些位于或者最靠近决策边界的样本点,它们满足 y i ( w T x i + b ) = 1 y_i(w^Tx_i+b)=1 yi(wTxi+b)=1。支持向量对于决策边界的确定起着关键作用,移除任何一个支持向量都将改变决策边界。

所以,优化决策边界 w w w实际上就是在找到那些最关键的支持向量,它们将最大化分类间隔,帮助模型更好地进行预测。

对于新的测试样本 x x x,我们可以通过计算:

f ( x ) = ( w ∗ ) T x + b = ∑ i = 1 m λ i y i x i T x + b f(x) = (w^*)^T x + b = \sum_{i=1}^{m} \lambda_i y_i x_i^T x + b f(x)=(w)Tx+b=i=1mλiyixiTx+b
来预测它的标签。如果 f ( x ) > 0 f(x)>0 f(x)>0,我们预测标签为1,如果 f ( x ) < 0 f(x)<0 f(x)<0,我们预测标签为-1。

由于在实际计算中,只有支持向量对应的 λ i \lambda_i λi是大于0的,因此,预测新样本的标签时,只需要计算支持向量和新样本的内积即可,大大降低了计算复杂度。

Soft-margin SVM

对于软间隔SVM,我们引入松弛变量 ξ i ≥ 0 \xi_i \geq 0 ξi0来允许数据点可以在错误的一侧。相应地,我们的优化问题变为:

minimize w , b , ξ 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m ξ i subject to y i ( w T x i + b ) ≥ 1 − ξ i ,    i = 1 , … , m ξ i ≥ 0 ,    i = 1 , … , m \begin{aligned} & \underset{w, b, \xi}{\text{minimize}} & & \frac{1}{2}||w||^2 + C\sum_{i=1}^{m}\xi_i \\ & \text{subject to} & & y_i (w^T x_i + b) \geq 1 - \xi_i, \; i = 1, \ldots, m \\ & & & \xi_i \geq 0, \; i = 1, \ldots, m \end{aligned} w,b,ξminimizesubject to21∣∣w2+Ci=1mξiyi(wTxi+b)1ξi,i=1,,mξi0,i=1,,m

其中, C > 0 C>0 C>0是一个参数,控制着最大化间隔和确保所有样本点正确分类之间的权衡。 ξ i \xi_i ξi表示样本点 x i x_i xi的分类误差,如果 x i x_i xi在间隔边界之内或者被错误分类, ξ i > 0 \xi_i > 0 ξi>0;否则 ξ i = 0 \xi_i = 0 ξi=0

这是一个凸优化问题,可以使用例如序列最小优化(SMO)的方法求解。此外,同样可以利用核函数将数据映射到高维空间来处理非线性问题。

Non-linear SVM

对于非线性问题,我们希望通过将数据映射到更高维的空间(通过某种映射函数 Φ \Phi Φ)使得数据在新的空间中是线性可分的。然而,直接在高维空间中进行计算可能会非常耗时和复杂,尤其是当我们需要计算向量的点积时。

为了解决这个问题,我们可以使用一种称为“核技巧”的方法。核技巧的思想是,我们可以在原始空间中计算函数,这个函数等价于在新的高维空间中计算的点积。也就是说,我们可以找到一个函数 K ( u , v ) K(u, v) K(u,v),使得:

K ( u , v ) = Φ ( u ) T Φ ( v ) K(u, v) = \Phi(u)^T \Phi(v) K(u,v)=Φ(u)TΦ(v)
这样,我们可以直接在原始空间中计算 K ( u , v ) K(u, v) K(u,v),避免了显式地计算 Φ ( u ) \Phi(u) Φ(u) Φ ( v ) \Phi(v) Φ(v)并在高维空间中计算点积。这个函数 K ( u , v ) K(u, v) K(u,v)就是我们常说的“核函数”。

例如,对于多项式核函数,我们可以定义 K ( u , v ) = ( u T v + c ) d K(u, v) = (u^T v + c)^d K(u,v)=(uTv+c)d,其中 c c c是一个常数, d d d是多项式的阶数。对于径向基函数(Radial Basis Function, RBF)核,我们可以定义 K ( u , v ) = e − γ ∣ ∣ u − v ∣ ∣ 2 K(u, v) = e^{-\gamma||u-v||^2} K(u,v)=eγ∣∣uv2,其中 γ \gamma γ是一个超参数。这些核函数都满足Mercer’s定理,可以被用作核技巧。

在SVM的训练和分类中,我们可以使用核函数来替代原始空间中的点积。例如,在对偶问题的目标函数中,我们可以将 x i T x j x_i^T x_j xiTxj替换为 K ( x i , x j ) K(x_i, x_j) K(xi,xj)

max ⁡ W ( λ ) = ∑ i = 1 m λ i − 1 2 ∑ i , j = 1 m λ i λ j y i y j K ( x i , x j ) \max \quad W(\lambda) = \sum_{i=1}^{m} \lambda_i - \frac{1}{2} \sum_{i,j=1}^{m} \lambda_i \lambda_j y_i y_j K(x_i, x_j) maxW(λ)=i=1mλi21i,j=1mλiλjyiyjK(xi,xj)
在预测新样本的标签时,我们也可以将 x i T x x_i^T x xiTx替换为 K ( x i , x ) K(x_i, x) K(xi,x)

f ( x ) = ∑ i = 1 m λ i y i K ( x i , x ) + b f(x) = \sum_{i=1}^{m} \lambda_i y_i K(x_i, x) + b f(x)=i=1mλiyiK(xi,x)+b
这就是在SVM中使用核技巧的基本方法。通过选择合适的核函数,我们可以有效地处理非线性问题,同时避免了在高维空间中进行复杂的计算。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐