2단원: 데이터 전처리의 기술

훌륭한 요리사가 신선하고 깨끗한 재료를 준비하듯, 최고의 머신러닝 모델을 만들기 위해서는 데이터를 꼼꼼하게 손질해야 합니다. 이 단원에서는 원석과 같은 데이터를 보석으로 가공하는 데이터 전처리 과정을 학습합니다.

데이터 전처리의 중요성

데이터 전처리(Data Preprocessing)는 모델의 성능에 결정적인 영향을 미치는, 머신러닝 프로젝트의 가장 중요한 단계 중 하나입니다. 'Garbage In, Garbage Out' 원칙처럼, 아무리 뛰어난 알고리즘도 제대로 손질되지 않은 데이터로는 좋은 성능을 낼 수 없습니다.

데이터 전처리의 주요 목표

  • 데이터 품질 향상: 분석을 방해하는 잘못된 값이나 비어있는 값을 처리하여 데이터의 무결성을 확보합니다.
  • 데이터 손실 최소화: 누락된 데이터를 무작정 삭제하기보다, 합리적인 방법으로 채워 넣어 분석에 최대한 활용합니다.
  • 알고리즘 최적화: 특징(feature) 간의 단위 차이로 인한 왜곡을 방지하여, 알고리즘이 데이터의 진짜 패턴을 학습하도록 돕습니다.

결측치 처리: 비어있는 값과의 싸움

실제 데이터에는 값이 누락된 경우, 즉 결측치(Missing Value)가 흔하게 존재합니다. 이를 그대로 두면 컴퓨터가 계산을 할 수 없으므로 반드시 처리해야 합니다.

1. 결측치 확인하기

가장 먼저 데이터에 결측치가 얼마나 있는지 확인해야 합니다. 펭귄 데이터 탐색 시 우리는 penguins.info()penguins.isna().sum() 명령어를 사용했습니다. 이를 통해 '부리 길이', '몸무게', '성별' 등 여러 특징에 결측치가 존재함을 파악했습니다.

2. 결측치 채우기 (fillna)

결측치를 처리하는 가장 일반적인 방법은 다른 값으로 채워 넣는 것입니다.

3. 결측치 삭제 (dropna)

경우에 따라 결측치가 포함된 행 전체를 삭제하는 방법을 사용하기도 합니다. 펭귄 데이터의 '성별' 특징에 남은 결측치는 dropna()를 통해 해당 행을 제거했습니다. 하지만 이 방법은 귀중한 데이터를 잃을 수 있으므로 신중하게 사용해야 합니다.

이상치 및 오류 데이터 처리

결측치 외에도 분석을 방해하는 데이터가 있습니다. 'sex' 특징에 'MALE', 'FEMALE' 외에 '.' 이라는 이상한 값이 섞여 있던 것을 기억할 것입니다. 이러한 데이터는 이상치(Outlier) 또는 오류 데이터로, 모델 학습에 혼란을 줄 수 있으므로 제거해야 합니다. 우리는 penguins.drop(336, inplace=True) 명령어로 해당 행을 삭제하여 데이터의 무결성을 확보했습니다.

데이터 스케일링: 가장 중요한 마법

데이터 전처리 과정에서 가장 중요하고 강력한 '마법' 중 하나는 스케일링(Scaling)입니다. 특히 k-NN처럼 데이터 간의 '거리'를 기반으로 작동하는 알고리즘에서는 스케일링이 모델 성능을 극적으로 변화시킵니다.

왜 스케일링이 필수적인가?

펭귄 데이터의 '몸무게'(수천 g)와 '부리 길이'(수십 mm)처럼 특징 간에 단위와 숫자 범위가 크게 다를 경우, 컴퓨터는 숫자 크기가 훨씬 큰 '몸무게'가 더 중요한 정보라고 착각하게 됩니다. 이는 실제 중요도와 상관없이 모델의 판단에 과도한 영향을 미쳐 거리 계산을 왜곡시킵니다.

정규화 (Normalization)와 MinMaxScaler

이러한 불공평한 상황을 막기 위해, 모든 특징들의 단위를 공평하게 맞춰주는 정규화(Normalization) 작업을 수행합니다. MinMaxScaler는 모든 숫자 특징의 값을 0과 1 사이의 범위로 변환하는 대표적인 정규화 도구입니다. 이 과정을 통해 모든 특징들이 동등한 중요성을 가지고 모델 학습에 기여할 수 있게 됩니다.

스케일링의 극적인 효과

스케일링은 모델 성능에 극적인 변화를 가져왔습니다. 스케일링 전 펭귄 분류 모델의 정확도는 76%에 불과했지만, MinMaxScaler 적용 후 정확도는 무려 98%로 수직 상승했습니다. 이는 알고리즘의 성능을 최적화하는 데 데이터 전처리가 얼마나 결정적인 역할을 하는지 명확히 보여주는 사례입니다.