【统计方法】基础分类器: logistic, knn, svm, lda

发布于:2025-06-06 ⋅ 阅读:(21) ⋅ 点赞:(0)

均方误差(MSE)理解与分解

在监督学习中,均方误差衡量的是预测值与实际值之间的平均平方差:

MSE = E [ ( Y − f ^ ( X ) ) 2 ] \text{MSE} = \mathbb{E}[(Y - \hat{f}(X))^2] MSE=E[(Yf^(X))2]

MSE 可以分解为三部分:

MSE = Bias 2 ( f ^ ( x 0 ) ) + Var ( f ^ ( x 0 ) ) + Var ( ε ) \text{MSE} = \text{Bias}^2(\hat{f}(x_0)) + \text{Var}(\hat{f}(x_0)) + \text{Var}(\varepsilon) MSE=Bias2(f^(x0))+Var(f^(x0))+Var(ε)

  • Bias:预测值与真实值期望的偏离
  • Variance:模型在不同训练集下预测结果的波动
  • Irreducible error:不可消除的噪声

理解偏差-方差权衡有助于模型选择与调参。


模型复杂度与偏差-方差权衡

  • 高复杂度模型(如深度树、低 k 的 kNN):偏差小但方差大,容易过拟合。
  • 低复杂度模型(如线性回归、大 k 的 kNN):偏差大但方差小,容易欠拟合。

举例:

模型 调参方式 趋势
多项式回归 增加多项式次数 ↓偏差 ↑方差
kNN 减小 k ↓偏差 ↑方差
SVM 增大 C ↑偏差 ↓方差
核密度估计 减小带宽 ↓偏差 ↑方差

分类问题的基本框架

每个观测包含:

  • 类别标签 y y y(如 0/1)
  • 特征向量 x = ( x 1 , x 2 , . . . , x p ) \boldsymbol{x} = (x_1, x_2, ..., x_p) x=(x1,x2,...,xp)

模型目标是使用 x \boldsymbol{x} x 来预测 y y y

通常模型输出的是类别概率,例如某个样本属于类别 1 的概率为 0.85。需要通过设定阈值(如 0.5)将概率转化为具体类别。


分类 vs 聚类

  • 分类:监督学习,训练集中有类别标签
  • 聚类:无监督学习,无标签,需要自动识别分组结构

逻辑回归(Logistic Regression)

逻辑回归模型形式:

log ⁡ ( p 1 − p ) = x ⊤ β \log\left( \frac{p}{1 - p} \right) = \boldsymbol{x}^\top \boldsymbol{\beta} log(1pp)=xβ

其中 p = P ( Y = 1 ∣ x ) p = P(Y = 1 \mid \boldsymbol{x}) p=P(Y=1x)

Sigmoid 函数将线性预测值映射到 ( 0 , 1 ) (0, 1) (0,1)

p = 1 1 + exp ⁡ ( − x ⊤ β ) p = \frac{1}{1 + \exp(-\boldsymbol{x}^\top \boldsymbol{\beta})} p=1+exp(xβ)1

我们通过最大化对数似然函数估计 β \boldsymbol{\beta} β

ℓ ( β ) = ∑ i = 1 n [ y i log ⁡ ( p i ) + ( 1 − y i ) log ⁡ ( 1 − p i ) ] \ell(\beta) = \sum_{i=1}^{n} \left[ y_i \log(p_i) + (1 - y_i)\log(1 - p_i) \right] (β)=i=1n[yilog(pi)+(1yi)log(1pi)]

决策边界

p ≥ 0.5 p \ge 0.5 p0.5(即 x ⊤ β ≥ 0 \boldsymbol{x}^\top \boldsymbol{\beta} \ge 0 xβ0)时,预测为正类。


线性判别分析(LDA)

LDA 假设各类数据服从高斯分布,并具有相同协方差矩阵。利用贝叶斯公式:

P ( Y = k ∣ X = x ) = π k f k ( x ) ∑ ℓ = 1 K π ℓ f ℓ ( x ) P(Y = k \mid X = x) = \frac{\pi_k f_k(x)}{\sum_{\ell=1}^{K} \pi_\ell f_\ell(x)} P(Y=kX=x)==1Kπf(x)πkfk(x)

  • π k \pi_k πk:第 k k k 类的先验概率
  • f k ( x ) f_k(x) fk(x):特征在第 k k k 类的密度(正态分布)

LDA 适用于小样本、高斯假设成立的情况。


k 最近邻(kNN)

kNN 是一种非参数方法,预测类别基于最近的 k k k 个样本:

P ( Y = ℓ ∣ x ) = 1 k ∑ i ∈ N x k 1 { y i = ℓ } P(Y = \ell \mid x) = \frac{1}{k} \sum_{i \in N_x^k} \mathbb{1}_{\{y_i = \ell\}} P(Y=x)=k1iNxk1{yi=}

