在其他条件不变的前提下,以下哪种做法容易引起机器学习中的过拟合问题:
A \mathcal A \quad A增加训练集的样本量
B \mathcal B \quad B减少神经网络隐藏层结点数量
C \mathcal C \quad C删除稀疏的特征
D SVM \mathcal D \quad \text{SVM} DSVM算法中使用高斯核替代线性核
关于机器学习中的过拟合( Overfitting \text{Overfitting} Overfitting)问题,本质上是:模型在训练数据集上能够获取效果不错的拟合;但在训练数据外的数据集上却不能很好地拟合数据。造成过拟合现象的原因主要分为以下几种:
从样本角度观察过拟合现象:
核心原因是采集的样本数据不足以代表处理任务的规则。
从模型角度观察过拟合现象:
关于样本分布不均匀产生的情况,有:
关于模型角度,主要分以下几种解决方式:
回归本题:
A \mathcal A\quad A 选项是针对样本分布不均匀的解决方式;
B \mathcal B\quad B 选项是针对降低模型复杂度的解决方式。这里不过多赘述。
关于 C \mathcal C\quad C 选项:删除稀疏特征本质上是降维的另一种表达方式。在最大投影方差角度观察主成分分析中介绍过,降维后新的正交基就是样本集合协方差矩阵 S \mathcal S S的特征值 λ \lambda λ对应的特征向量 u ⃗ \vec u u:
S ⋅ u ⃗ = λ ⋅ u ⃗ \mathcal S \cdot \vec u = \lambda \cdot \vec u S⋅u=λ⋅u
并且将最大特征值对应的特征向量称作第一主成分;以此类推,有第二、第三主成分等等。并且这些特征向量之间两两正交。
而降维的目的就是消除掉结果较小的特征值对应的特征向量。而这些特征向量上的样本特征属于稀疏特征。即:即便删除了,也对整个样本空间影响不大的特征信息。
核函数( Kernel Function \text{Kernel Function} Kernel Function)在核方法思想与核函数介绍中提到过,它本质上是对优化过程中对偶问题产生的样本之间内积的一种处理方式:
[ x ( i ) ] T x ( j ) [x^{(i)}]^T x^{(j)} [x(i)]Tx(j)
在处理非线性问题时,针对线性模型无法对样本线性可分的情况,通常将样本特征转化为高维特征:
[ x ( i ) ] p × 1 ⇒ [ ϕ ( x ( i ) ) ] q × 1 p ≪ q ; x ( i ) ∈ D [x^{(i)}]_{p \times 1} \Rightarrow [\phi(x^{(i)})]_{q \times 1} \quad p \ll q;x^{(i)} \in \mathcal D [x(i)]p×1⇒[ϕ(x(i))]q×1p≪q;x(i)∈D
对应的内积结果表示为:
[ ϕ ( x ( i ) ) ] T ϕ ( x ( j ) ) x ( i ) , x ( j ) ∈ D [\phi(x^{(i)})]^T\phi(x^{(j)}) \quad x^{(i)},x^{(j)} \in \mathcal D [ϕ(x(i))]Tϕ(x(j))x(i),x(j)∈D
但是转化后的特征维度 q q q可能远远高于 p p p的维度,甚至是无限维,那么关于内积结果的计算代价极高。由于内积是一个标量结果,所以通过核函数直接与内积进行映射,从而节省大量计算过程:
κ ( x ( i ) , x ( j ) ) = [ ϕ ( x ( i ) ) ] T ϕ ( x ( j ) ) \kappa(x^{(i)},x^{(j)}) = [\phi(x^{(i)})]^T\phi(x^{(j)}) κ(x(i),x(j))=[ϕ(x(i))]Tϕ(x(j))
虽然核函数自身减少了内积计算过程,但核函数自身同样存在计算代价。下面从计算代价的角度,介绍几种常见核函数:
关于线性核函数的公式表示如下:
κ ( x ( i ) , x ( j ) ) = [ x ( i ) ] T x ( j ) = ∑ k = 1 p x k ( i ) ⋅ x k ( j ) \begin{aligned} \kappa(x^{(i)},x^{(j)}) & = [x^{(i)}]^T x^{(j)} \\ & = \sum_{k=1}^p x_k^{(i)} \cdot x_k^{(j)} \end{aligned} κ(x(i),x(j))=[x(i)]Tx(j)=k=1∑pxk(i)⋅xk(j)
实际上,线性核函数并没有对样本 x ( i ) x^{(i)} x(i)的维度产生任何变化,即 ϕ ( x ( i ) ) = x ( i ) \phi(x^{(i)}) = x^{(i)} ϕ(x(i))=x(i)。所有的特征分量均是一次项。
关于多项式核函数的公式表示如下:
κ ( x ( i ) , x ( j ) ) = ( ζ + γ [ x ( i ) ] T x ( j ) ) Q = [ ζ + γ ⋅ ( ∑ k = 1 p x k ( i ) ⋅ x k ( j ) ) ] Q \begin{aligned} \kappa(x^{(i)},x^{(j)}) & = (\zeta + \gamma [x^{(i)}]^Tx^{(j)})^{\mathcal Q} \\ & = \left[\zeta + \gamma \cdot \left(\sum_{k=1}^p x_k^{(i)} \cdot x_k^{(j)}\right)\right]^{\mathcal Q} \end{aligned} κ(x(i),x(j))=(ζ+γ[x(i)]Tx(j))Q=[ζ+γ⋅(k=1∑pxk(i)⋅xk(j))]Q
其中 ζ , γ , Q \zeta,\gamma,\mathcal Q ζ,γ,Q均表示参数。当 ζ = 0 , γ = Q = 1 \zeta = 0,\gamma = \mathcal Q = 1 ζ=0,γ=Q=1时,多项式核函数将退化至线性核函数。
高斯核函数的公式表示如下:
κ ( x ( i ) , x ( j ) ) = exp { − 1 2 σ 2 ∣ ∣ x ( i ) − x ( j ) ∣ ∣ 2 } \kappa(x^{(i)},x^{(j)}) = \exp \left\{- \frac{1}{2\sigma^2} ||x^{(i)} - x^{(j)}||^2 \right\} κ(x(i),x(j))=exp{−2σ21∣∣x(i)−x(j)∣∣2}
其中 ∣ ∣ ⋅ ∣ ∣ ||\cdot|| ∣∣⋅∣∣表示向量的模。观察高斯核函数自身的复杂度,将上述公式展开表示如下:
κ ( x ( i ) , x ( j ) ) = exp { − ∣ ∣ x ( i ) − x ( j ) ∣ ∣ 2 } 2 σ 2 \begin{aligned} \kappa(x^{(i)},x^{(j)}) = \sqrt[2\sigma^2]{\exp\{-||x^{(i)} - x^{(j)}||^2\}} \end{aligned} κ(x(i),x(j))=2σ2exp{−∣∣x(i)−x(j)∣∣2}
其中 ⋅ 2 σ 2 \sqrt[2\sigma^2]{\cdot} 2σ2⋅表示样本划分的细致程度,它和模型的复杂度无关,这里仅关心根号内的项。并将该项展开:
exp { − ∣ ∣ x ( i ) − x ( j ) ∣ ∣ 2 } = exp { − [ ∣ ∣ x ( i ) ∣ ∣ 2 + ∣ ∣ x ( j ) ∣ ∣ 2 − 2 ∣ ∣ x ( i ) x ( j ) ∣ ∣ ] } = exp [ − ( x ( i ) ) 2 ] ⋅ exp [ − ( x ( j ) ) 2 ] ⋅ exp [ 2 ( x ( i ) ) T x ( j ) ] \begin{aligned} \exp\{-||x^{(i)} - x^{(j)}||^2\} & = \exp \left\{- \left[||x^{(i)}||^2 + ||x^{(j)}||^2 - 2 ||x^{(i)}x^{(j)}||\right]\right\} \\ & = \exp[-(x^{(i)})^2] \cdot \exp [-(x^{(j)})^2] \cdot \exp \left[2(x^{(i)})^Tx^{(j)}\right] \end{aligned} exp{−∣∣x(i)−x(j)∣∣2}=exp{−[∣∣x(i)∣∣2+∣∣x(j)∣∣2−2∣∣x(i)x(j)∣∣]}=exp[−(x(i))2]⋅exp[−(x(j))2]⋅exp[2(x(i))Tx(j)]
将 exp [ 2 x ( i ) ⋅ x ( j ) ] \exp \left[2x^{(i)}\cdot x^{(j)}\right] exp[2x(i)⋅x(j)]用泰勒公式进行展开:
exp [ 2 ( x ( i ) ) T x ( j ) ] = ∑ m = 0 ∞ [ 2 ( x ( i ) ) T x ( j ) ] m m ! = ∑ m = 0 ∞ [ 2 m m ! ⋅ 2 m m ! ( x ( i ) ) m ⋅ ( x ( j ) ) m ] \begin{aligned} \exp \left[2(x^{(i)})^T x^{(j)}\right] & = \sum_{m=0}^\infty \frac{\left[2 (x^{(i)})^Tx^{(j)}\right]^m}{m!} \\ & = \sum_{m=0}^{\infty} \left[\sqrt{\frac{2^m}{m!}} \cdot \sqrt{\frac{2^m}{m!}} (x^{(i)})^m \cdot (x^{(j)})^m\right] \end{aligned} exp[2(x(i))Tx(j)]=m=0∑∞m![2(x(i))Tx(j)]m=m=0∑∞[m!2m⋅m!2m(x(i))m⋅(x(j))m]
至此将 exp { − ∣ ∣ x ( i ) − x ( j ) ∣ ∣ 2 } \exp\{-||x^{(i)} - x^{(j)}||^2\} exp{−∣∣x(i)−x(j)∣∣2}划分为仅包含 x ( i ) x^{(i)} x(i)项和仅包含 x ( j ) x^{(j)} x(j)项两个部分:
exp { − ∣ ∣ x ( i ) − x ( j ) ∣ ∣ 2 } = { exp [ − ( x ( i ) ) 2 ] ⋅ ∑ m = 0 ∞ 2 m m ! ( x ( i ) ) m } ⏟ ϕ ( x ( i ) ) ⋅ { exp [ − ( x ( j ) ) ] ⋅ ∑ m = 0 ∞ 2 m m ! ( x ( j ) ) m } ⏟ ϕ ( x ( j ) ) \exp\{-||x^{(i)} - x^{(j)}||^2\} = \underbrace{\left\{\exp[-(x^{(i)})^2] \cdot\sum_{m=0}^{\infty}\sqrt{\frac{2^m}{m!}}(x^{(i)})^m\right\}}_{\phi(x^{(i)})} \cdot \underbrace{\left\{\exp[-(x^{(j)})] \cdot \sum_{m=0}^{\infty} \sqrt{\frac{2^m}{m!}}(x^{(j)})^m\right\}}_{\phi(x^{(j)})} exp{−∣∣x(i)−x(j)∣∣2}=ϕ(x(i)) {exp[−(x(i))2]⋅m=0∑∞m!2m(x(i))m}⋅ϕ(x(j)) {exp[−(x(j))]⋅m=0∑∞m!2m(x(j))m}
在除去 σ \sigma σ影响的条件下,观察 D \mathcal D\quad D 选项,比较线性核函数与高斯核函数关于高维特征转化之间的复杂程度:
{ Linear Kernel: ϕ ( x ( i ) ) = x ( i ) RBF: ϕ ( x ( i ) ) = exp [ − ( x ( i ) ) 2 ] ⋅ ∑ m = 0 ∞ 2 m m ! ( x ( i ) ) m \begin{cases} \text{Linear Kernel: } \phi(x^{(i)}) = x^{(i)} \\ \text{RBF: } \phi(x^{(i)}) = \exp[-(x^{(i)})^2] \cdot\sum_{m=0}^{\infty}\sqrt{\frac{2^m}{m!}}(x^{(i)})^m \end{cases} {Linear Kernel: ϕ(x(i))=x(i)RBF: ϕ(x(i))=exp[−(x(i))2]⋅∑m=0∞m!2m(x(i))m
相关参考:
核函数 高斯核函数,线性核函数,多项式核函数