가장 가까운 이웃을 넘어서야 할 때


9

우리가 수행하는 많은 기계 학습 프로젝트의 경우 k 가장 가까운 이웃 분류기로 시작합니다. 이는 일반적으로 모든 거리를 계산하기에 충분한 시간이 있고 매개 변수 수가 제한되어 있기 때문에 이상적인 시작 분류기입니다 (k, 거리 측정 및 가중치).

그러나 프로젝트 후반에 다른 분류기로 전환 할 여지가 없으므로 knn 분류기를 사용하는 경우가 종종 있습니다. 새로운 분류기를 사용하는 것이 좋은 이유는 무엇입니까? 명백한 것은 기억력과 시간 제약이지만 다른 분류자가 실제로 정확도를 향상시킬 수있는 경우가 있습니까?


이것은 순수하게 학업 적인가 아니면 산업계에서 사용되어야 하는가?
Dr Rob Lang

1
대부분의 응용 프로그램은 업계에서 배포되므로 메모리 사용량과 계산 시간이 문제가됩니다.

답변:


3

k-NN은 매우 제한적인 의미로 일반화합니다. 단순히 부드러움 사전 (또는 연속성 가정)을 사용합니다. 이 가정은 피처 공간에 가까운 패턴이 동일한 클래스에 속할 가능성이 높다는 것을 의미합니다. k-NN은 패턴 분포의 기능적 규칙 성을 복구 할 수 없습니다.

따라서, 대표적인 차원의 트레이닝 샘플이 필요하며, 이는 특히 차원이 큰 피쳐 공간의 경우에 매우 클 수 있습니다. 더 나쁜 것은이 샘플을 사용할 수 없다는 것입니다. 결과적으로 변이를 배울 수 없습니다. 레이블을 변경하지 않고 패턴에 일부 변형을 적용 할 수 있고 훈련 샘플에 모든 허용 가능한 방식으로 변형 된 패턴이 포함되어 있지 않은 경우 k-NN은 훈련 중에 제시되지 않은 변형 된 패턴을 인식하지 못합니다. 예를 들어 k-NN을 실행하기 전에 이미지가 일정하지 않은 형태로 표시되지 않은 경우 이미지가 이동되거나 회전 된 경우에 해당됩니다. k-NN은 관련없는 기능을 추상화 할 수도 없습니다.

또 다른 인공적인 예는 다음과 같습니다. 주기적으로 분산 된 다른 클래스에 속하는 패턴이 있다고 가정합니다 (예 : 사인에 따라-0보다 작 으면 패턴이 한 클래스에 속하고 더 큰 경우 패턴이 다른 클래스에 속함). 훈련 세트는 유한합니다. 따라서 유한 한 지역에 위치합니다. 이 영역을 벗어난 인식 오류는 50 %입니다. 이 경우 훨씬 더 나은 성능을 발휘하는주기적인 함수를 사용하여 로지스틱 회귀를 상상할 수 있습니다. 다른 방법은 패턴 분포에서 다른 규칙을 배우고 잘 외삽 할 수 있습니다.

따라서 이용 가능한 데이터 세트가 대표성이 아니며 패턴의 일부 변형에 대한 불변이 달성되어야한다고 의심되는 경우 k-NN을 넘어서야합니다.


귀하의 답변에 감사드립니다 (그리고 그것을 개선하려고 한 BartoszKP에게 감사드립니다). knn이 변환이 필요한 패턴을 찾을 수 없다는 것은 사실입니다 (이상한 (잘못된) 거리 측정법을 사용하지 않는 한). 그것이 다른 분류자를 시도하는 좋은 이유입니다. svm이 확실한 선택이라고 생각합니다. 나는 svm에 익숙하지 않지만 커널을 정의하려는 패턴에 대한 특정 지식이 필요하지 않습니까?

예. 커널의 선택은 패턴에 따라 다릅니다. 가우스 커널은 k-NN 방법과 유사한 속성을 갖습니다. 다른 표준 커널도 부적절 할 수 있습니다. 그러나 적어도 그것들을 사용해 볼 수 있습니다.

@ Necro0x0Der에 의해 암시 된 바와 같이, 이들 라인을 따른 개선은 매개 변수화에 자연스러운 패턴 (사인 예에서 주기성)에 의존 할 것이다. 즉, 매개 변수화 (커널 선택)는 표현 공간의 구조 (효과적으로 메트릭)를 정의합니다. 어떤 방법으로 적절한 구조를 결정할 수 있다면 (아마도 교육적인 추측으로) 패턴을 매개 변수화하십시오. 결국 분류기는 특정 유형의 관련 기능을 쉽게 찾을 수 있습니다.

3

높은 치수는 물론 고정 된 한계가 아니며 대부분의 경우 우리의 특징은 거리가 작동하도록 충분히 표현됩니다. 물론 이것은 중요한 포인트 일 수 있습니다. 어쩌면 나는 예를 들어 분명히해야했을 것입니다. 정확도가 93 % 인 분류 기가 있다고 가정 해 봅시다. 그러나 이제 분류기를 개선하거나 새로운 기능을 찾을 수 있습니다. 그것은 모두 가능한 새로운 기능과 데이터에 달려 있지만이 결정에 대한 지침을 찾고있었습니다.

@Rhand 프로젝트 관리 수준의 결정이라고 생각합니다. 현재 솔루션을 수용 할 수 있다면 왜 해결책이 있습니까? 시간 낭비입니다. 수용 할 수없는 경우 개선 할 사항 (속도, 정확도 등)을보다 정확하게 정의하십시오.
BartoszKP

프로젝트 관리 일뿐 만 아니라 질문은 최대 정확도를 얻는 방법 (내 질문에 있음)과 어떤 방향이 가장 좋습니다. 차원이 너무 높을 수 있기 때문에 svm 및 임의 포리스트를 제안합니다. 정확도가 향상되는지 확인하기 위해 실험 할 수있는 가능성 중 하나입니다.

반면에 이것은 매우 광범위한 질문입니다. 분류 자 X가 Y보다 낫다는 일반적인 규칙은 없습니다 . 예를 들어 몇 가지 분류기를 시도한 다음 모델 선택 을 위해 교차 유효성 검사 를 수행해야 합니다.
BartoszKP

3

kNN은 대용량 데이터 샘플에 유용합니다

그러나 단점은 다음과 같습니다.

  1. k 값으로 치우침.
  2. 계산 복잡성
  3. 메모리 제한
  4. 지도 학습 게으른 알고리즘
  5. 관련없는 속성으로 쉽게 속일 수 있습니다.
  6. 속성 수가 증가하면 예측 정확도가 빠르게 저하 될 수 있습니다.

훈련 데이터가 크고 훈련이 매우 빠른 경우에만 효과적입니다.


나는 클러스터링을 보지 않고 분류를보고있다

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