SVM을 사용할 때 기능을 확장해야하는 이유는 무엇입니까?


9

scikit-learn 의 StandardScaler 객체 설명서에 따르면 :

예를 들어, 학습 벡터 알고리즘의 목적 함수에 사용되는 많은 요소 (예 : Support Vector Machine의 RBF 커널 또는 선형 모델의 L1 및 L2 정규화 기)는 모든 기능이 0을 중심으로하고 동일한 순서로 분산되어 있다고 가정합니다. 특징이 다른 것보다 수십 배 큰 분산을 갖는 경우, 목적 함수를 지배하고 추정기가 예상대로 다른 특징에서 올바르게 학습하지 못할 수 있습니다.

분류하기 전에 기능을 확장해야합니다. 내가 왜이 일을해야하는지 보여줄 수있는 쉬운 방법이 있습니까? 과학 기사에 대한 언급이 더 좋습니다. 나는 이미 하나를 찾았 지만 아마도 많은 것이있을 것입니다.

답변:


16

모든 커널 방법은 거리를 기준으로합니다. RBF 커널 함수이다 (사용 대 간단).κ(u,v)=exp(uv2)γ=1

3 개의 특징 벡터가 주어지면 :

x1=[1000,1,2],x2=[900,1,2],x3=[1050,10,20].

그런 다음 , 은 과 비슷 하고 와 유사합니다 .κ(x1,x2)=exp(10000)κ(x1,x3)=exp(2905)x1x3x2

과 의 상대적인 차이x1

x2[0.1,0,0],x3[0.05,10,10].

그래서 크기 조정을하지 않고, 우리는 결론 더 유사하다 보다 , 비록 간 기능에 따라 상대적인 차이 과 은 및 보다 훨씬 큽니다 .x1x3x2x1x3x1x2

다시 말해, 모든 기능을 비슷한 범위로 확장하지 않으면 가장 큰 범위를 가진 기능이 커널 매트릭스 계산에서 완전히 지배됩니다.

다음 문서에서이를 설명하는 간단한 예를 찾을 수 있습니다. 벡터 분류를 지원하기위한 실용 안내서 (섹션 2.2).


당신은 또한 정규화에 대해 논의하고 싶을 것입니다 : 무게의 규모는 입력의 규모에 달려 있습니다.
seanv507

정규화의 효과는 다른 스케일링이 다른 최적의 암시 하며, 이는이 특정 문제와 다소 직교합니다. C
Marc Claesen

2
그러나 실제로 한 차원에 대한 근접성이 더 중요 할 수 있습니다. 따라서 목표는 실제로 모든 지형지 물에서 동일한 분산을 갖는 것이 아니라 모든 지형지 물의 거리가 작업에서 거의 동일한 중요성을 갖도록 크기를 조정하는 것입니다.
isarandi

@Marc Claesen, 변수의 크기가 다른 경우 가중치도 크기가 다르며 l2 표준은 분산이 작고 그에 따라 가중치가 큰 입력에 중점을 둡니다. 달리 말하면, 가중치 규범 정규화는 '작은'입력이 작은 효과를 갖도록합니다. 예를 들어 변수를 정규화하여 '작은'(입력에서)을 표준화 한 경우에만 의미가 있습니다.
seanv507

1
선형 SVM에만 적용되는 @ seanv507
Marc Claesen

0

사용중인 커널에 따라 다릅니다. 가장 일반적으로 사용되는 (선형을 제외하고) 가우시안 커널은 다음과 같은 형식입니다.

f=exp(||x1x2||22σ2)

SVM은이 기능을 사용하여 점 ( ) 의 유사성을 훈련 세트의 다른 모든 점과 비교 하여 차이점을 다음과 같이 비교합니다.x1

(x1l1)2+(x2l2)2...+(xnln)2

여기서 는 예제이고 의 값은 랜드 마크입니다.xl

이 기능의 경우 기능 동안 50,000 - 0 범위 0 범위 - 0.01, 당신은 볼 수 있습니다 지배하는 것입니다을 그 합계 동안 는 사실상 영향을 미치지 않습니다. 이러한 이유로 커널을 적용하기 전에 기능을 확장해야합니다.x1x2x1x2

자세한 내용을 보려면 Coursera의 기계 학습에서 Stanford 온라인 과정의 모듈 12 (Support Vector Machines)를 권장합니다 (무료 및 언제든지 사용 가능) : https://www.coursera.org/course/ml

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.