{{위키데이터 속성 추적}}
{{DISPLAYTITLE:{{수학 변수|k}}-최근접 이웃 알고리즘}}
{{머신 러닝 막대}}

[[패턴 인식]]에서 '''{{수학 변수|k}}-최근접 이웃 알고리즘'''(또는 줄여서 '''{{수학 변수|k}}-NN''')은 [[통계적 분류|분류]]나 [[회귀분석|회귀]]에 사용되는 [[비모수 통계|비모수]] 방식이다.<ref>{{저널 인용 |last=Altman |first=N. S. |title=An introduction to kernel and nearest-neighbor nonparametric regression |journal=The American Statistician |volume=46 |issue=3 |year=1992 |pages=175–185 |doi=10.1080/00031305.1992.10475879}}</ref>
두 경우 모두 입력이 [[특징 공간]] 내 k개의 가장 가까운 훈련 데이터로 구성되어 있다. 출력은 {{수학 변수|k}}-NN이 분류로 사용되었는지 또는 회귀로 사용되었는지에 따라 다르다.
:* {{수학 변수|k}}-NN 분류에서 출력은 소속된 항목이다. 객체는 k개의 최근접 이웃 사이에서 가장 공통적인 항목에 할당되는 객체로 과반수 의결에 의해 분류된다(k는 양의 [[정수]]이며 통상적으로 작은 수). 만약 {{수학 변수|k}} = 1 이라면 객체는 단순히 하나의 최근접 이웃의 항목에 할당된다.

:* {{수학 변수|k}}-NN 회귀에서 출력은 객체의 특성 값이다. 이 값은 k개의 최근접 이웃이 가진 값의 평균이다.

{{수학 변수|k}}-NN은 함수가 오직 지역적으로 근사하고 모든 계산이 분류될 때까지 연기되는 [[인스턴스 기반 학습]] 또는 [[게으른 학습]]의 일종이다. {{수학 변수|k}}-NN 알고리즘은 가장 간단한 [[기계 학습]] 알고리즘에 속한다.

분류와 회귀 모두 더 가까운 이웃일수록 더 먼 이웃보다 평균에 더 많이 기여하도록 이웃의 기여에 가중치를 주는 것이 유용할 수 있다. 예를 들어, 가장 흔한 가중치 스키마는 ''d''가 이웃까지의 거리일 때 각각의 이웃에게 1/''d''의 가중치를 주는 것이다.<ref>이 스키마는 선형보간법을 일반화한 것이다.</ref>

이웃은 항목({{수학 변수|k}}-NN 분류의 경우)이나 객체 특성 값({{수학 변수|k}}-NN 회귀의 경우)이 알려진 객체의 집합으로부터 구해진다. 이것은 명시적인 훈련 과정이 필요하지는 않지만, 알고리즘을 위한 훈련 집합이라고 생각될 수 있다.

{{수학 변수|k}}-NN 알고리즘의 단점은 데이터의 지역 구조에 민감하다는 것이다. 이 알고리즘은 유명한 [[기계 학습]] 기법, [[k-평균 알고리즘|{{수학 변수|k}}-평균]]과 아무 관련이 없으므로 혼동하지 않아야 한다.

== 알고리즘 ==
[[파일:KnnClassification.svg|섬네일|검증 표본(초록색 원)은 첫 번째 파랑 네모의 항목이나 빨강 삼각형의 두 번째 항목으로 분류되어야 한다. 만약 “k = 3” (실선으로 그려진 원)이면 두 번째 항목으로 할당되어야 한다. 왜냐하면 2개의 삼각형과 1개의 사각형만이 안쪽 원 안에 있기 때문이다. 만약 “k = 5” (점선으로 그려진 원)이면 첫 번째 항목으로 분류되어야 한다. (바깥쪽 원 안에 있는 3개의 사각형 vs. 2개의 삼각형).]]

훈련 데이터는 각각이 항목 분류명을 갖는 다차원 특징 공간에서의 벡터이다. 알고리즘의 훈련 단계는 오직 훈련 표본의 [[특징 벡터]]와 항목 분류명을 저장하는 것이다.