优点:

  • 简单直观
  • 适合非线性边界

缺点:

  • 计算量大
  • 对尺度敏感
  • 不易解释变量重要性

kNN 与 LDA 和逻辑回归的比较

k 最近邻(kNN)是一种完全非参数方法,这意味着它不对决策边界的形状作任何假设。

优点

  • 无需假设边界形状:kNN 自然适应数据的实际分布,能够捕捉复杂的、非线性的分类边界。
  • 模型训练几乎为零成本:不需要显式拟合参数,直接对新样本进行“查找邻居”。
  • 当决策边界高度非线性时,kNN 往往优于 LDA 与逻辑回归

缺点

  • 解释性差:kNN 不提供系数或变量重要性指标,因此难以解释哪些特征起到关键作用。
  • 计算效率低:预测新样本时需要计算与所有训练样本的距离,尤其在数据量大时成本高。
  • 对噪声敏感:由于是基于邻居投票,kNN 极易受到离群点影响。
  • 需要特征标准化:不同量纲的特征会影响距离计算,标准化是必要预处理步骤。

k 的选择至关重要

选择合适的邻居数 k k k 是模型性能的关键:

  • k k k 太小 → 模型过拟合,方差大,受噪声影响严重
  • k k k 太大 → 模型过于平滑,可能欠拟合,边界模糊

常用做法是通过交叉验证选择最优的 k k k

总结:

方法 假设前提 是否非参数 可解释性 适合边界类型
kNN ✅ 是 ❌ 低 非线性
LDA 高斯分布 + 同方差 ✗ 否 ✅ 强 线性
Logistic回归 决策函数线性 ✗ 否 ✅ 强 线性

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

支持向量机是一种强大的监督学习算法,其目标是寻找一个最优的决策边界(超平面),将不同类别的数据尽可能“间隔最大”地分开。

什么是超平面?

p p p 维空间中,超平面是一个 p − 1 p - 1 p1 维的平坦空间,其一般形式为:

β 0 + β 1 X 1 + β 2 X 2 + ⋯ + β p X p = 0 \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \cdots + \beta_p X_p = 0 β0+β1X1+β2X2++βpXp=0

其中,向量 ( β 1 , β 2 , . . . , β p ) (\beta_1, \beta_2, ..., \beta_p) (β1,β2,...,βp) 被称为法向量,它垂直于超平面的表面,定义了决策边界的方向。

在二维空间( p = 2 p = 2 p=2)中,这个超平面就是一条直线。

分隔超平面与最大间隔分类器(Maximal Margin Classifier)

假设我们将两类样本编码为:

  • 良性(Benign) y i = − 1 y_i = -1 yi=1
  • 恶性(Malignant) y i = + 1 y_i = +1 yi=+1

若一个超平面 f ( x i ) = β 0 + β 1 x i 1 + ⋯ + β p x i p f(x_i) = \beta_0 + \beta_1 x_{i1} + \cdots + \beta_p x_{ip} f(xi)=β0+β1xi1++βpxip 满足对所有样本 y i f ( x i ) > 0 y_i f(x_i) > 0 yif(xi)>0,则该超平面成功分隔了两类。

最大间隔分类器旨在最大化分类边界两侧距离最近样本的间隔 M M M

max ⁡ β 0 , β 1 , . . . , β p M subject to  ∑ j = 1 p β j 2 = 1 , y i ( β 0 + β 1 x i 1 + ⋯ + β p x i p ) ≥ M , ∀ i \max_{\beta_0, \beta_1, ..., \beta_p} M \\ \text{subject to } \sum_{j=1}^p \beta_j^2 = 1, \\ y_i(\beta_0 + \beta_1 x_{i1} + \cdots + \beta_p x_{ip}) \geq M, \quad \forall i β0,β1,...,βpmaxMsubject to j=1pβj2=1,yi(β0+β1xi1++βpxip)M,i

什么是支持向量?

支持向量是距离决策边界最近的训练样本,它们直接决定了超平面的最终位置。

非完美分隔与软间隔(Soft Margin)

现实中类别不可完全分离或存在噪声。此时我们引入软间隔支持向量分类器(Support Vector Classifier),允许部分样本违背间隔要求:

优化目标:

