VC 치수를 계산하는 방법?


12

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

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

h(x)={1if a≤x≤b0else  , 파라미터들(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<b∈R

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

증명

x1,x2,x3∈Rx1<x2<x3

x1x2x3

x1

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

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

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