CS229 Lecture 10

CS229 Lecture 10


课程要点:

VC 维
模型选择-交叉验证
特征选择


回顾上节课

推论:假设 H \mathcal{H} H的大小为 k k k γ \gamma γ σ \sigma σ固定,那么对于在至少 1 − σ 1-\sigma 1σ的概率下 ε ( h ^ ) ≤ m i n h ∈ H ε ( h ) + 2 γ \varepsilon(\hat h)\le min_{h\in \mathcal{H}}\varepsilon(h)+2\gamma ε(h^)minhHε(h)+2γ,需要 m m m满足:
m ≥ 1 2 γ 2 l o g 2 k σ = O ( 1 γ 2 l o g k σ ) m\ge\frac{1}{2\gamma^2}log\frac{2k}{\sigma}=O(\frac{1}{\gamma^2}log\frac{k}{\sigma}) m2γ21logσ2k=O(γ21logσk)


H \mathcal{H} H为无限大

前面对于 H \mathcal{H} H的设定其大小为 k k k,而现在需要考虑当 H \mathcal{H} H为无限大的情形。对于无限大的设定是否还有相似的结果。

课上的一个例子为:假设 H \mathcal{H} H是由 d d d个实数组成的假设,且假设计算机中是用64bit来表示一个浮点数的,那么对于这个 H \mathcal{H} H最多拥有 2 64 d 2^{64d} 264d种可能。对于上面的推论,为了保证至少 1 − σ 1-\sigma 1σ的概率有 ε ( h ^ ) ≤ ε ( h ∗ ) + 2 γ \varepsilon(\hat h)\le \varepsilon(h^{*})+2\gamma ε(h^)ε(h)+2γ,那么需要样本数 m ≥ O ( 1 γ 2 l o g 2 64 d σ ) = O ( d γ 2 l o g 1 σ ) = O γ , σ ( d ) m\ge O(\frac{1}{\gamma^2}log\frac{2^{64d}}{\sigma})=O(\frac{d}{\gamma^2}log\frac{1}{\sigma})=O_{\gamma,\sigma}(d) mO(γ21logσ264d)=O(γ2dlogσ1)=Oγ,σ(d),由此可以看出样本数目大致和参数的个数呈现一定的线性关系。


VC维(Vapnik-Chervonenkis dimension)

对于一个点集合 S = { x ( 1 ) , x ( 2 ) , ⋯   , x ( d ) } S=\{x^{(1)},x^{(2)},\cdots,x^{(d)}\} S={x(1),x(2),,x(d)},如果我们对于这些点赋予任意标签, H \mathcal{H} H中的 h h h均能将其分开,我们说 H \mathcal{H} H可以“打碎”这个点集 S S S H \mathcal{H} H能打碎的点集大小被称为 H \mathcal{H} H的VC维,记为: V C ( H ) VC(\mathcal{H}) VC(H)

注:对于 V C ( H ) VC(\mathcal{H}) VC(H)的大小并不是说对于几个点任意空间位置都需要"打碎",而是这 V C ( H ) VC(\mathcal{H}) VC(H)个点在某种空间位置能被打碎即可。

在这里插入图片描述
观察上图可知三个点最复杂的空间特征便是三个点呈现三角型,然后给各个点赋予不同的标签,可以知道存在8种情形,被在 H \mathcal{H} H是可以找到直线将这些不同的情形划分开。对于我手画的三个点排列乘一条直线,中间的点为叉,在这种情况下在二维平面是无法找到一条直线可以将这样的类别划分开。但是这并不影响 H { 在 2 D 平 面 的 分 类 器 } \mathcal{H}\{在2D平面的分类器\} H{2D} V C ( H ) = 3 VC(\mathcal{H})=3 VC(H)=3

通常,VC(n 维空间的分类器)=n+1

对于VC维的知识可以看看林轩田《机器学习基石》里面的讲解,个人感觉比 n g ng ng的更详细,也更好理解。


关于VC维的理论

给定 H \mathcal{H} H V C ( H ) = d VC(\mathcal{H})=d VC(H)=d,在至少 1 − σ 1-\sigma 1σ的概率我们可以确定:

∀ h ∈ H      ∣ ε ( h ) − ε ^ ( h ) ∣ ≤ O ( d m l o g m d + 1 m l o g 1 σ ) \forall h\in \mathcal{H} \,\,\,\,|\varepsilon(h)-\hat\varepsilon(h)|\le O(\sqrt{\frac{d}{m}log\frac{m}{d}+\frac{1}{m}log\frac{1}{\sigma}}) hHε(h)ε^(h)O(mdlogdm+m1logσ1 )

因此有至少 1 − σ 1-\sigma 1σ的概率我们可以确定:

ε ( h ^ ) ≤ ε ( h ∗ ) + O ( d m l o g m d + 1 m l o g 1 σ ) \varepsilon(\hat h)\le \varepsilon(h^{*})+ O(\sqrt{\frac{d}{m}log\frac{m}{d}+\frac{1}{m}log\frac{1}{\sigma}}) ε(h^)ε(h)+O(mdlogdm+m1logσ1 )

推论

对于 h ∈ H h\in \mathcal{H} hH中所有的 h h h可以使得至少在 1 − σ 1-\sigma 1σ的概率有 ∣ ε ( h ) − ε ^ ( h ) ∣ ≤ γ |\varepsilon(h)-\hat\varepsilon(h)|\le\gamma ε(h)ε^(h)γ,那么样本复杂度需要满足 m = O γ , σ ( d ) m=O_{\gamma,\sigma}(d) m=Oγ,σ(d)

实际上 V C VC VC维既决定了样本复杂度的上界也决定了其下界,如过样本数目过少,上面的推论自然得不到保证。


我们直到在前面的 S V M SVM SVM课程中说过可以通过核函数将特征映射到高维度空间中,那么 S V M SVM SVM为何不会出现过拟合?

是因为 S V M SVM SVM分类器和样本之间是有间隔的,对于一批样本点如果 ∣ ∣ x ∣ ∣ ≤ R ||x||\le R xR,那么 S V M SVM SVM对应的 V C VC VC维满足 V C ( H ) ≤ ⌈ R 2 4 γ 2 ⌉ + 1 VC(\mathcal{H})\le \lceil\frac{R^{2}}{4\gamma^2}\rceil+1 VC(H)4γ2R2+1,进而保证不会出现过拟合。


在这里插入图片描述
上图中横轴为 θ T x \theta^Tx θTx,黑色线段为跳跃函数的图像, 1 { h θ ( x ) ≠ y } 1\{h_{\theta}(x)\neq y\} 1{hθ(x)=y},其中 h θ ( x ) = g ( θ T x ) h_{\theta}(x)=g(\theta^Tx) hθ(x)=g(θTx),灰色函数为 l o g p ( y ( i ) ∣ x ( i ) ; θ ) logp(y^{(i)}|x^{(i)};\theta) logp(y(i)x(i);θ),假设现在有一个样本 y = 0 y=0 y=0,那么如果 θ T x > 0 \theta^Tx>0 θTx>0,就会使得 E R M ERM ERM=1。

对于分类算法,我们的目的就是使得分类算法对于未知样本可以正确预测使得 h θ ( x ) = y h_{\theta}(x)= y hθ(x)=y,我们的目的就是降低 h θ ( x ) ≠ y h_{\theta}(x)\neq y hθ(x)=y,因此我们将这种不等的情况作为我们力求优化的函数,但是由于这种阶梯函数是非凸的,因此是一个NP hard问题,因此我们只能力求用一个凸函数来模拟这种情况,可以看到灰色函数是逻辑回归的表示,似然函数优化的目标就是在样本 x ( i ) x^{(i)} x(i)出现的情况下 y ( i ) y^{(i)} y(i)的要以最大概率出现,它是对ERM(经验风险最小)的一种近似。同理红色函数图像是支持向量集优化函数的异种模拟近似。


模型选择

对于线性回归我们需要选择一个模型来拟合这些数据,现在有个问题就是我到底该选择那种模型?通过前面的课程我们知道泛化误差先随着模型复杂度的增加减小,当超过某个复杂度后,泛化误差会渐渐变大。使得训练出来的模型对于数据的预测效果变差。

θ 0 + θ 1 x \theta_0+\theta_1x θ0+θ1x

θ 0 + θ 1 x + θ 2 x 2 \theta_0+\theta_1x+\theta_2x^2 θ0+θ1x+θ2x2

            ⋮ \vdots

θ 0 + θ 1 x + θ 2 x 2 + ⋯ + θ 10 x 10 \theta_0+\theta_1x+\theta_2x^2+\cdots+\theta_{10}x^{10} θ0+θ1x+θ2x2++θ10x10

以及前面学到的模型中的超参数的选择如:在局部加权回归中的带宽参数 τ \tau τ,SVM中 m i n    1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ ζ min\,\,\frac{1}{2}||w||^2+C\sum\zeta min21w2+Cζ中的 C C C


交叉验证:

现有一个模型集合 M = { M 1 , ⋯   , M d } \mathcal{M}=\{M_1,\cdots,M_d\} M={M1,,Md},例如 M i M_i Mi就是 i i i次多项式,那么如何选择模型?

留出法(Hold-out)交叉验证:

  1. 将数据集劈成70%的训练集 S t r a i n S_{train} Strain, 30%的验证集 S c v S_{cv} Scv
  2. 在训练集上训练每个模型,然后在验证集上验证
  3. 调训出在验证集上表现误差最小的模型,然后重新训练(可选)

K折交叉验证

  1. 将数据切分为K等份,然后每次抽取1份作为验证集,剩下的作为训练集,不停更换验证集,将K次验证的误差平均
  2. 同理选取误差最小的模型

