머신러닝 성능을 바꾸는 핵심 요소

2026. 3. 29. 14:05·ML & DL

전처리, 스케일링, 특성공학과 성능 평가

머신러닝을 처음 공부할 때는 어떤 알고리즘을 사용하는지가 가장 중요해 보였다. k-NN, 선형회귀, 랜덤 포레스트 같은 모델 이름들이 계속 나오다보니, 어떤 모델을 선택하느냐가 성능을 결정한다고 생각하기 쉬웠다. 그런데 공부를 조금 진행해보니 생각보다 다른 부분에서 막히게 된다. 바로 데이터를 다루는 과정이다.

 

실제로 모델을 적용해보면, 데이터가 깔끔하게 정리되어 있는 경우는 거의 없다. 값이 비어 있기도 하고, 숫자가 아닌 문자열이 섞여 있기도 하고, 변수마다 값의 크기가 크게 다른 경우도 많다. 이런 상태에서는 모델을 제대로 적용하기 어렵다. 그래서 머신러닝에서는 모델 이전 단계인 데이터 전처리 과정이 중요하다는 말을 많이 듣게 된다. 

 

가장 먼저 마주하게 되는 문제는 결측치이다. 데이터에는 종종 값이 빠져 있는 경우가 있다. 처음에는 이런 데이터를 그냥 두고 모델을 돌리려고 했는데, 오류가 나거나 결과가 이상하게 나오는 경우가 있었다. 그래서 결측치를 어떻게 처리할지 결정하는 과정이 필요하다는 것을 알게 되었다.

 

방법은 여러 가지가 있다. 결측치가 있는 행을 아예 제거할 수도 있고, 평균값이나 중앙값으로 채울 수도 있다. 경우에 따라서는 결측 여부 자체를 하나의 정보로 활용하기도 한단다. 중요한 것은 "이게 정답이다"라는 방식이 있는 것이 아니라, 데이터 상황에 맞게 선택해야 한다는 점이다.

 

그 다음으로 헷갈렸던 부분은 범주형 변수 처리이다. 예를 들어 "서울", "부산", "대전" 같은 값들은 사람이 보기에는 이해가 쉽지만, 모델은 이런 문자열을 그대로 이해하지 못한다. 그래서 숫자로 바꿔줘야 한다는 개념을 처음 접하게 된다.

 

이때 사용하는 방법이 원-핫 인코딩이다. 하나의 값을 여러개의 0과 1로 나누어 표현하는 방식이다. 처음에는 왜 이렇게까지 해야 하는지 잘 이해가 되지 않았는데, 모델 입장에서는 각 범주를 독립적인 값으로 보는 것이 중요하다는 것을 알게 되었다.

 

또 하나 인상적이었던 부분은 스케일링이다. 변수마다 값의 크기가 다르면 모델이 특정 변수에 더 크게 영향을 받는다는 점이다. 예를 들어 어떤 변수는 1~10 사이인데, 다른 변수는 1,000~100,000이라면, 자연스럽게 큰 값을 가진 변수 쪽으로 모델이 치우치게 된다.

 

특히 K-NN처럼 거리 기반으로 계산하는 모델에서는 이 영향이 매우 크게 나타난다. 그래서 값을 일정한 기준으로 맞추는 과정이 필요하다는 것을 이해하게 되었다. 대표적인 방법으로는 평균을 기준으로 맞추는 표준화나 0~1 사이로 줄이는 정규화가 있다. 이 개념은 단순해 보이지만 실제로 결과에 영향을 주는 부분이라 인상 깊었다.

 

이 과정을 공부하면서 새로 알게 된 개념이 특성공학이다. 처음에는 주어진 데이터를 그대로 사용하는 것만 생각했는데, 데이터를 조금 더 의미 있게 바꾸는 것이 중요하다는 것을 알게 되었다.

 

예를 들어 날짜 데이터가 있으면 그냥 날짜로 두는 것이 아니라, "월", "요일", "주말 여부" 같은 변수로 나누어 사용할 수 있다. 고객 데이터라면 단순한 정보 외에도 "최근 구매 시점" 같은 변수를 추가할 수도 있다. 이런 과정이 모델 성능에 영향을 줄 수 있다는 점이 흥미로웠다.

 

머신러닝을 공부하면서 또 하나 헷갈렸던 부분은 모델 평가이다. 처음에는 단순히 정확도 하나만 보면 되는 줄 알았다. 예를 들어 90% 정확도라는 결과를 보면 좋은 모델이라고 생각했었다.

 