분류 단계에서 {{수학 변수|k}}는 사용자 정의 상수이고 분류명이 붙지 않은 벡터(질의 또는 검증점)는 {{수학 변수|k}}개의 훈련 표본 사이에서 가장 빈번한 분류명을 할당함으로써 분류된다.

[[확률분포|연속 변수]]에서 가장 흔하게 사용되는 거리 척도는 [[유클리드 거리]]이다. 문자 분류와 같은 이산 변수의 경우 '''중첩 거리'''(또는 [[해밍 거리]])와 같은 다른 척도가 사용될 수 있다. 예를 들어 유전자 표현 미세 배열 데이터의 경우, {{수학 변수|k}}-NN은 피어슨과 스피어만 같은 상관 계수를 사용해 왔다.<ref>{{웹 인용|last1=Jaskowiak|first1=P. A.|last2=Campello|first2=R. J. G. B.|title=Comparing Correlation Coefficients as Dissimilarity Measures for Cancer Classification in Gene Expression Data|url=http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.208.993|website=http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.208.993|publisher=Brazilian Symposium on Bioinformatics (BSB 2011)|accessdate=16 October 2014|pages=1–8}}</ref> 종종 거리 척도가 [[큰 여백 최근접 이웃]]이나 [[이웃 성분 분석]]과 같은 특별한 알고리즘으로 학습된다면 {{수학 변수|k}}-NN의 분류의 정확성을 상당히 향상시킬 수 있다.

“과반수 의결”에 따른 분류의 단점은 항목 분포가 편향될 때 나타난다. 다시 말해서, 더 빈번한 항목의 데이터가 새로운 데이터의 예측을 지배하는 경향이 있다. 왜냐하면, 더 빈번한 항목의 데이터가 다수를 이루어서 k개의 최근접 이웃의 대부분이 되는 경향이 있기 때문이다.<ref name="Coomans_Massart1982">{{저널 인용
 | doi = 10.1016/S0003-2670(01)95359-0
 | author1 = D. Coomans
 | author2 = D.L. Massart
 | title = Alternative k-nearest neighbour rules in supervised pattern recognition : Part 1. k-Nearest neighbour classification by using alternative voting rules
 | journal = [[Analytica Chimica Acta]]
 | volume =  136
 | issue = 
 | pages = 15–27
 | year = 1982
}}
</ref> 이 문제를 해결하는 한 가지 방법은 검증점과 {{수학 변수|k}}개의 최근접 이웃 각각의 거리를 고려하여 분류에 가중치를 주는 것이다. 각각 {{수학 변수|k}}개의 최근접 점의 항목(회귀 문제의 경우 값)에 그 점에서 검증점까지의 거리에 반비례하는 가중치를 곱한다. 편향을 해결하는 또 다른 방법은 데이터 표현을 추상화하는 것이다. 예를 들어 [[자기조직화지도|자기 조직화 지도]](SOM)에서 각 노드는 원래의 훈련 데이터 밀도와 상관없이 유사점의 군집 대표(중심)이다. {{수학 변수|k}}-NN은 SOM에도 적용될 수 있다.

== 매개변수 선택 ==
최선의 {{수학 변수|k}}값을 선택하는 것은 데이터에 의존적이다. 일반적으로 {{수학 변수|k}} 값이 커질수록 분류에서 잡음의 영향이 줄어들지만<ref>Everitt, B. S., Landau, S., Leese, M. and Stahl, D. (2011) Miscellaneous Clustering Methods, in Cluster Analysis, 5th Edition, John Wiley & Sons, Ltd, Chichester, UK.</ref> 항목 간 경계가 불분명해진다. 좋은 {{수학 변수|k}}는 다양한 [[발견법|발견적]] 기법으로 선택될 수 있다([[초월매개변수 최적화]] 참고). 어떤 항목이 가장 가까운 훈련 표본의 항목으로 예측되는 특별한 경우(즉, {{수학 변수|k}} = 1 일 때)를 최근접 이웃 알고리즘이라고 부른다.

