Skip to content

기계학습 k-최근접 이웃 알고리즘 #
Find similar titles

k-최근접 이웃 알고리즘 (줄여서 k-NN) 은 가장 쉬운 기계학습 알고리즘 중 하나입니다. 분류 문제에 사용하는 알고리즘으로서 새로운 데이터가 들어왔을 때 기존 데이터의 그룹 붕 어떤그룹에 속하는지를 분류하는 문제에 사용합니다.

Image

k-NN은 새로 들ㅇ"★은 ■ 그룹의 데이터와 가장 가까우니 ★은 ■ 그룹이다." 라고 분류하는 알고리즘입니다.

여기서 k의 역할은 몇 번째로 가까운 데이터까지 살펴볼 것인가를 정한 숫자입니다.

k-NN의 원리 #

더 구체적인 예를 들어보면, 아래와 같이 6개의 기존 데이터 A~F와 1개의 신규 데이터 N이 있다고 합시다.

Image

Image

k=1 #

만약에 k = 1 이라면, 거리가 1번째로 가까운 C만을 보고 신규 데이터를 분류합니다. 따라서 N은 C와 같은 그룹인 ●로 분류됩니다.

Image

k=3 #

만약에 k = 3 이라면, 거리가 3번째로 가까운 C, D, E까지 보고 신규 데이터를 분류합니다. 이때 그룹이 갈리면 다수결의 원칙에 따릅니다. 여기서는 1 : 2가 되어 N은 ▲로 분류됩니다.

Image

k=5 #

만약에 k = 5 라면, 거리가 5번째로 가까운 C, D, E, B, A까지 보고 신규 데이터를 분류합니다. 여기서는 3 : 2가 되어 N은 ●로 분류됩니다.

Image

결론 #

이처럼 같은 데이터임에도 k가 얼마냐에 따라 N이 ●로 분류되기도 하고 ▲로 분류되기도 합니다. 그만큼 적절한 k를 정해주는 게 중요합니다.

거리척도의 단위문제: 표준화 #

정하기 전에 표준화가 선행되어야 합니다.

k-NN에서 가깝다는 개념은 유클리드 거리(Euclidean Distance)로 정의하는데, 유클리드 거리를 계산할 때는 단위가 매우 중요합니다.

일단 유클리드의 거리는 아래와 같이 계산합니다.

Image

예를 들어 앞에서 다뤘던 데이터에서 y좌표의 단위가 달러($)였다고 가정합시다.

Image

이때 A-N 간의 유클리드 거리는 3.162 이고 B-N 간의 유클리드 거리는 2.828 로, B가 더 가깝습니다.

그런데 만약에 y좌표의 단위가 원(₩)으로 바뀌었다고 가정합시다. 1달러 = 1,000원이라고 한다면 그래프가 아래처럼 바뀔 것입니다.

Image

이때 A-N 간의 유클리드 거리는 1000.004 이고 B-N 간의 유클리드 거리는 2000.001 로, A가 더 가깝습니다.

이렇게 변수별 단위가 무엇이냐에 따라 거리가 달라지고, 가까운 순서도 달라집니다.

순서가 달라지면 k-NN에서의 분류 결과도 달라진다는 뜻이다. 그래서 반드시 k-NN 알고리즘을 적용할 때에는 데이터에 표준화를 해주어야 합니다.

Reference #

Suggested Pages #

0.0.1_20140628_0