머신러닝을 한 단계 더 이해하기

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

교차검증, 하이퍼파라미터 튜닝 그리고 비지도학습

머신러닝을 처음 공부할 때는 데이터를 나누고, 모델을 만들고, 정확도를 확인하는 과정 자체만으로도 충분히 새롭고 어렵게 느껴진다. 그런데 몇 번 반복하다 보면 비슷한 고민이 생기기 시작한다. "이 모델이 진짜 잘 만든 모델일까?", "이 결과를 그대로 믿어도 될까?" 같은 질문이다.

 

나 역시 간단한 모델을 만들어보고 정확도를 확인했을 때는 결과가 꽤 괜찮게 나와서 만족했던 적이 있다. 그런데 데이터를 나누는 방식을 조금 바꾸거나, 같은 모델을 다시 돌려보면 결과가 미묘하게 달라지는 것을 보게 된다. 이때부터 "모델을 한 번만 평가하는 것이 과연 충분한가"라는 의문을 가지게 된다.

 

이런 고민에서 등장하는 개념이 바로 교차검증(cross-validation)이다.

 

기존에는 데이터를 한 번 훈련 데이터와 테스트 데이터로 나누고 평가를 진행했다. 하지만 이렇게 한 번만 나누는 방식은 우연에 영향을 받을 수 있다. 어떤 데이터가 훈련에 들어가고 어떤 데이터가 테스트에 들어가느냐에 따라 결과가 달라질 수 있기 때문이다.

 

교차검증은 이 문제를 해결하기 위한 방법이다. 데이터를 여러 번 나누어가며 모델을 반복적으로 평가하는 방식이다. 가장 대표적인 방법은 데이터를 여러 개의 조각으로 나눈 뒤, 한 조각씩 번갈아가며 테스트 데이터로 사용하는 방식이다. 이렇게 하면 특정 분할에 의존하지 않고, 보다 안정적인 성능을 확인할 수 있다.

 

처음에는 이 과정이 번거롭게 느껴지기도 하겠지만, 생각해보면 훨씬 신뢰할 수 있는 평가 방법이라고 생각된다. 한 번의 결과보다 여러 번의 평균적인 결과를 보는 것이 더 합리적이기 때문이다.

 

교차 검증을 이해하면서 자연스럽게 이어지는 개념이 하이퍼파라미터 튜닝이다.

 

머신러닝 모델에는 두 가지 종류의 값이 있다. 하나는 데이터를 통해 학습되는 값이고, 다른 하나는 사람이 직접 설정해줘야 하는 값이다. 예를 들어 K-NN에서 K 값, 결정트리의 깊이, 리지 회귀의 규제 강도 같은 것들이 여기에 해당한다. 이런 값들을 하이퍼파라미터라고 부른다.

 

처음에는 이 값들을 대충 정해서 모델을 돌렸는데, 값을 조금만 바꿔도 결과가 달라지는 것을 보면서 중요성을 느끼게 되었다. 결국 모델 성능은 알고리즘 선택뿐만 아니라, 이 파라미터를 어떻게 설정하느냐에도 크게 영향을 받는다는 것이다.

 

그래서 등장하는 방법이 여러 가지 값을 시도해보는 방식이다. 대표적으로는 여러 값을 조합해보는 방식으로 최적의 값을 찾는 접근이 있다. 이 과정은 단순히 반복 작업처럼 보일 수 있지만, 모델을 이해하는 데 도움이 된다. 어떤 파라미터가 모델에 어떤 영향을 주는지를 직접 확인할 수 있기 때문이다.

 

이쯤 되면 머신러닝의 흐름이 어느 정도 잡힌다. 데이터를 준비하고, 전처리하고, 모델을 선택하고, 성능을 평가하고, 파라미터를 조정하는 과정이 하나의 사이클처럼 연결된다. 그런데 여기까지는 모두 공통된 특징이 하나 있다. 바로 정답이 있는 데이터를 사용한다는 점이다. 

 

이제 여기서 한 걸음 더 나아가면, 정답이 없는 데이터는 어떻게 다룰 수 있을까라는 질문이 생긴다. 이 질문에서 출발하는 것이 비지도학습(unsupervised learning)이다.

 

비지도학습은 말 그대로 정답 없이 데이터를 분석하는 방식이다. 입력 데이터만 있고, 우리가 맞춰야 할 정답이 따로 주어지지 않는다. 대신 데이터 안에 숨어 있는 구조나 패턴을 찾아내는 것이 목적이다.

 

대표적인 예가 군집화(clustering)이다. 군집화는 비슷한 데이터끼리 묶는 작업이다. 예를 들어 고객 데이터를 기반으로 비슷한 소비 패턴을 가진 그룹을 나누는 것이다. 이때 많이 사용하는 알고리즘이 K-means이다. 이 알고리즘은 데이터를 여러 개의 중심점 기준으로 나누어 군집을 형성한다.

 

처음 이 개념을 접했을 때는 "정답이 없는데 어떻게 학습을 하지?"라는 생각이 들었다. 하지만 관점을 바꿔보면, 비지도학습은 "예측"보다는 "구조를 이해하는 것"에 가깝다. 즉, 결과를 맞추는 것이 아니라 데이터를 해석하는 과정이다.

 

또 다른 중요한 개념은 차원 축소이다. 데이터가 너무 많은 변수로 이루어져 있을 때, 이를 더 적은 차원으로 줄이는 방법이다. 대표적으로 PCA 같은 기법이 있다. 차원을 줄이면 데이터를 시각화하기 쉬워지고, 모델의 성능이 좋아지는 경우도 있다.

 

여기까지 오면서 느낀 점은 머신러닝이 단순히 모델을 돌리는 기술이 아니라는 것이다. 데이터를 이해하고, 적절한 방법을 선택하고, 결과를 해석하는 전체 과정이 모두 포함되어 있다. 

 

이 글을 작성하면서 머신러닝의 전체 흐름을 정리해볼 수 있었고, 앞으로는 개별 개념과 알고리즘을 더 깊이 있게 공부하면서 이 구조 위에 쌓아나가고자 한다.

 

 

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

[ML] 상품명 기반 군집화: TF-IDF와 KMeans로 제품 카테고리 자동 분류하기  (1) 2026.04.07
[ML] 스마트폰 센서 데이터로 사용자 행동 분류하기: HAR 다중분류 실습  (0) 2026.04.05
머신러닝 성능을 바꾸는 핵심 요소  (0) 2026.03.29
지도학습 핵심 개념과 대표 알고리즘  (0) 2026.03.29
머신러닝의 기본 흐름 이해하기: 데이터부터 첫 모델까지  (0) 2026.03.29
'ML & DL' 카테고리의 다른 글
  • [ML] 상품명 기반 군집화: TF-IDF와 KMeans로 제품 카테고리 자동 분류하기
  • [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
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
J. Son
머신러닝을 한 단계 더 이해하기
상단으로

티스토리툴바