{{수학 변수|k}}-NN 알고리즘의 정확성은 잡음 또는 무관한 특징이 존재하거나 특징 크기가 중요성과 일치하지 않을 경우 상당히 감소한다. 많은 연구가 분류를 개선하기 위해 특징을 [[특징 선택|선택]]하거나 [[피처 스케일링|크기 조정]]하는 식으로 노력하고 있다. 특히 유명한 접근법은 특징 크기를 최적화하기 위해 [[진화형 알고리즘]]을 사용하는 것이다.<ref>{{저널 인용 |author=Nigsch F, Bender A, van Buuren B, Tissen J, Nigsch E, Mitchell JB |title=Melting point prediction employing k-nearest neighbor algorithms and genetic parameter optimization |journal=Journal of Chemical Information and Modeling |volume=46 |year=2006 |issue=6 |pages=2412–2422 |doi=10.1021/ci060149f |pmid=17125183}}</ref> 또 다른 유명한 접근법은 훈련 항목과 훈련 데이터의 [[상호 정보]]를 이용해 특징의 크기를 정하는 것이다.

이진(2개 항목) 분류 문제에서는 동률의 투표를 피하기 위해 홀수인 {{수학 변수|k}}를 선택하는 것이 바람직하다. 이런 환경에서 최적의 {{수학 변수|k}}를 경험적으로 선택하는 유명한 한 가지 방법은 부트스트랩 방식이다.<ref name="HPS2008">{{저널 인용
 | author = Hall P, Park BU, Samworth RJ
 | title = Choice of neighbor order in nearest-neighbor classification
 | journal = [[Annals of Statistics]]
 | volume = 36
 | issue = 5
 | pages = 2135–2152
 | year = 2008
 | doi = 10.1214/07-AOS537
}}
</ref>

== 특징 ==
{{수학 변수|k}}-NN은 균등한 [[커널 (통계)|핵]]을 가지는 [[변동 핵 밀도 추정]]의 특별한 경우이다.<ref name="Terrell_Scott1992">{{저널 인용
 | doi = 10.1214/aos/1176348768
 | author1 = D. G. Terrell
 | author2 = D. W. Scott
 | title = Variable kernel density estimation
 | journal = [[Annals of Statistics]]
 | volume = 20
 | issue = 3
 | pages = 1236–1265
 | year = 1992
}}
</ref>
<ref name="Mills2010">{{저널 인용
 | last = Mills
 | first = Peter
 | title = Efficient statistical classification of satellite measurements
 | date = 2012-08-09
 | url = https://archive.org/details/arxiv-1202.2194
 | journal = International Journal of Remote Sensing
}}
</ref>
이 알고리즘은 시험 데이터와 모든 저장된 데이터 사이의 거리를 계산하는 방식으로 쉽게 구현할 수 있지만, 다량의 훈련 집합에 대해 많은 계산량을 요구한다. 적절한 [[최근접 이웃 탐색]] 알고리즘을 사용하면 다량의 데이터 집합에 대해서도 {{수학 변수|k}}-NN 계산이 가능하도록 할 수 있다. 많은 최근접 이웃 탐색 알고리즘들은 일반적으로 실제로 수행되는 거리 계산 횟수를 줄이는 방법을 찾는 방식으로 제안되어 왔다.

{{수학 변수|k}}-NN은 매우 [[일관성 (통계)|일관성]] 있는 결과를 도출한다. 이 알고리즘은 데이터의 수가 무한대로 증가할수록 오차율이 [[베이즈 오차율]](주어진 데이터의 분포에서 달성할 수 있는 최소 오차율)의 두 배보다 항상 나쁘지 않음을 보장한다.<ref>{{저널 인용 |doi=10.1109/TIT.1967.1053964 |author=[[Thomas M. Cover|Cover TM]], [[Peter E. Hart|Hart PE]] |title=Nearest neighbor pattern classification |journal=IEEE Transactions on Information Theory |year=1967 |volume=13 |issue=1 |pages=21–27}}</ref> {{수학 변수|k}}-NN은 어떤 {{수학 변수|k}}값에 대해 베이즈 오차율에 항상 접근함을 보장한다(여기서 {{수학 변수|k}}는 데이터 수에 따라 증가). 근접 그래프를 사용하면 {{수학 변수|k}}-NN의 결과를 다양하게 개선할 수 있다.<ref>{{저널 인용 |doi=10.1142/S0218195905001622 |author=Toussaint GT |title=Geometric proximity graphs for improving nearest neighbor methods in instance-based learning and data mining |journal=International Journal of Computational Geometry and Applications |volume=15 |issue=2 |date=April 2005 |pages=101–150}}</ref>