max ⁡ β 0 , . . . , β p , ε 1 , . . . , ε n M subject to ∑ j = 1 p β j 2 = 1 y i ( β 0 + β 1 x i 1 + ⋯ + β p x i p ) ≥ M ( 1 − ε i ) , ε i ≥ 0 ∑ i = 1 n ε i ≤ C \max_{\beta_0, ..., \beta_p, \varepsilon_1, ..., \varepsilon_n} M \\ \text{subject to} \sum_{j=1}^p \beta_j^2 = 1 \\ y_i(\beta_0 + \beta_1 x_{i1} + \cdots + \beta_p x_{ip}) \geq M(1 - \varepsilon_i), \quad \varepsilon_i \geq 0 \\ \sum_{i=1}^n \varepsilon_i \leq C β0,...,βp,ε1,...,εnmaxMsubject toj=1pβj2=1yi(β0+β1xi1++βpxip)M(1εi),εi0i=1nεiC

其中:

  • ε i \varepsilon_i εi 是松弛变量,表示样本违反边界规则的程度;
  • C C C 是超参数,控制对违反样本的容忍度。

解释:

  • ε i = 0 \varepsilon_i = 0 εi=0:在正确侧并超出间隔;
  • 0 < ε i ≤ 1 0 < \varepsilon_i \leq 1 0<εi1:在正确侧但落入间隔;
  • ε i > 1 \varepsilon_i > 1 εi>1:落入错误分类区域。

高维空间的扩展:非线性边界

有些问题的分类边界在原始特征空间中是非线性的。为处理此类问题,可以通过引入特征映射扩展空间,例如加入 X 1 2 X_1^2 X12, X 1 X 2 X_1X_2 X1X2, X 2 2 X_2^2 X22 等新特征,将二维空间变换为更高维空间。

在线性不可分的情况下,这种扩展使得在新空间中可以通过线性超平面完成分隔,在原始空间则呈现非线性边界

示例决策函数:

β 0 + β 1 X 1 + β 2 X 2 + β 3 X 1 2 + β 4 X 2 2 + β 5 X 1 X 2 = 0 \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \beta_3 X_1^2 + \beta_4 X_2^2 + \beta_5 X_1 X_2 = 0 β0+β1X1+β2X2+β3X12+β4X22+β5X1X2=0

使用核函数(Kernel Trick)

当维度高时显式构造新特征非常耗时,**核技巧(Kernel Trick)**提供了一种无需显式转换的方法:

内积形式

SVM 最终的分类函数可以表示为:

f ( x ) = β 0 + ∑ j = 1 n α j ⟨ x , x j ⟩ f(x) = \beta_0 + \sum_{j=1}^n \alpha_j \langle x, x_j \rangle f(x)=β0+j=1nαjx,xj

只需计算训练样本之间的内积。

核函数

将内积 ⟨ x i , x j ⟩ \langle x_i, x_j \rangle xi,xj 替换为核函数 K ( x i , x j ) K(x_i, x_j) K(xi,xj)

  • 多项式核: K ( x i , x j ) = ( 1 + ⟨ x i , x j ⟩ ) d K(x_i, x_j) = (1 + \langle x_i, x_j \rangle)^d K(xi,xj)=(1+xi,xj)d
  • 高斯径向基核(RBF): K ( x i , x j ) = exp ⁡ ( − γ ∥ x i − x j ∥ 2 ) K(x_i, x_j) = \exp(-\gamma \|x_i - x_j\|^2) K(xi,xj)=exp(γxixj2)

利用核函数可以构造非线性决策边界而无需显式构造新特征。

R 中的 SVM 实现示例:

svm.model <- svm(x = data.mat[,-3], y = data.mat[[3]],
                 kernel = "radial", type = "C-classification",
                 cost = 64, fitted = FALSE)

多分类扩展

标准 SVM 是为二分类设计的,处理多分类问题时常用以下两种方法:

  1. 一对多(One-vs-All):为每个类别训练一个分类器,与其他类别进行对比。
  2. 一对一(One-vs-One):每两个类别之间训练一个分类器,总共 K ( K − 1 ) / 2 K(K-1)/2 K(K1)/2 个分类器。

推荐:

  • 类别数 K K K 较小时,用一对一;
  • K K K 较大时,用一对多以降低计算量。

总结与测验

哪几个模型是非参数分类模型?

  • ✗ 逻辑回归(Logistic Regression) → 参数模型
  • ✓ 支持向量机(SVM) → 部分非参数(核方法)
  • ✓ kNN → 完全非参数
  • ✗ 线性判别分析(LDA) → 参数模型

总结

本周我们学习了四种核心分类方法:

方法 类型 特点 适用场景
逻辑回归 判别模型 输出概率,适合线性边界 简单任务,概率建模
LDA 生成模型 高斯假设,适合小样本 类别边界近似线性
kNN 非参数 无需训练,计算代价高,易过拟合 非线性分布,训练样本丰富
SVM 间隔模型 可构建非线性边界,适合高维稀疏数据 需要强分类性能,特征空间复杂

理解不同模型的假设和适用条件,有助于你在实践中做出更合理的模型选择。


网站公告

今日签到

点亮在社区的每一天
去签到