留一交叉验证

  1. 留一交叉验证和K折交叉验证原理基本一样,不同的是这里将样本切分为 m m m份,留下一个样本做验证,剩下 m − 1 m-1 m1个做训练,更换不同的验证样本重复 m m m次,平均验证误差

可以看出K折交叉验证和留一交叉验证十分消耗计算,但是对于样本获得十分昂贵的情况,比较适用,比如说一共就16个样本,那么直接用30%做验证有点过于昂贵了,留一交叉验证就比较好。训练的时候还是使用了大多数样本进行训练。


特征选择

特征选择实际上属于模型选择的一种特殊情况。假设现在有 m m m条数据,每条数据的特征数为 n n n,且 n ≫ m n\gg m nm,那么在这种情况下训练出来的模型很容易出现过拟合,假设仅仅有一部分特征是与学习任务有关的。那么有什么办法选出这些与学习任务相关的特征来呢?

一种选取特征的方法是,如果有 n n n个特征,那么就有 2 n 2^n 2n个特征选取方式,也就相当于有 2 n 2^n 2n个模型,在这 2 n 2^n 2n个模型做交叉验证,选取误差最小的那个。看似可行,但实际不具有操作性,因为训练 2 n 2^n 2n个模型计算量的消耗太过巨大,完全不现实。有一种启发式的过程被用于特征选取,这个搜索算法成为前向搜索


前向搜索

  1. Initialize F \mathcal{F} F = ∅ \emptyset .
  2. Repeat {
    (a)For i=1,…,n if i ∉ \notin / F \mathcal{F} F,let F i \mathcal{F}_i Fi= F \mathcal{F} F∪{i},and use som eversion of cross validation to evaluate features F i \mathcal{F}_i Fi. (I.e., train your learning algorithm using only the features in F i \mathcal{F}_i Fi, and estimate its generalization error.)
    (b) Set F \mathcal{F} F to be the best feature subset found on step (a). }
  3. Select and output the best feature subset that was evaluated during the entire search procedure.

上面算法中循环的退出条件为要么循环完 n n n个特征,要么找到了所需的最大特征数目然后退出。

与前向搜索不同的是后向搜索是从 F = { 1 , 2 , ⋯   , n } \mathcal{F}=\{1,2,\cdots,n\} F={1,2,,n}开始,然后循环,在训练里逐个删除每个特征用交叉验证的方式评估删除该特征后的误差,找到最不相关的特征进行删除,继续外层循环,直到删除到用户设定保留的特征个数或者说删除到 F = ∅ \mathcal{F}=\emptyset F=结束。

虽然上面两种算法可以很好的选取特征,但是的但是计算量太大。前向搜索大约需要 O ( n 2 ) O(n^2) O(n2)的学习过程。


Filter特征选取

Filter特征选取选取特征计算量会小很多。Filter特征选取方法的主要思想是对每个特征通过较为简单的方式计算一个分数 S i S_{i} Si,这个分数来衡量这个特征 x i x_i xi y y y相关的信息值。选取k个最大 S i S_{i} Si对应的特征。关于确定 k k k可以通过交叉验证的方式。

在文本分类中还有一种更为通用的方法定义特征 x i x_i xi y y y的相关性的方法叫做 m u t u a l i n f o r m a t i o n mutual information mutualinformation M I ( x i , y ) MI(x_i,y) MI(xi,y):

M I ( x i , y ) = ∑ x i ∈ { 0 , 1 } ∑ y ∈ { 0 , 1 } p ( x i , y ) p ( x i , y ) p ( x i ) p ( y ) MI(x_i,y)=\sum_{x_i\in\{0,1\}}\sum_{y\in\{0,1\}}p(x_i,y)\frac{p(x_i,y)}{p(x_i)p(y)} MI(xi,y)=xi{0,1}y{0,1}p(xi,y)p(xi)p(y)p(xi,y)

其中 p ( x i , y ) p(x_i,y) p(xi,y), p ( x i ) p(x_i) p(xi) p ( y ) p(y) p(y)的值可以根据训练样本的经验分布来评估。

M I ( x i , y ) MI(x_i,y) MI(xi,y)还可以表示为Kullback-Leibler (KL) divergence:

M I ( x i , y ) = K L ( p ( x i , y ) ∣ ∣ p ( x i ) p ( y ) ) MI(x_i, y) = KL (p(x_i, y)||p(xi)p(y)) MI(xi,y)=KL(p(xi,y)p(xi)p(y))

上式可以衡量不同概率分布之间的差异,如果说 p ( x i ) p(x_i) p(xi) p ( y ) p(y) p(y)是独立的那么 p ( x i , y ) = p ( x i ) p ( y ) p(x_i, y) = p(x_i)p(y) p(xi,y)=p(xi)p(y),那么KL divergence就等于0,即表面 x i x_i xi对于 y y y没有影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值