== 거리 척도 학습 ==
(지도) 거리 척도 학습을 활용하면 종종 k-최근접 이웃 분류의 성능을 상당히 개선할 수 있다. 유명한 알고리즘으로는 [[이웃 성분 분석]]과 [[큰 여백 근접 이웃]]이 있다. 지도 거리 척도 학습 알고리즘은 새로운 거리 또는 유사 거리를 학습하기 위해 분류명 정보를 사용한다.

== 특징 추출 ==
알고리즘의 입력 데이터가 처리하기에 매우 크고 심각하게 불필요한 중복이 있다고 의심이 된다면(예를 들면 동일한 측정값이 피트와 미터 단위로 존재하는 경우), 입력 데이터를 특징들의 축소된 표현 집합(또는 특징 벡터)으로 변환할 수 있다. 입력 데이터를 특징들의 집합으로 변환하는 과정을 [[특징 추출]]이라고 한다. 만약 추출된 특징들이 세심하게 선택되었다면, 특징 집합이 전체 입력 데이터를 사용하지 않고 축소된 표현값만을 사용해 원하는 작업을 수행하도록 입력 데이터에서 적절하게 관련 있는 정보를 추출했음을 기대할 수 있다. 특징 추출은 [[특징 공간]]으로 변환된 데이터에 {{수학 변수|k}}-NN 알고리즘을 적용하기 전에 미가공 데이터에 수행된다.

특징 추출과 차원 축소 전처리 과정을 포함해 {{수학 변수|k}}-NN으로 구현된 대표적인 [[컴퓨터 비전]] 계산 파이프라인 [[안면 인식 시스템|안면 인식]] 예시(대부분 [[OpenCV]]로 구현됨):

# [[Haar 웨이블릿|Haar]] 안면 인식
# [[평균 이동]] 추적 분석
# 특징 공간으로의 [[주성분 분석]] 또는 [[선형 판별 분석|Fisher 선형 판별 분석]] 투영 후 {{수학 변수|k}}-NN 분류

== 차원 축소 ==
고차원의 데이터(예를 들어 10차원을 넘는 경우)에 대해선 [[Curse of Dimensionality|차원의 저주]]를 피하기 위해 보통 {{수학 변수|k}}-NN 알고리즘을 사용하기 전에 [[차원 축소]]를 수행한다.
<ref>Beyer, Kevin, et al.. 'When is “nearest neighbor” meaningful?. Database Theory—ICDT’99, 217-235|year 1999</ref>

{{수학 변수|k}}-NN에서 차원의 저주는 기본적으로 [[유클리드 거리]]가 고차원에선 도움이 되지 않음을 의미한다. 왜냐하면, 모든 벡터가 탐색 질의 벡터와 대부분 같은 거리를 갖고 있기 때문이다(많은 점들이 대부분 질의 점을 중심으로 하는 원 위에 있다고 생각해 보면, 검색 공간에서 질의 점과 모든 데이터 점 사이의 거리는 대부분 같다).

[[특징 추출]]과 차원 축소는 [[주성분 분석]](PCA), [[선형 판별 분석]](LDA), 또는 [[정준 상관 분석]](CCA) 기술을 전처리 과정으로 사용하면 한 과정으로 합칠 수 있다. 그 후 {{수학 변수|k}}-NN을 사용해 축소된 차원 공간에서 군집화를 할 수 있다. [[기계 학습]]에서 이 과정을 저차원 [[매장 (수학)|매장]]이라 부른다.<ref>Shaw, Blake, and Tony Jebara. 'Structure preserving embedding. Proceedings of the 26th Annual International Conference on Machine Learning. ACM,2009</ref>

초고차원의 데이터 집합(예를 들어 실시간 비디오 스트림, DNA 데이터 또는 고차원 [[시계열]])에 대해선 [[지역 민감 해싱]], "무작위 투영",<ref>Bingham, Ella, and Heikki Mannila. Random projection in dimensionality reduction: applications to image and text data. Proceedings of the seventh ACM SIGKDD international conference on Knowledge discovery and data mining. ACM | year 2001</ref> "스케치"<ref>Shasha, D High Performance Discovery in Time Series.Berlin: Springer, 2004, {{ISBN|0-387-00857-8}}</ref> 또는 [[VLDB]] 툴박스의 다른 고차원 유사도 탐색 기법들을 사용한 빠른 '''근사''' {{수학 변수|k}}-NN 탐색을 수행하는 것이 유일하게 실행 가능한 방법일 수 있다.

