Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

仮説集合の複雑度

VC次元

VC次元 (VC dimension) は仮説集合の複雑度の指標の一つ。 主に2値判別問題の仮説集合に用いられるが、多値判別問題や回帰問題に拡張することも可能。 名前の由来は理論の創始者であるVapnikとChervonenkisから。

2値判別のための仮説集合を H\mathcal{H} とする。 仮説 hHh \in \mathcal{H} は、入力空間 X\mathcal{X} から Y=2|\mathcal{Y}|=2 であるようなラベル集合 Y\mathcal{Y} への関数とする。 入力の集合 {x1,,xn}X\{x_1, \ldots, x_n\} \subset \mathcal{X} に対して、Yn\mathcal{Y}^n の部分集合

{(h(x1),,h(xn))YnhH}\{(h(x_1), \ldots, h(x_n)) \in \mathcal{Y}^n \mid h \in \mathcal{H}\}

の要素数を

ΠH(x1,,xn)={(h(x1),,h(xn))YnhH}\Pi_{\mathcal{H}}(x_1, \ldots, x_n) = |\{(h(x_1), \ldots, h(x_n)) \in \mathcal{Y}^n \mid h \in \mathcal{H}\}|

とおく(英語だとGrowth Functionと呼ばれる様子)。

定義より

ΠH(x1,,xn)2n\Pi_{\mathcal{H}}(x_1, \ldots, x_n) \leq 2^n

である。

入力の数nnが増えていけばラベル付のパターンが豊富となり、等式ΠH(x1,,xn)=2n\Pi_{\mathcal{H}}(x_1, \ldots, x_n) = 2^nが成立しにくくなると考えられる。その境界となるデータ数nnH\mathcal{H}のVC次元と呼ぶ。

数式的には、H\mathcal{H}のVC次元VCdim(H)\operatorname{VCdim}(\mathcal{H})

VCdim(H):=max{nN maxx1,,xnXΠH(x1,,xn)=2n}\operatorname{VCdim}(\mathcal{H}) := \max \left\{ n \in \mathbb{N} \left| ~ \max _{x_1, \ldots, x_n \in \mathcal{X}} \Pi_{\mathcal{H}}(x_1, \ldots, x_n) = 2^n \right. \right\}

と定義される。また、任意の nNn \in \mathbb{N} に対して x1,,xnXx_1, \ldots, x_n \in \mathcal{X} が存在して ΠH(x1,,xn)=2n\Pi_{\mathcal{H}}\left(x_1, \ldots, x_n\right)=2^n が成り立つときは VCdim(H)=\operatorname{VCdim}(\mathcal{H})=\infty と定義する。

VC次元は言葉で説明すると「仮説集合H\mathcal{H}のもとで、ラベルのすべての組み合わせを網羅できる(どんなラベル付けにも対応可能な仮説が存在する)データ数の最大値」となる。

例:step function

1直線上に並ぶ点で、step functionのようにラベルが変化する(positive raysと呼ばれる?)なら、1つの点で分離できる。

H\mathcal{H}h:R{0,1}h: \mathbb{R} \to \{0, 1\}なる関数、具体的には h(x)=1(xa)h(x) = \mathbb{1}(x \geq a) をすべて含むとする。

nn個のデータ点を2つの領域に分類するとき、n+1n+1個のパターンがある。

Growth functionはΠH(x1,,xn)=n+1\Pi_{\mathcal{H}}(x_1, \ldots, x_n) = n + 1となり、n=0,1n=0,1のときのみΠH(x1,,xn)=2n\Pi_{\mathcal{H}}(x_1, \ldots, x_n) = 2^nなので、VCdim(H)=1\operatorname{VCdim}(\mathcal{H})=1となる。

Source
import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=[5, 1.5])

x = np.arange(0, 10)
a = 4.5
y = 1 * (x >= a)
ax.arrow(-1, 0, x.max() + 2, 0, head_width=0.1, head_length=0.3, fc='black', ec='black')
for y_ in [0, 1]:
    idx = y_ == y
    ax.scatter(x[idx], np.zeros_like(x[idx]), label=f"h(x)={y_}")

ax.scatter(a, 0, marker="s", color="red")
ax.text(a, 0.2, "a", color="red", ha="center")

ax.legend()
ax.set(ylim=(-0.5, 1.5), yticks=[], yticklabels=[], xticks=[], xticklabels=[], title="positive rays")
fig.show()
<Figure size 500x150 with 1 Axes>

例:intervals

1直線上で、ある区間だけy=1y=1、他がy=0y=0となる場合。

Growth functionは

ΠH(x1,,xn)=(n+12)+1=12n2+12n+1\Pi_{\mathcal{H}}(x_1, \ldots, x_n) = \binom{n+1}{2}+1=\frac{1}{2} n^2+\frac{1}{2} n+1

