"친구를 보면 나를 안다."는 속담처럼, 가장 가까운 이웃을 보고 내 그룹을 결정하는 간단하고 강력한 분류 방법, k-NN 알고리즘의 세계를 탐험합니다. 단순함 속에 숨겨진 강력한 성능의 비밀을 파헤쳐 봅시다.
k-NN (k-최근접 이웃, k-Nearest Neighbors) 알고리즘은 이름은 생소할 수 있지만, 그 원리는 매우 간단하고 직관적입니다. 핵심 원리는 '나랑 가장 가까운 이웃들을 보니, 나도 그들과 같은 종류일 거야!' 입니다.
우리 반에 전학 온 '나새롬' 학생이 축구부인지, 미술부인지 전혀 모르는 상황을 상상해봅시다. 이때 새롬이 주변의 가장 가까운 친구 5명을 살펴보니, 3명이 축구부 유니폼을 입고 있고 2명이 미술부 앞치마를 입고 있습니다. 다수결에 따라 우리는 "아, 새롬이는 축구부일 가능성이 높겠구나!"라고 추측할 수 있습니다. 이것이 바로 k-NN의 원리입니다.
새로운 데이터가 들어왔을 때, k-NN 알고리즘은 그 데이터 주변에 있는 가장 가까운 'k'개의 이웃 데이터들을 찾습니다. 그리고 이 'k'개의 이웃들이 어떤 종류(클래스)에 속하는지 확인한 다음, 다수결 원칙에 따라 새로운 데이터의 소속 그룹을 결정합니다.
k-NN 알고리즘에서 'k'는 "몇 명의 이웃을 참고할 것인가?"를 정하는 숫자입니다. 이 'k'값은 모델의 성능에 매우 중요한 영향을 미치는 하이퍼파라미터(Hyperparameter)입니다.
Tip: 일반적으로 'k'값은 분류 시 동점 상황을 피하기 위해 홀수로 설정하는 것이 권장됩니다.
데이터 전처리 과정에서 k-NN 알고리즘에 가장 중요하고 강력한 '마법'은 바로 스케일링(Scaling)입니다. k-NN은 데이터 간의 '거리'를 기반으로 작동하기 때문에 스케일링이 필수적입니다.
펭귄 데이터의 '몸무게'(수천 g)와 '부리 길이'(수십 mm)처럼 특징 간에 단위와 숫자 범위가 크게 다를 경우, 컴퓨터는 숫자 크기가 훨씬 큰 '몸무게'가 더 중요한 정보라고 착각하게 됩니다. 이는 실제 중요도와 상관없이 모델의 판단에 과도한 영향을 미쳐 거리 계산을 왜곡시킵니다.
이러한 불공평한 상황을 막기 위해, 모든 특징들의 단위를 공평하게 맞춰주는 정규화(Normalization) 작업을 수행합니다. MinMaxScaler는 모든 숫자 특징의 값을 0과 1 사이의 범위로 변환하는 대표적인 정규화 도구입니다. 이 과정을 통해 모든 특징들이 동등한 중요성을 가지고 모델 학습에 기여할 수 있게 됩니다.
스케일링은 모델 성능에 극적인 변화를 가져왔습니다. 스케일링 전 펭귄 분류 모델의 정확도는 76%에 불과했지만, MinMaxScaler 적용 후 정확도는 무려 98%로 수직 상승했습니다. 이는 데이터 전처리, 특히 스케일링이 알고리즘의 성능을 최적화하는 데 얼마나 결정적인 역할을 하는지 명확히 보여주는 사례입니다.