그런데 데이터를 조금 더 살펴보니, 정확도만으로는 부족하다는 것을 알게 되었다. 예를 들어 대부분이 "정상"이고 일부만 "이상"인 데이터에서는, 모델이 모든 데이터를 "정상"이라고 예측해도 높은 정확도가 나올 수 있다. 이런 경우에는 실제로 중요한 부분을 전혀 맞추지 못한 것이다.

 

그래서 등장하는 개념이 정밀도와 재현율이다. 정밀도는 모델이 맞다고 판단한 것 중 실제로 맞은 비율이고, 재현율은 실제로 맞는 것 중 모델이 얼마나 잘 찾아냈는지를 의미한다. 청므에는 이 두 개념이 헷갈렸지만, "얼마나 정확하게 맞췄는가"와 "얼마나 놓치지 않았는가"로 나누어 생각하니 이해가 조금 쉬워졌다.

 

이 둘을 함께 고려한 지표가 F1-score이다. 또한 혼동행렬을 보면 모델이 어떤 부분에서 맞추고 어떤 부분에서 틀렸는지 구조적으로 확인할 수 있다. 단순한 숫자 하나보다 훨씬 많은 정보를 얻을 수 있다는 점이 인상적이었다.

 

회귀 문제에서는 또 다른 방식으로 평가를 하게 된다. 예측값과 실제값 사이의 차이를 기준으로 평가하는데, MAE나 MSE 같은 지표를 사용한다. 이 부분도 처음에는 복잡하게 느껴졌지만, 결국 "얼마나 틀렸는지를 측정하는 방법"이라고 이해하면 된다.

 

여기까지 공부해보니, 머신러닝에서 중요한 것은 단순히 모델을 고르는 것이 아니라는 생각이 들었다. 오히려 데이터를 어떻게 정리하고, 어떤 방식으로 변환하고, 어떤 기준으로 평가할지를 고민하는 과정이 훨씬 더 중요하게 느껴졌다.

 

 

'ML & DL' 카테고리의 다른 글

[ML] 스마트폰 센서 데이터로 사용자 행동 분류하기: HAR 다중분류 실습  (0) 2026.04.05
머신러닝을 한 단계 더 이해하기  (0) 2026.03.29
지도학습 핵심 개념과 대표 알고리즘  (0) 2026.03.29
머신러닝의 기본 흐름 이해하기: 데이터부터 첫 모델까지  (0) 2026.03.29
머신러닝을 시작할 때 먼저 알아야 할 것들  (0) 2026.03.29
'ML & DL' 카테고리의 다른 글
  • [ML] 스마트폰 센서 데이터로 사용자 행동 분류하기: HAR 다중분류 실습
  • 머신러닝을 한 단계 더 이해하기
  • 지도학습 핵심 개념과 대표 알고리즘
  • 머신러닝의 기본 흐름 이해하기: 데이터부터 첫 모델까지
J. Son
J. Son
Petit à petit l'oiseau fait son nid.
  • J. Son
    Steady Study Log
    J. Son
  • 전체
    오늘
    어제
    • 분류 전체보기 (170) N
      • Python & SQL (63)
        • Python Basics (21)
        • Python Problems (23)
        • Python Practice (11)
        • MySQL (1)
        • Git & GitHub (7)
      • ML & DL (7) N
      • Projects (5)
        • Project Portfolio (5)
      • AI Camp (4)
        • Camp Reflection (4)
      • Concept Notes (6)
        • Statistics & Stata (4)
        • Mathematics (2)
      • Archive (84)
        • Java (24)
        • R (1)
        • Languages (49)
        • Miscellaneous (10)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

    • GitHub
    • WikiDocs
  • 공지사항

  • 인기 글

  • 태그

    점프투파이썬 연습문제
    Le Petit Prince
    초보자를 위한 파이썬 300제
    맥 git
    MySQL
    파이썬
    점프투파이썬 연습문제 풀이
    machine learning
    python streamlit
    GIT
    파이썬 문제
    불어 관계대명사
    불어 공부
    파이썬 streamlit
    share.streamlit.io
    머신러닝
    파이썬 크롤링
    Stata
    Python
    프랑스어 공부
    객체
    python problem
    복합과거
    어린왕자 프랑스어
    어린왕자 불어
    Github
    streamlit
    자바
    프로젝트 오일러
    passe compose
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
J. Son
머신러닝 성능을 바꾸는 핵심 요소
상단으로

티스토리툴바