1. Cross-Validation on Classification Problems
Cross-Validation用于分类任务概念
在系列前文中,描述的都是 C r o s s − V a l i d a t i o n Cross-Validation Cross−Validation在回归任务中的应用,并使用 M S E MSE MSE量化Test Error,但 C r o s s − V a l i d a t i o n Cross-Validation Cross−Validation同样可以应用于分类任务中。
-
在分类任务中, C r o s s − V a l i d a t i o n Cross-Validation Cross−Validation的用法和前文一致,不一样的地方在于没有使用 M S E MSE MSE来量化误差,而是使用错误分类的个数。
-
举个例子,在分类任务中, L O O C V LOOCV LOOCV的Error Rate计算如下:
C V ( n ) = 1 n ∑ i = 1 n E r r i CV_{(n)} = \frac{1}{n}\sum_{i=1}^{n}Err_i CV(n)=n1i=1∑nErri
这里的 E r r i = I ( y i ≠ y i ^ ) Err_i = I(y_i \neq \hat{y_i}) Erri=I(yi=yi^), I I I是指示函数,但括号内条件满足时值为 1 1 1,否则值为 0 0 0。
Cross-Validation用于分类任务实例
-
首先生成模拟数据,并选定Logistic Regression作为分类模型。由于数据为生成数据,可以得到此时的True Test Error=0.201,而此时的Bayes Error Rate=0.133,这说明了当前的Logistic Regression的灵活度难以完成对该生成数据的Bayes Decision Boundary建模。
-
但通过采用 p r e d i c t o r s predictors predictors的多项式形式,可以将Logistic Regression扩展为非线性决策边界。举个例子,Logistic Regression的二次型如下:
l o g ( p 1 − p ) = β 0 + β 1 x 1 + β 2 x 1 2 + β 3 x 2 + β 4 x 2 2 log(\frac{p}{1-p}) = \beta_0 + \beta_1x_1 + \beta_2x_1^2 + \beta_3x_2 + \beta_4x_2^2 log(1−pp)=β0+β1x1+β2x12+β3x2+β4x22
- 若采用上述形式,Test Error Rate将会从0.201降低为0.197。
- 类似上面,拟合一个包含三次项形式 p r e d i c t o r predictor predictor的Logistic Regression,Test Error Rate降低为0.160。
- 而拟合一个包含四次项形式的,Test Error Rate稍微上升,为0.162。
-
但在实际应用中,Bayes Decision Boundary和Test Error Rate是未知的,那么我们如何决定使用上述4中Logistic Regression的哪一种形式呢?答案是:Cross-Validation。
- 可以使用 10 − f o l d C V 10-fold~CV 10−fold CV的方式分别训练不同自由度的Logistic Regression方法(多项式的次数从1到10)
- 从图中可以发现,Training Rate随着模型自由度的提升而降低(虽然单调下降,但是随着模型自由度的增加,Training Error Rate总体上呈下降的趋势)。
- 作为对比,Test Error展现出一个 U U U型,即先下降再上升。说明自由度太高,模型可能过拟合了,所以在 U U U型底部的模型应该是一个维持了 b a i s − v a r i a n c e t r a d e − o f f bais-variance~trade-off bais−variance trade−off的模型。
- 虽然一定程度上, 10 − f o l d C V 10-fold~CV 10−fold CV Error Rate低估了错误率,但四阶多项式时其达到了最小值,这与三阶多项式测试曲线的最小值相当接近。
-
同样,可以使用 K N N KNN KNN方法用于对比
- 可以发现,随着 K K K值的减小,Training Rate随着模型灵活度的提高而再次下降(对于 K N N KNN KNN, K K K越大,模型的自由度越低)。
- 同样,Cross-Validation Error Curve低估了Test Error Rate,但对于寻找最优 K K K,它还是很有帮助的。
2. BootStrap(自举法)
B o o t S t r a p BootStrap BootStrap是一个广泛适用、功能强大的统计工具,可以用来量化和估计统计学习方法的不确定性。
- 一个简单的例子是, B o o t S t r a p BootStrap BootStrap可以用来估计线性回归拟合系数的标准误差。
- B o o t S t r a p BootStrap BootStrap的强大之处在于它可以很容易的应用于各种各样的统计学习方法。
在下面的例子中,我们将讨论如何使用 B o o t S t r a p BootStrap BootStrap评估线性模型参数的变化性。
BootStrap实例
-
假设我们想将一笔固定的金额投资于两种分别产生 X X X和 Y Y Y回报的金额资产,其中 X X X和 Y Y Y时随机变量。
-
通过参数 α \alpha α来分配投资的比例,将 α \alpha α比例的钱投资 X X X, ( 1 − α ) (1-\alpha) (1−α)比例的钱投资 Y Y Y。
-
由于 X , Y X,Y X,Y的回报会不断变化,我们想要求出令投资风险最小的 α \alpha α。换句话说,我们想要最小化:
V a r ( α X + ( 1 − α ) Y ) Var(\alpha X + (1-\alpha)Y) Var(αX+(1−α)Y)
即总回报的方差很小,偏离均值的幅度很少,那么风险就比较小。
-
为了最小化风险,可以通过下式来计算 α \alpha α:
α = σ Y 2 − σ X Y σ X 2 + σ Y 2 − 2 σ X Y \alpha = \frac{\sigma_Y^2 - \sigma_{XY}}{\sigma_X^2 + \sigma_Y^2 - 2\sigma_{XY}} α=σX2+σY2−2σXYσY2−σXY
其中 σ X 2 = V a r ( X ) \sigma_X^2 = Var(X) σX2=Var(X), σ Y 2 = V a r ( Y ) \sigma_Y^2 = Var(Y) σY2=Var(Y), σ X Y = C o v ( X , Y ) \sigma_{XY} = Cov(X, Y) σXY=Cov(X,Y)
-
-
但在实际应用中, σ X 2 , σ Y 2 , σ X Y \sigma_X^2,\sigma_Y^2, \sigma_{XY} σX2,σY2,σXY是未知的,但我们可以通过一个已有的测量 X , Y X,Y X,Y的数据集来估计 σ ^ X 2 , σ ^ Y 2 , σ ^ X Y \hat{\sigma}_X^2,\hat{\sigma}_Y^2, \hat{\sigma}_{XY} σ^X2,σ^Y2,σ^XY,从而带入前面的式子中求得 α \alpha α。
-
为此,我们从真是分布中生成100批数据,并估计分布的 α ^ \hat{\alpha} α^值。
-
重复上述操作1000次,那么就可以得到 α ^ 1 , α ^ 2 , α ^ 3 , . . . , α ^ 1000 \hat{\alpha}_1, \hat{\alpha}_2, \hat{\alpha}_3,...,\hat{\alpha}_{1000} α^1,α^2,α^3,...,α^1000。
-
我们设置生成分布数据的 σ X 2 = 1 , σ Y 2 = 1.25 , σ X Y = 0.5 \sigma_X^2=1,\sigma_Y^2 = 1.25, \sigma_{XY} = 0.5 σX2=1,σY2=1.25,σXY=0.5,故我们可以算出真实的 α = 0.6 \alpha=0.6 α=0.6。而此时1000个 α ^ \hat{\alpha} α^的估计可以得到:
α ˉ = 1 1000 ∑ r = 1 1000 α r ^ = 0.5996 \bar{\alpha} = \frac{1}{1000}\sum_{r=1}^{1000}\hat{\alpha_r} = 0.5996 αˉ=10001r=1∑1000αr^=0.5996
-
这时 α ˉ {\bar{\alpha}} αˉ和0.6非常接近了,这个值的标准差为:
1 1000 − 1 ∑ r = 1 1000 ( α r − α ˉ ^ ) 2 = 0.083 \sqrt{\frac{1}{1000-1}\sum_{r=1}^{1000}(\hat{\alpha_r - \bar{\alpha}})^2} = 0.083 1000−11r=1∑1000(αr−αˉ^)2=0.083
-
-
但在实际中,上述估计 S E ( α ^ ) SE(\hat{\alpha}) SE(α^)的方式难以应用,因为真实数据的分布是未知的,故我们无法从分布中多次采样新的数据。但 B o o t S t r a p BootStrap BootStrap允许计算机来模拟这个采样过程,这就确保无需使用额外的样本来估计 α ^ \hat{\alpha} α^了。 B o o t S t r a p BootStrap BootStrap不再从分布中生成随机数据,而是在原始数据集中重复采样样本。
-
假设有一个简单的数据集 Z Z Z,从数据集 Z Z Z中随机放回采样 n n n个样本得到 b o o t s t r a p bootstrap bootstrap数据集 z ∗ i z^{*i} z∗i。由于是放回采样,这意味着 Z ∗ i Z^{*i} Z∗i中的样本是可以重复的。
-
重复上述步骤 B B B次,可以获得 Z ∗ 1 , Z ∗ 2 , Z ∗ 3 , . . . , Z ∗ B Z^{*1},Z^{*2},Z^{*3},...,Z^{*B} Z∗1,Z∗2,Z∗3,...,Z∗B,同样我们可以计算出相对应的 α \alpha α估计: α ^ ∗ 1 , α ^ ∗ 2 , α ^ ∗ 3 , . . . , α ^ ∗ B \hat{\alpha}^{*1},\hat{\alpha}^{*2},\hat{\alpha}^{*3},...,\hat{\alpha}^{*B} α^∗1,α^∗2,α^∗3,...,α^∗B。
-
于是,可以计算这些 b o o t s t r a p bootstrap bootstrap的标准误差如下式:
S E B ( α ^ ) = 1 B − 1 ∑ r = 1 B ( α ^ ∗ r − 1 B ∑ r ′ = 1 B α ^ ∗ r ) SE_B(\hat{\alpha}) = \sqrt{\frac{1}{B-1}\sum_{r=1}^B(\hat{\alpha}^{*r} - \frac{1}{B}\sum_{r^{'}=1}^B\hat{\alpha}^{*r})} SEB(α^)=B−11r=1∑B(α^∗r−B1r′=1∑Bα^∗r)
这就是对原始数据的 α ^ \hat{\alpha} α^的估计
-
-
最后,简单总结一下 B o o t S t r a p BootStrap BootStrap:从原始数据集中随机放回采样 n n n个样本 B B B次,构建 B B B个 b o o t s t r a p bootstrap bootstrap数据集。通过对这些数据集的计算,获取统计量的分布。
本文为作者原创,转载需注明出处!