【个人笔记】VC维度简介:定义、直观解释、求解方法、常见分类器的VC维大小

最近在啃 Shai Shalev-Shwartz and Shai Ben-David 的 Understanding Machine Learning: From Theory to Algorithms,实在是太硬核。只看懂了这一个小小的部分所以先记下来吧。部分参考 Shai Shalev-Shwartz 的 Lecture notes(讲义本身写的很不错,可惜没有英文的在线课程。如果有这方面更好的在线资源欢迎交流分享。)


定义

VC 维度(Vapnik-Chervonenkis 维度)是衡量一个假设类(hypothesis class) H \mathcal{H} H 的表达能力的关键概念,它与shattering密切相关。

C = { x 1 , … , x ∣ C ∣ } ⊂ X C = \{x_1, \dots, x_{|C|}\} \subset \mathcal{X} C={x1,,xC}X,其中 X \mathcal{X} X为样本集。

H C \mathcal{H}_C HC H \mathcal{H} H C C C 上的限制,即
H C = { h C : h ∈ H } \mathcal{H}_C = \{ h_C : h \in \mathcal{H} \} HC={hC:hH}
其中, h C : C → { 0 , 1 } h_C: C \to \{0,1\} hC:C{0,1},可以将C中的所有样本 x i x_i xi映射到一个二元分类。并且, h C h_C hC满足对所有 x i ∈ C x_i \in C xiC h C ( x i ) = h ( x i ) h_C(x_i) = h(x_i) hC(xi)=h(xi)

观察发现,我们可以将每个 h C h_C hC 表示为向量
( h ( x 1 ) , … , h ( x ∣ C ∣ ) ) ∈ { 0 , 1 } ∣ C ∣ (h(x_1), \dots, h(x_{|C|})) \in \{0,1\}^{|C|} (h(x1),,h(xC)){0,1}C
因此, ∣ H C ∣ ≤ 2 ∣ C ∣ |\mathcal{H}_C| \leq 2^{|C|} HC2C

当且仅当 ∣ H C ∣ = 2 ∣ C ∣ |\mathcal{H}_C| = 2^{|C|} HC=2C时,我们说 H \mathcal{H} H shatter C C C

VC 维度(Vapnik-Chervonenkis 维度)定义为:
VCdim ( H ) = sup ⁡ { ∣ C ∣ : H  shatters  C } \text{VCdim}(\mathcal{H}) = \sup \{|C| : \mathcal{H} \text{ shatters } C\} VCdim(H)=sup{C:H shatters C}
即,VC 维度是使得 H H H C C C 没有任何先验约束的最大集合大小。


概念解释

我们通过一些限制来定义假设类 H \mathcal{H} H,这个假设类 H \mathcal{H} H中有一系列的函数 h h h,可能是有限数量的,也可能是无限数量的。下面的部分提供了一些关于 H \mathcal{H} H的具体的例子。
数据集 C C C是从实例空间 X \mathcal{X} X中随机取样的一个数据集。目前我们讨论的是二分类问题,数据集 C C C中的每一个 x i x_i xi都被分类到 { 0 , 1 } \{0,1\} {0,1}两个类别中的一个。
我们一开始只确定了了数据集 C C C,数据集中每个 x i x_i xi对应的分类并没有给出,它可能取 { 0 , 1 } \{0,1\} {0,1}中的任一个。 H \mathcal{H} H shatter C C C则意味着,不管每个 x i x_i xi { 0 , 1 } \{0,1\} {0,1}中的哪一个,在 H \mathcal{H} H中总能找到一个分类函数 h C h_C hC,满足 ∀ x i ∈ C , h C ( x i ) = y i \forall x_i \in C,h_C(x_i)=y_i xiC,hC(xi)=yi
而VC 维度则是 H \mathcal{H} H能 shatter 的最大数据集的大小。换句话说:

  • 如果某个集合 C C C H \mathcal{H} H shatter,说明 H \mathcal{H} H 能在这个集合上实现所有可能的分类。
  • H \mathcal{H} H 的 VC 维度是它能 shatter 的最大集合的大小。

VC 维度衡量的是模型的复杂度——它表示模型类能够“自由”拟合多少个点的所有可能分类,而不受任何限制。
VC维度的概念对无限假设类的PAC可学习的定义上有重要意义。VC维度高的模型代表“过于自由”的假设类。可是自由拟合太多点的假设类并不好,虽然它能应对更为复杂的变化,它更有可能导致过拟合,从而在实际的应用中表现并不好。而VC维度低的模型则更受限制,导致欠拟合。
VC 维度在统计学习理论中至关重要,它帮助我们理解模型的表达能力和泛化能力!


假设集 H \mathcal{H} H的VC维度的证明方法