== 결정 경계 ==
실제로 최근접 이웃 규칙은 잠재적으로 [[결정 경계]]를 계산한다. 결정 경계는 명시적이고 효율적으로 계산될 수 있고, 계산 복잡도가 경계 복잡도의 함수가 되도록 할 수 있다.<ref>{{저널 인용 |doi=10.1007/s00454-004-1152-0 |author=Bremner D, Demaine E, Erickson J, Iacono J, Langerman S, Morin P, Toussaint G |title=Output-sensitive algorithms for computing nearest-neighbor decision boundaries |journal=Discrete and Computational Geometry |volume=33 |issue=4 |year=2005 |pages=593–604}}</ref>

== 데이터 축소 ==
'''데이터 축소'''는 대량의 데이터 집합을 다룰 때 가장 중요한 문제 중 하나이다. 보통 정확한 분류를 위해선 데이터 점의 일부만 필요하다. 그 데이터를 ''프로토타입''이라 하고 다음과 같은 방법으로 찾을 수 있다:
# 어떤 주어진 k에 대해 {{수학 변수|k}}-NN이 부정확하게 분류시키고 있는 훈련 데이터인 ''항목 이상치''를 선택한다
# 남은 데이터를 두 종류의 집합으로 분리한다: (i) 분류 결정으로 사용할 프로토타입과 (ii) 프로토타입을 사용하는 {{수학 변수|k}}-NN이 정확하게 분류시킬 수 있는 ''흡수된 점들''. 그 후 훈련 데이터 집합에서 흡수된 점들은 제거할 수 있다.

=== 항목 이상치 선택 ===
다른 항목의 데이터로 둘러싸여 있는 훈련 데이터를 '''항목 이상치'''라 한다. 항목 이상치가 발견되는 이유는 다음과 같다:
* 무작위 오류
* 해당 항목의 충분하지 않은 훈련 데이터(군집 대신 고립된 데이터가 나타난다)
* 중요한 특징의 누락 (항목이 우리가 모르는 다른 차원으로 분리된다)
* 주어진 적은 항목에 대해 어려운 배경을 제공하는 너무 많은 다른 항목의 훈련 데이터(불균형 항목)

{{수학 변수|k}}-NN에서 항목 이상치는 잡음을 생성한다. 항목 이상치는 추후 분석 과정에서 발견되고 분리될 수 있다. 주어진 두 자연수 ''k>r>0''에 대해서 어떤 훈련 데이터의 {{수학 변수|k}} 최근접 이웃이 ''r''개 이상의 다른 항목을 포함하고 있으면, 그 훈련 데이터를 ''(k,r)''NN 항목 이상치라고 한다.

=== 데이터 축소를 위한 CNN ===

'''압축된 근접 이웃'''(CNN, ''[[Peter E. Hart|Hart]] 알고리즘'')은 {{수학 변수|k}}-NN 분류를 위해 데이터 집합을 축소하려는 목적으로 설계된 알고리즘이다.<ref>[[Peter E. Hart|P. E. Hart]], The Condensed Nearest Neighbor Rule. IEEE Transactions on Information Theory 18 (1968) 515–516. doi: 10.1109/TIT.1968.1054155</ref> 이 알고리즘은 훈련 데이터로부터 프로토타입의 집합 ''U''를 선택하고, 이를 통해 1NN이 모든 데이터 집합을 분류하는 것만큼 정확하게 ''U''와 1NN이 데이터들을 분류할 수 있다.

[[파일:BorderRAtio.PNG|섬네일|130px|오른쪽|경계율의 계산]]
[[파일:PointsTypes.png|섬네일|130px|오른쪽|세 종류의 점: 프로토타입, 항목 이상치, 흡수된 점]]
주어진 훈련 집합 ''X''에 CNN을 반복적으로 수행한다.
# ''X''의 모든 요소를 탐색하여, ''U''로부터 가장 가까운 프로토타입을 가지는 ''x''를 찾는다(''U''는 ''x''와 다른 분류명을 가진다).
# ''X''로부터 ''x''를 삭제하고 그것을 ''U''에 더한다.
# ''U''에 더 이상 프로토타입을 더할 수 없을 때까지 탐색을 반복한다.

