지도학습 핵심 개념과 대표 알고리즘

2026. 3. 29. 13:52·ML & DL

분류와 회귀부터 과대적합까지 한 번에 이해하기

머신러닝을 처음 배우면 다양한 알고리즘 이름이 쏟아진다. K-NN, 선형회귀, 로지스틱 회귀, SVM, 결정트리 등 익숙하지 않은 용어들이 이어지면서 무엇부터 이해해야할지 막막해지기 쉽다. 하지만 이 많은 알고리즘들은 사실 몇 가지 공통된 개념 위에서 움직인다. 그 핵심이 바로 지도학습(Supervised Learning)이다.

 

지도학습은 말 그대로 정답이 있는 데이터를 가지고 학습하는 방식이다. 데이터 안에 입력값과 함께 정답이 같이 들어 있고, 모델은 이 둘 사이의 관계를 학습한다. 예를 들어 고객 정보가 있고 그 고객이 이탈했는지 여부가 함께 기록되어 있다면, 모델은 "어떤 조건일 때 이탈하는가"라는 패턴을 배우게 된다. 이후 새로운 고객 데이터가 들어오면 그 고객이 이탈할지 예측할 수 있게 된다.

 

이 과정에서 중요한 것은 모델이 단순히 데이터를 외우는 것이 아니라, 보지 못한 새로운 데이터에도 적용 가능한 규칙을 학습해야 한다는 점이다. 이 능력을 흔히 일반화(generalization)라고 부른다. 머신러닝에서 좋은 모델이란 훈련 데이터에서 잘 맞는 모델이 아니라, 새로운 데이터에서도 잘 맞는 모델이다.

 

지도학습 문제는 크게 두 가지로 나뉜다. 하나는 분류(classification)이고, 다른 하나는 회귀(regression)이다. 분류는 결과가 특정 범주로 나뉘는 경우이다. 예를 들어 "이메일이 스팸인지 아닌지", "고객이 이탈하는지 아닌지" 같은 문제는 분류에 해당한다. 반면 회귀는 결과가 연속적인 숫자로 나타나는 경우이다. 집값, 매출, 온도처럼 수치 자체를 예측하는 문제는 회귀 문제로 본다. 이 구분은 단순한 용어 차이가 아니라, 어떤 모델을 선택하고 어떤 방식으로 평가할지를 결정하는 기준이 된다.

 

머신러닝을 공부하다보면 또 하나 중요한 개념을 반드시 만나게 된다. 바로 과대적합(overfitting)과 과소적합(underfitting)이다. 과대적합은 모델이 훈련 데이터에 지나치게 맞춰져서, 새로운 데이터에서는 성능이 떨어지는 상태를 말한다. 쉽게 말하면 데이터를 "외워버린" 상태이다. 반대로 과소적합은 모델이 너무 단순해서 데이터의 패턴을 제대로 학습하지 못한 상태이다. 이 경우는 훈련 데이터에서도 성능이 좋지 않다.

 

두 개념은 결국 모델의 복잡도와 연결된다. 모델이 너무 복잡하면 과대적합이 발생하고, 너무 단순하면 과소적합이 발생한다. 따라서 머신러닝에서는 항상 이 둘 사이에서 균형을 찾는 것이 중요하다. 이 균형은 보통 모델의 복잡도와 관련이 있다. 모델이 복잡할수록 더 많은 패턴을 표현할 수 있지만, 동시에 과대적합의 위험도 커진다. 반대로 모델이 단순할수록 과소적합이 발생하기 쉽다. 여기에 데이터의 양도 영향을 준다. 데이터가 충분히 많다면 복잡한 모델도 안정적으로 학습할 수 있지만, 데이터가 적다면 단순한 모델이 오히려 더 나은 결과를 낼 수 있다. 즉, 모델 선택은 단순히 "좋은 알고리즘"을 고르는 것이 아니라, 데이터 상황에 맞는 복잡도를 선택하는 과정이다. 

 

이제 대표적인 지도학습 알고리즘들을 살펴보자. 먼저 가장 직관적인 모델인 k-최근접 이웃(K-NN)이다. 이 모델은 새로운 데이터가 들어왔을 때 기존 데이터 중에서 가장 가까운 K개의 이웃을 찾아 그들의 정보를 바탕으로 결과를 결정한다. 분류 문제에서는 다수결로, 회귀 문제에서는 평균값으로 결과를 정한다. 구조가 단순하고 이해하기 쉬운 장점이 있지만, 데이터가 많아질수록 계산량이 증가한다는 특징이 있다.

 