となり、n=0,1,2n=0,1,2のときのみΠH(x1,,xn)=2n\Pi_{\mathcal{H}}(x_1, \ldots, x_n) = 2^nなので、VCdim(H)=2\operatorname{VCdim}(\mathcal{H})=2となる。

Source
import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=[5, 1.5])
x = np.arange(0, 10)
a, b = [1.5, 7.5]
y = 1 * (a <= x) * (x < b)
ax.arrow(-1, 0, x.max() + 2, 0, head_width=0.1, head_length=0.3, fc='black', ec='black')
for y_ in [0, 1]:
    idx = y_ == y
    ax.scatter(x[idx], np.zeros_like(x[idx]), label=f"h(x)={y_}")

ax.scatter(a, 0, marker="s", color="red")
ax.text(a, 0.2, "a", color="red", ha="center")
ax.scatter(b, 0, marker="s", color="red")
ax.text(b, 0.2, "b", color="red", ha="center")

ax.legend()
ax.set(ylim=(-0.5, 1.5), yticks=[], yticklabels=[], xticks=[], xticklabels=[], title="positive intervals")

fig.show()
<Figure size 500x150 with 1 Axes>

例:3点

一直線上にない3点までなら、1つの直線でグループを2つに分けられる。4点になると分けられないものが出てくる(線形分離不可能問題)

VC次元の意味と例 - 具体例で学ぶ数学

サウアーの補題

H\mathcal{H}のVC次元をddとおくと、dnd\leq nならΠH(x1,,xn)\Pi_{\mathcal{H}}(x_1, \ldots, x_n)は高々dd次の多項式オーダーO(nd)O(n^d)となる。

VC次元と予測誤差の関係

この定理の証明にはラデマッハ複雑度による一様大数の法則が用いられる。

学習データS={(X1,Y1),,(Xn,Yn)}S=\{(X_1, Y_1), \ldots,(X_n, Y_n)\}が観測されたとき、経験判別誤差R^(h)\hat{R}(h)の最小化で得られる仮説をhSh_Sとする。簡単のため、ベイズ規則h0h_0H\mathcal{H}に含まれるとする。このとき

R^(hS)R^(h0)R(h0)R(hS)\hat{R}(h_S) \leq \hat{R}(h_0)\\ R(h_0) \leq R(h_S)

が常に成り立つ。そして以下が成り立つ

(以下は金森(2015)のp.22の式展開を想像で補ったりしたもの)

R^(hS)R^(h0)    R^(hS)+R(hS)追加R^(h0)+R(hS)追加    R(hS)R^(h0)+R(hS)R^(hS)    R(hS)R(h0)R(h0)追加+R^(h0)+R(hS)R^(hS)    R(hS)R(h0)+R^(h0)R(h0)+suphHR(hS)R^(hS)(おそらく、supなら上限のため不等号で大きい方に置いても妥当なため)    R(hS)R(h0)+2suphHR(hS)R^(hS)(おそらくh0Hの仮定のため)    R(hS)R(h0)+42dnlogend+log(2/δ)2n(前述の定理のため)\begin{aligned} &\hat{R}(h_S) \leq \hat{R}(h_0) \\ &\iff \hat{R}(h_S) + \underbrace{ R(h_S) }_{追加} \leq \hat{R}(h_0) + \underbrace{ R(h_S) }_{追加} \\ &\iff R(h_S) \leq \hat{R}(h_0) + R(h_S) - \hat{R}(h_S) \\ &\iff R(h_S) \leq \underbrace{ R(h_0) - R(h_0) }_{追加} + \hat{R}(h_0) + R(h_S) - \hat{R}(h_S) \\ &\iff R(h_S) \leq R(h_0) + |\hat{R}(h_0) - R(h_0)| + \sup_{h\in\mathcal{H}} |R(h_S) - \hat{R}(h_S)| \quad (おそらく、supなら上限のため不等号で大きい方に置いても妥当なため)\\ &\iff R(h_S) \leq R(h_0) + 2 \sup_{h\in\mathcal{H}} |R(h_S) - \hat{R}(h_S)| \quad (おそらく h_0\in\mathcal{H}の仮定のため) \\ &\iff R(h_S) \leq R(h_0) + 4 \sqrt{\frac{2 d}{n} \log \frac{e n}{d}}+\sqrt{\frac{\log (2 / \delta)}{2 n}} \quad (前述の定理のため)\\ \end{aligned}

確率オーダーで表現すると

R(hS)R(h0)+Op(log(n/d)n/d)R(h_S) \leq R(h_0) + O_p \left(\sqrt{\frac{\log(n/d)}{n/d}} \right)

となり、予測誤差はデータ数とVC次元の比n/dn/dと関連していることがわかる。

PAC学習との関係

VC次元は、PAC学習の理論を仮説集合が有限でない場合にも拡張する際に登場する指標らしい(VC次元の意味と例 - 具体例で学ぶ数学