분류하기 위해 ''X'' 대신에 ''U''를 사용한다. 프로토타입이 아닌 데이터들은 "흡수된" 점이라고 한다.

경계율을 줄이기 위해서는 학습 데이터들을 탐색하는 것이 효율적이다.<ref name = "MirkesKnn">E. M. Mirkes, [http://www.math.le.ac.uk/people/ag153/homepage/KNN/KNN3.html KNN and Potential Energy: applet.] {{웨이백|url=http://www.math.le.ac.uk/people/ag153/homepage/KNN/KNN3.html |date=20120119201715 }} University of Leicester, 2011.</ref> 학습 데이터 ''x''의 경계 비율은 아래와 같다.
: {{수학|1= ''a''(''x'') = {{!}}{{!}}'' x' '' - ''y'' {{!}}{{!}} / {{!}}{{!}} ''x'' - ''y'' {{!}}{{!}} }}
{{수학|{{!}}{{!}} ''x'' - ''y'' {{!}}{{!}} }}는 ''x''와 색이 다른 가장 가까운 데이터인 ''y''까지의 거리를 나타내고, {{수학|{{!}}{{!}}'' x' '' - ''y'' {{!}}{{!}} }}는 ''y''와 가장 가까운 데이터인 ''x' ''까지의 거리를 나타낸다(''x' ''는 ''x''와 같은 분류명을 가진다).

경계율은 [0,1] 구간 내의 값인데, 왜냐하면 {{수학|{{!}}{{!}}'' x' '' - ''y'' {{!}}{{!}} }}는 {{수학|{{!}}{{!}} ''x'' - ''y'' {{!}}{{!}} }}를 절대 초과하지 않기 때문이다. 이 순서는 프로토타입의 집합인 ''U''로의 포함을 위한 우선권을 항목들의 경계에 준다. ''x''와 다른 분류명을 가지는 점은 ''x'' 외부에 있다고 한다. 경계율의 계산은 오른쪽에 도식으로 나타나 있다. 점 데이터들은 색으로 분류명이 붙여졌는데, 초기의 점은 ''x''이고 분류명은 빨간색이다. 외부의 점들은 파란색과 초록색이다. ''x''의 외부 점들 중 가장 가까운 점은 ''y''이다. ''y''에 가장 가까운 빨간 점은 ''x' ''이다. 경계율 {{수학|1= ''a''(''x'') = {{!}}{{!}}'' x' '' - ''y'' {{!}}{{!}} / {{!}}{{!}} ''x'' - ''y'' {{!}}{{!}} }}은 초기의 점 ''x''의 속성이다.

아래 도식은 CNN의 과정을 보여준다. 3개의 항목(빨강, 초록, 파랑)이 있다. 그림 1: 초기에, 각 항목별로 60개의 점이 존재한다. 그림 2: 1NN 분류 지도를 보여주는데, 각각의 픽셀은 모든 데이터를 사용하여 1NN에 의해 분류된다. 그림 3: 5NN 분류 지도를 보여준다. 하얀 구역은 5NN 투표에서 결과가 동률이 나와 분류되지 않은 지역에 대응된다(예를 들어, 5개의 최근접 이웃들 중 2개의 초록, 2개의 빨강과 1개의 파란 점이 있는 경우). 그림 4: 축소된 데이터 집합을 보여준다. X 표시는 (3,2)NN 규칙에 의해 선택된 항목 이상치들을 나타낸다(이 인스턴스들의 모든 세 최근접 이웃들이 다른 항목에 속한다). 사각형은 프로토타입을 나타내며, 빈 원은 흡수된 점을 나타낸다. 좌하측 모서리는 항목 이상치, 프로토타입, 흡수된 점들의 개수를 나타낸다. 이 예시에서는 프로토타입의 수가 항목에 따라 15%에서 20%까지로 다양하다. 그림 5: 프로토타입에 기초한 1NN 분류 지도를 나타낸 것인데, 초기 데이터 집합에 기반한 1NN 분류 지도와 매우 비슷함을 알 수 있다. 이 그림들은 Mirkes 애플릿을 사용하여 만들었다.<ref name = "MirkesKnn"/>

<gallery caption="k-NN 분류기(classfier)를 위한 CNN 모델" widths="200px">
파일:Data3classes.png|그림 1. 데이터 집합.
파일:Map1NN.png|그림 2. 1NN 분류 지도.
파일:Map5NN.png|그림 3. 5NN 분류 지도.
파일:ReducedDataSet.png|그림 4. CNN을 통해 축소된 데이터셋.
파일:Map1NNReducedDataSet.png|그림 5. CNN을 통해 추출한 프로토타입에 기반한 1NN 분류 지도.
</gallery>

== {{수학 변수|k}}-NN 회귀 ==
'''{{수학 변수|k}}-NN 회귀'''에서, {{수학 변수|k}}-NN 알고리즘은 연속 변수를 예측하기 위해서 사용된다. 하나의 알고리즘은 {{수학 변수|k}}개의 최근접 이웃들의 거리의 역수를 가중치로 한 가중 평균을 사용한다. 이 알고리즘은 다음과 같이 동작한다.

# 질의 데이터로부터 분류된 데이터까지의 [[유클리드 거리]] 혹은 [[마할라노비스 거리]]를 계산한다.
# 분류명이 붙은 데이터를 거리가 증가하는 순으로 정렬한다.
# [[평균 제곱근 편차]]에 기반한 최근접 이웃들의 발견적인 최적 수를 찾는다. 이것은 교차 검증을 통해 이뤄진다.
# {{수학 변수|k}}-최근접 다변량 이웃들에서 거리의 역수를 가중치로 한 가중 평균을 계산한다.

== 결과의 타당성 검증 ==
[[혼동 행렬]] 또는 [[일치 행렬]]은 {{수학 변수|k}}-NN 분류의 정확성을 검증하기 위한 도구로 자주 사용된다. [[우도비 검정]] 같은 더 강한 통계적 방법을 적용할 수도 있다.

== 같이 보기 ==
* [[인스턴스 기반 학습]]
* [[최근접 이웃 탐색]]
* [[통계적 분류]]
* [[클러스터 분석]]
* [[데이터 마이닝]]
* [[최근접 무게중심 분류기]]
* [[패턴 인식]]
* [[차원의 저주]]
* [[차원 축소]]
* [[주성분 분석]]
* [[지역 민감 해싱]]
* [[최소 해싱]]
* [[클러스터 가설]]
* [[최근접 점들의 쌍 문제]]

== 각주 ==
{{각주|2}}

== 외부 링크 ==
* [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.31.1422 When Is "Nearest Neighbor" Meaningful?]
* {{서적 인용 |editor=[[Belur V. Dasarathy]] |year=1991 |title=Nearest Neighbor (NN) Norms: NN Pattern Classification Techniques |isbn=0-8186-8930-7}}
* {{서적 인용 |title=Nearest-Neighbor Methods in Learning and Vision |editor=Shakhnarovish, Darrell, and Indyk |publisher=[[MIT Press]] |year=2005 |isbn=0-262-19547-X}}
* {{저널 인용 |doi=10.1016/j.foreco.2004.02.049 |author=Mäkelä H Pekkarinen A |title=Estimation of forest stand volumes by Landsat TM imagery and stand-level field-inventory data |journal=[[Forest Ecology and Management]] |volume=196 |issue=2–3 |date=2004-07-26 |pages=245–255}}
* Fast k nearest neighbor search using [[GPU]]. In Proceedings of the CVPR Workshop on Computer Vision on GPU, Anchorage, Alaska, USA, June 2008. V. Garcia and E. Debreuve and M. Barlaud.
* [http://www.scholarpedia.org/article/K-nearest_neighbor Scholarpedia article on {{수학 변수|k}}-NN]
* [https://code.google.com/p/google-all-pairs-similarity-search/ google-all-pairs-similarity-search]

[[분류:분류 알고리즘]]
[[분류:검색 알고리즘]]
[[분류:기계 학습 알고리즘]]
[[분류:통계적 분류]]