为了证明 VCdim ( H ) = d \text{VCdim}(\mathcal{H}) = d VCdim(H)=d,也就是 d = sup ⁡ { ∣ C ∣ : H  shatters  C } d=\sup \{|C| : \mathcal{H} \text{ shatters } C\} d=sup{C:H shatters C},我们需要证明:

  1. 存在一个大小为 d d d的集合 C C C 能被 H \mathcal{H} H shatter。(注意,此处存在即可,下面才是对所有。)
  2. 所有大小为 d + 1 d+1 d+1的集合都不能被 H \mathcal{H} H shatter。

几种常见假设类的VC维度

单个阈值分类器(1D)

假设我们在一维数轴上进行二分类,使用单个阈值作为分类边界:
h ( x ) = { 1 , x ≥ θ 0 , x < θ h(x) = \begin{cases} 1, & x \geq \theta \\ 0, & x < \theta \end{cases} h(x)={1,0,xθx<θ
那么:

  • 对于 1 个点:可以 shatter(两种分类都能实现)。
  • 对于 2 个点:可以 shatter(任何 0-1 组合都能找到阈值实现)。
  • 对于 3 个点:不能 shatter(某些 0-1 组合无法由单个阈值实现)。例如,两个在边界的点分类为1,而中间的点分类为0时,则无法区分。

所以,单个阈值分类器的 VC 维度是 2

二位空间中的矩形分类器

设输入空间 X = R 2 \mathcal{X} = \mathbb{R}^2 X=R2。假设集合 H = { h ( a 1 , a 2 , b 1 , b 2 ) ∣ a 1 < a 2  and  b 1 < b 2 } \mathcal{H} = \{ h_{(a_1,a_2,b_1,b_2)} \mid a_1 < a_2 \text{ and } b_1 < b_2 \} H={h(a1,a2,b1,b2)a1<a2 and b1<b2},其中判别函数定义为:
h ( a 1 , a 2 , b 1 , b 2 ) ( x 1 , x 2 ) = { 1 iff  x 1 ∈ [ a 1 , a 2 ]  and  x 2 ∈ [ b 1 , b 2 ] 0 else h_{(a_1,a_2,b_1,b_2)}(x_1, x_2) = \begin{cases} 1 & \text{iff } x_1 \in [a_1, a_2] \text{ and } x_2 \in [b_1, b_2] \\ 0 & \text{else} \end{cases} h(a1,a2,b1,b2)(x1,x2)={10iff x1[a1,a2] and x2[b1,b2]else
该假设空间描述了平面直角坐标系中,所有边与坐标轴平行的矩形区域所构成的分类器集合。它的VC维度是4,原因见图:
在这里插入图片描述
只存在四个点时,我们可以选取矩形在每个维度上的两条边的取值选择包含/不包含四个点中的任意组合。然而第五个点在中间时,假设新加入的这个点和其余所有点的取值相反,那么矩形无法做到排除这个点在矩形外而包含其他四个点在矩形内。

有限假设类

H \mathcal{H} H 为有限假设类。显然,对于任意点集 C C C,有 ∣ H C ∣ ≤ ∣ H ∣ |\mathcal{H}_C| \leq |\mathcal{H}| HCH。因此当 ∣ H ∣ < 2 ∣ C ∣ |\mathcal{H}| < 2^{|C|} H<2C 时, C C C 必然无法被shatter。因此, VCdim ( H ) ≤ log ⁡ 2 ( ∣ H ∣ ) \text{VCdim}(\mathcal{H}) \leq \log_2(|\mathcal{H}|) VCdim(H)log2(H)
以上我们只是证明了 VCdim ( H ) ≤ log ⁡ 2 ( ∣ H ∣ ) \text{VCdim}(\mathcal{H}) \leq \log_2(|\mathcal{H}|) VCdim(H)log2(H),但实际上 VCdim ( H ) \text{VCdim}(\mathcal{H}) VCdim(H)可能会远小于 log ⁡ 2 ( ∣ H ∣ ) \log_2(|\mathcal{H}|) log2(H)。例如,设输入空间 X = { 1 , 2 , . . . , k } \mathcal{X} = \{1,2,...,k\} X={1,2,...,k}(其中 k k k为任意正整数),考虑上面定义的阈值函数类,此时 ∣ H ∣ = k |\mathcal{H}| = k H=k VCdim ( H ) = 1 \text{VCdim}(\mathcal{H}) = 1 VCdim(H)=1。由于 k k k可取任意大值, log ⁡ 2 ( ∣ H ∣ ) \log_2(|\mathcal{H}|) log2(H) VCdim ( H ) \text{VCdim}(\mathcal{H}) VCdim(H) 之间的差距也可以任意扩大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值