kNN의 관계, 가중치 및 투표 처리


14

kNN 알고리즘을 프로그래밍 중이며 다음을 알고 싶습니다.

타이 브레이크 :

  1. 과반수 투표에서 확실한 승자가 없으면 어떻게됩니까? 예를 들어 k 개의 가장 가까운 이웃이 다른 클래스에서 왔거나 k = 4 인 경우 A 클래스에서 2 명의 이웃이 있고 B 클래스에서 2 명의 이웃이 있습니까?
  2. 거리가 같은 이웃이 더 많아서 정확히 k 개의 가장 가까운 이웃을 결정할 수 없으면 어떻게됩니까? 예를 들어 거리 목록의 (x1;2), (x2;3.5), (x3;4.8), (x4;4.8), (x5;4.8), (x6;9.2)경우 3 ~ 5 번째 이웃이 모두 같은 거리를 갖기 때문에 k = 3 또는 k = 4 가장 가까운 이웃을 결정할 수 없습니다.

무게 :

  1. 나는 우승 클래스를 선택하기 전에 k- 최근 접 이웃에게 무게를 두는 것이 좋다는 것을 읽었습니다. 어떻게 작동합니까? 즉, 이웃은 어떻게 가중치를 받고 클래스는 어떻게 결정됩니까?

과반수 투표 대안 :

  1. 과반수 투표 이외의 우승 클래스를 결정하는 다른 규칙 / 전략이 있습니까?

답변:


7

내 관점에서 가장 가까운 k의 이웃에 대한 넥타이를 끊는 가장 좋은 방법은 넥타이를 끊을 때까지 k 를 1 씩 줄이는 것 입니다. k = 1 일 때 동점은 불가능하기 때문에 투표 가중치 방식과 상관없이 항상 작동 합니다. 가중치 체계 및 범주 수를 보류 하면서 k 를 늘리면 동점 구분을 보장 할 수 없습니다.


11
k = 1 일 때 동점이 불가능한 이유, 같은 거리를 가진 두 개의 이웃이 다른 클래스에 속하는 경우 어떻게 k = 1 인 가장 가까운 이웃을 결정합니까?
j5shi

6

kNN을 수행 할 때 한 가지 명심해야합니다. 즉, 엄격하게 수학적으로 파생 된 알고리즘이 아니라 하나의 직감을 기반으로 한 간단한 분류 자 ​​/ 회귀 변수입니다. 인수가 변하지 않을 때 기본 함수는 크게 변경되지 않습니다. 많은. 즉, 기본 기능은 로컬에서 거의 일정합니다. 이 가정을 사용하면 가장 가까운 k 포인트 값의 (가중치) 평균을 사용하여 주어진 포인트에서 기본 함수의 값을 추정 할 수 있습니다.

이를 염두에두고 다수결에서 확실한 승자가 없을 때해야 할 일에 대한 명확한 명령이 없음을 알 수 있습니다. 항상 홀수 k를 사용하거나 인젝 티브 가중치를 사용할 수 있습니다.

이웃 3에서 5가 관심 지점에서 같은 거리에있는 경우 두 개만 사용하거나 5를 모두 사용할 수 있습니다. kNN은 복잡한 수학적 분석에서 파생 된 일부 알고리즘이 아니라 단지 간단한 직감. 그러한 특별한 경우를 어떻게 처리하고 싶은지는 당신에게 달려 있습니다.

1||xy||2

Samory Kpotufe와 Abdeslam Boularias가 올해 올바른 가중치를 찾는 문제에 관해 NIPS에 관한 좋은 논문도 발표했습니다. 그들의 일반적인 직관은 기본 기능이 다른 방향으로 다르게 변한다는 것입니다 (즉, 다른 부분 파생물은 다른 크기입니다). 따라서 어떤 의미에서는이 직관에 따라 메트릭스 / 가중치를 변경하는 것이 현명합니다. 그들은이 트릭이 일반적으로 kNN 및 커널 회귀의 성능을 향상 시킨다고 주장하며,이 주장을 뒷받침하는 이론적 결과가 있다고 생각합니다 (이 이론적 결과가 실제로 무엇을 주장하는지 확실하지 않지만, 갈 시간이 없었습니다. 전체 논문을 통해). 논문은 사이트에서 무료로 다운로드하거나 인터넷 검색 후 "그라디언트 가중치가 비모수 회귀 분석에 도움이 됨"후에 다운로드 할 수 있습니다.

자, 당신은 아마도 당신이 올바른 k, 미터법, 가중치, 그림이있을 때 수행 할 행동을 찾는 방법을 알고 싶을 것입니다. 안타깝게도 깊이 생각한 후에 올바른 하이퍼 파라미터에 도달하기가 기본적으로 어려우므로 다른 하이퍼 파라미터를 테스트하고 어떤 유효성 검사 세트에서 어떤 하이퍼 파라미터가 제대로 작동하는지 확인해야합니다. 계산 리소스가 있고 좋은 하이퍼 매개 변수 집합에서 올바른 매개 변수에 자동으로 도달하려는 경우 해당 설정에서 미 분산 최적화를 위해 가우시안 프로세스를 사용하는 최근 아이디어가 있습니다.

자세히 설명하겠습니다. 하이퍼 파라미터 세트 (예 : 유효성 검사 데이터의 오류를 최소화)를 찾는 것은 최적화 문제로 볼 수 있습니다. 불행하게도,이 설정에서는 최적화하려는 함수의 그라디언트를 얻을 수 없습니다 (일반적으로 원하는 것, 그라디언트 디센트 또는보다 고급 방법 수행). 이 설정에서는 가우스 프로세스를 사용하여 현재까지 발견 한 최고의 것보다 성능이 우수 할 가능성이 큰 하이퍼 파라미터 세트를 찾을 수 있습니다. 따라서 일부 하이퍼 파라미터 세트로 알고리즘을 반복적으로 실행 한 다음 다음 시도가 가장 좋은 가우시안 프로세스를 요청하고 해당 프로세스를 시도하는 등의 작업을 수행 할 수 있습니다.

자세한 내용은 Jasper Snoek, Hugo Larochelle 및 Ryan P Adams (웹 사이트 또는 Google을 통해 제공됨)의 "기계 학습 알고리즘의 실용적인 베이지안 최적화"를 찾으십시오.


2
경고 : 검증 세트에서 최고의 정확도를 갖도록 하이퍼 파라미터를 최적화하는 것은 과잉 적합 망각에 대한 직접적인 방법입니다. 중첩 된 CV를 원합니다.

"홀수 k"가 반드시 넥타이 문제를 해결하지는 않는다는 점에 주목하십시오. 예를 들어 세 그룹을 분류 할 때 k = 3입니다. 그 외에는 동의합니다. 좋은 설명입니다.
Pyll

1

이 동점 부분에 대해, 동점에 대한 가장 좋은 기본 아이디어는 일반적으로 임의의 속보이므로 모든 투표에서 임의의 클래스를 선택하고 k를 채울만큼 큰 묶인 객체의 하위 세트를 무작위로 선택합니다.

이러한 해결책은 kNN 체제에서 결정을 내릴 충분한 정보를 제공하지 않는 병리학 적 사례라는 사실을 강조합니다. BTW 데이터에 공통적 인 경우 좀 더 차별화 된 거리를 시도해야합니까?


0

한 가지 가능한 방법은 확실한 승자가 될 때까지 알고리즘이 k를 자동으로 늘리거나 줄이는 것입니다.

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