다음으로는 선형 모델(linear model)이다. 선형 모델은 입력 변수들의 선형 결합으로 결과를 예측하는 방식이다. 가장 대표적인 예가 선형회귀(regression)이다. 선형회귀는 실제 값과 예측 값 사이의 차이를 최소화하는 직선을 찾는 방법으로, 흔히 최소제곱법을 사용한다. 구조가 단순하고 해석이 쉬운 장점이 있어 기본 모델로 자주 사용된다.

 

하지만 선형회귀는 데이터에 과하게 맞춰질 수 있다. 이를 방지하기 위해 등장한 개념이 규제(regularization)이다. 규제를 적용한 대표적인 모델이 리지 회귀(Ridge)와 라소(Lasso)이다. 리지는 계수의 크기를 줄여 모델을 안정적으로 만들고, 라소는 일부 계수를 0으로 만들어 변수 선택 효과까지 가져온다. 즉, 단순히 예측 을 하는 것을 넘어 모델을 일반화되도록 만드는 방법이다.

 

분류 문제에서 선형 모델을 사용할 때는 로지스틱 회귀(logistic regression)가 대표적이다. 이름은 회귀이지만 실제로는 분류 모델이다. 이 모델은 데이터를 두 그룹으로 나누는 결정경계(dicision boundary)를 만든다. 여기에 더해 서포트 벡터 머신(SVM) 같은 모델은 결정경계를 최대한 넓게 만드는 방향으로 학습하여 보다 안정적인 분류를 수행한다.

 

여러 클래스를 다루는 문제에서는 다중 클래스 분류 기법이 사용된다. 이는 하나의 모델로 여러 클래스를 동시에 예측하거나, 여러 개의 이진 분류기를 조합하는 방식으로 구현된다. 초심자 단계에서는 "두 개 이상의 범주도 분류할 수 있다" 정도로 이해하면 충분하다고 한다.

 

확률적인 접근을 사용하는 모델로는 나이브 베이즈(Naive Bayes)가 있다. 이 모델은 각 특성이 서로 독립이라고 가정하고 확률을 계산한다. 실제로는 완전히 독립적이지 않더라도, 간단하고 빠르게 동작하는 장점 때문에 텍스트 분류 같은 분야에서 자주 사용된다.

 

또 다른 중요한 모델은 결정 트리(Decision Tree)이다. 결정 트리는 데이터를 질문 형태로 나누어가며 분류하는 구조를 가진다. 예를 들어 "나이가 30 이상인가?", "소득이 일정 수준 이상인가?" 같은 기준으로 데이터를 계속 분할해 나간다. 직관적으로 이해하기 쉽고 시각화가 가능하다는 장점이 있지만, 하나의 트리만 사용할 경우 과대적합이 발생하기 쉽다.

 

이 문제를 해결하기 위해 여러 개의 트리를 결합한 방식이 등장했는데, 이를 앙상블(ensemble)이라고 한다. 대표적으로 랜덤 포레스트(Random Forest)는 여러 개의 결정 트리를 만들어 결과를 평균내거나 다수결로 결합하는 방식이다. 또 다른 방법인 그래디언트 부스팅(Gradient Boosting)은 이전 모델이 틀린 부분을 점점 보완해가며 성능을 높이는 방식이다. 이런 앙상블 모델은 단일 모델보다 더 안정적이고 높은 성능을 내는 경우가 많다.

 

여기까지 살펴보면 다양한 알고리즘이 등장하지만, 결국 모두 같은 흐름 안에 있다는 것을 알 수 있다. 입력 데이터를 기반으로 어떤 규칙을 학습하고, 그 규칙을 이용해 새로운 데이터를 예측하는 구조이다. 알고리즘마다 접근 방식과 표현력이 다를 뿐, 기본적인 목적은 동일하다.

 

중요한 것은 특정 알고리즘을 많이 아는 것이 아니라, 각 모델이 어떤 특징을 가지고 있고 어떤 상황에서 적합한지 이해하는 것이다. 어떤 모델은 단순하고 해석이 쉬운 대신 표현력이 제한적이고, 어떤 모델은 복잡하지만 높은 성능을 낼 수 있다. 결국 머신러닝은 이들 사이에서 적절한 균형을 찾는 과정이라고 볼 수 있다.

 

 

'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' 카테고리의 다른 글
  • 머신러닝을 한 단계 더 이해하기
  • 머신러닝 성능을 바꾸는 핵심 요소
  • 머신러닝의 기본 흐름 이해하기: 데이터부터 첫 모델까지
  • 머신러닝을 시작할 때 먼저 알아야 할 것들
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
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
J. Son
지도학습 핵심 개념과 대표 알고리즘
상단으로

티스토리툴바