VC 치수를 계산하는 방법?


12

기계 학습을 공부하고 있는데 VC 치수를 계산하는 방법을 알고 싶습니다.

예를 들면 다음과 같습니다.

h(x)={1if axb0else  , 파라미터들(a,b)R2 .

그것의 VC 차원은 무엇입니까?

답변:


10

VC 차원은 이진 분류기의 기능에 대한 추정치입니다. 점 세트를 찾을 수 있으면 분류 자에 의해 산산조각이 나올 수 있고 (즉, 가능한 모든 2 n 레이블을 올바르게 분류) 산산조각이 나올 수있는 n + 1 점 세트를 찾을 수없는 경우 (예 : n + 1 포인트는 분류자가 모든 포인트를 올바르게 분리 할 수 ​​없도록 하나 이상의 레이블 지정 순서가있는 경우 VC 치수는 n 입니다.n2nn+1n+1n

귀하의 경우, 먼저 x 1 < x 2 와 같이 두 개의 점 x 2를 고려하십시오 . 그런 다음 2 2 = 4 가능한 레이블이 있습니다.x1x2x1<x222=4

  1. , x 2 :: 1x1:1x2:1
  2. , x 2 : 0x1:0x2:0
  3. , x 2 : 0x1:1x2:0
  4. , x 2 : 1x1:0x2:1

모든 labelings는 분류기를 통해 달성 될 수있는 의 매개 변수를 설정함으로써 < B R 되도록을ha<bR

  1. a<x1<x2<b
  2. x1<x2<a<b
  3. a<x1<b<x2
  4. x1<a<x2<b

각기. (실제로, 는 wlog로 가정 할 수 있지만 산산이 부서 질 수있는 하나의 세트를 찾는 것으로 충분합니다.)x1<x2

이제 3 개의 임의의 (!) 점 , x 2 , x 3을 고려 하고 wlog는 x 1 < x 2 < x 3 이라고 가정 하면 레이블링 (1,0,1)을 달성 할 수 없습니다. 위의 경우 3에서와 같이 레이블 x 1 : 1 및 x 2 : 0 은 a < x 1 < b < x 2를 의미 합니다. x 3 > b를 의미 하므로 x 3 의 레이블x1x2x3x1<x2<x3x1x2a<x1<b<x2x3x3 따라서 분류기는 세 점 세트를 산산조각 낼 수 없으므로 VC 치수는 2입니다.

-

더 유용한 분류기를 사용하면 더 명확해질 수 있습니다. 초평면 (2D의 선)을 고려해 봅시다.

어떻게 분류되는지에 상관없이 올바르게 분류 될 수있는 세 가지 점을 쉽게 찾을 수 있습니다.

여기에 이미지 설명을 입력하십시오

23=8

24=16

지금은 4 개의 점이 4 개의 변을 가진 그림을 형성한다고 가정합니다. 그런 다음 같은 레이블로 반대쪽 모서리에 레이블을 지정하면 점을 올바르게 분리 할 수있는 초평면을 찾을 수 없습니다.

4 개의 변이있는 도형을 형성하지 않으면 두 가지 "경계 케이스"가 있습니다. "외부"지점은 삼각형을 형성하거나 모두 직선을 ​​형성해야합니다. 삼각형의 경우 "내부"지점 (또는 두 모퉁이 사이의 지점)이 다른 라벨과 다른 라벨을 지정할 수 없다는 것을 쉽게 알 수 있습니다.

선분의 경우 동일한 아이디어가 적용됩니다. 끝점에 다른 점 중 하나와 다르게 레이블이 지정되어 있으면 초평면으로 분리 할 수 ​​없습니다.

우리는 2D에서 4 포인트의 모든 가능한 형성을 다루었으므로, 산산이 부서 질 수있는 4 포인트가 없다고 결론 내릴 수 있습니다. 따라서 VC 차원은 3이어야합니다.


1
그러나 함수는 x1 = 0, x2 = 0, x3 = 0을 달성 할 수 있습니다. 모든 레이블을 달성해야합니까?
铭 声 孙

나는 선형 가설 함수와 관련하여 datascience.stackexchange.com/questions/39064/… 그 대답에 도움이 될 수 있습니까?
Suhail Gupta

3

분류기의 VC 치수는 다음과 같이 결정됩니다.

VC = 1
found = False
while True:
    for point_distribution in all possible point distributions of VC+1 points:
        allcorrect = True
        for classdist in every way the classes could be assigned to the classes:
            adjust classifier
            if classifier can't classify everything correct:
                allcorrect = False
                break
        if allcorrect:
            VC += 1
            continue
    break

따라서이 포인트 배치 중 가능한 모든 클래스 분포가 올바른 방식으로 분류 될 수 있도록 세 포인트를 배치하는 방법은 하나만 있어야합니다.

세 점을 한 줄에 배치하지 않으면 인식이 올바르게됩니다. 그러나 포인트를 어떻게 배치하든 상관없이 인식이 4 포인트의 모든 가능한 클래스 분포를 분류 할 수있는 방법은 없습니다

당신의 예

R

VC- 치수 2 : 4 가지 상황을 모두 정확하게 분류 할 수 있습니다.

  1. 포인트 : 0과 42
  2. 분포 :
    • a=1337,b=3141
    • a=40,b=1337
    • a=1,b=1
    • a=1,b=1337

VC- 치수 3 : 아니오, 작동하지 않습니다. 클래스가 다음 truefalse같이 주문 된다고 상상해보십시오 True False True. 당신의 분류자는 그것을 처리 할 수 ​​없습니다. 따라서 VC 치수는 2입니다.

증명

x1,x2,x3Rx1<x2<x3

x1x2x3

x1

ax1b
x2
x2<a or b<x2
ax1x1<x2b<x2
ax1b<x2<x3
x3
ax3b
b<x3. 따라서이 분류기로 3 점의 모든 클래스 분포를 올바르게 분류 할 수 없습니다. 따라서 VC 차원이 없습니다.

1
상수 분류기의 VC 치수는 0입니다 (처음에는 분류기로 간주해서는 안된다고 주장 할 수 있음)
oW_

1
아 ... 맞아. 그러나 예, 기계 학습 컨텍스트의 모든 분류 자에서 데이터에 적응할 수없는 시스템을 호출하지는 않습니다.
Martin Thoma
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.