Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

1 머신러닝 소개

Updated: 22 aug 2026

컴퓨터에 많은 데이터를 저장한다고 해서 컴퓨터가 그 내용을 스스로 이해하는 것은 아니다.

머신러닝은 데이터에서 변수 사이의 관계나 데이터의 구조를 학습하고, 이를 새로운 데이터에 대한 예측이나 판단에 활용하는 기법을 일컫는다.

이 장에서는 다음 질문을 중심으로 머신러닝의 기본 개념을 살펴본다.

머신러닝 모델은 데이터에서 무엇을 배우며, 왜 새로운 데이터에서의 성능이 중요한가?

1.1머신러닝은 무엇이 다른가?

1.1.1전통적인 프로그래밍

전통적인 프로그래밍에서는 사람이 문제를 분석하고 해결 규칙을 직접 코드로 작성한다.

예를 들어 스팸 메일을 분류하려면 “제목에 광고, 무료, 당첨 등의 특정 단어가 포함되면 스팸으로 분류한다”와 같은 규칙을 사람이 정할 수 있다.

새로운 스팸 표현이 계속 등장하면 규칙도 계속 추가하거나 수정해야 한다. 그런데 규칙이 많고 자주 변할수록 프로그램은 복잡해지고 유지하기 어려워진다.

1.1.2머신러닝

머신러닝에서는 사람이 모든 규칙을 직접 작성하지 않는다.

스팸 메일과 정상 메일의 예를 충분히 제공하면, 모델이 두 집단을 구분하는 데 도움이 되는 관계를 데이터에서 학습한다.

데이터 → 모델 학습 → 새로운 데이터에 대한 예측

즉 머신러닝의 핵심은 규칙을 사람이 일일이 작성하는 대신, 데이터를 이용해 예측에 필요한 관계를 학습하는 것이다.

머신러닝은 다음과 같은 문제에서 특히 유용하다.

  • 사람이 명시적인 규칙을 모두 작성하기 어려운 문제

  • 규칙이 자주 변하는 문제

  • 많은 데이터에서 예측에 필요한 관계를 찾아야 하는 문제

음성 인식, 이미지 인식, 추천, 스팸 분류, 수요 예측 등이 대표적인 예다.

1.2머신러닝 문제의 기본 유형

이 강의에서는 먼저 지도 학습비지도 학습을 구분한다.

유형설명대표 과제
지도 학습입력 데이터와 타깃을 함께 사용회귀, 분류
비지도 학습타깃 없이 입력 데이터만 사용군집화, 차원 축소, 이상치 탐지

지도 학습에서는 타깃의 종류에 따라 다시 나눌 수 있다.

  • 회귀(regression): 수치형 값 예측

  • 분류(classification): 범주형 값 예측

이 장에서는 회귀 문제를 하나 직접 따라가면서 모델이 실제로 무엇을 학습하는지 살펴본다.

1.31인당 GDP로 삶의 만족도를 예측할 수 있을까?

OECD 회원국과 일부 비회원국의 1인당 국내총생산(GDP per capita)과 삶의 만족도(Life Satisfaction) 사이의 관계를 살펴보자.

질문은 단순하다.

한 나라의 1인당 GDP를 알면 그 나라의 삶의 만족도를 예측할 수 있을까?

이 문제의 특성과 타깃은 다음과 같다:

  • 특성(feature): 1인당 GDP

  • 타깃(target): 삶의 만족도

삶의 만족도는 수치형 값이므로 이 문제는 회귀 문제다.

아래 표는 데이터셋에 포함된 7개 국가의 1인당 GDP와 삶의 만족도를 예제로 보여준다. 1인당 GDP는 미국 달러를 기준으로 계산되었으며, 삶의 만족도는 0부터 10 사이의 부동소수점으로 표현된다.

산점도를 보면 1인당 GDP가 높을수록 삶의 만족도도 대체로 높아지는 선형적(linear) 경향이 보인다.

그렇다면 이 관계를 하나의 직선으로 표현해 볼 수 있을까?

1.4선형 회귀 모델

가장 단순한 선형 회귀 모델은 다음과 같이 표현할 수 있다.

y^=θ0+θ1x\widehat{y} = \theta_0 + \theta_1 x

여기서

  • xx: 1인당 GDP

  • y^\widehat{y}: 모델이 예측한 삶의 만족도

  • θ0\theta_0: 절편

  • θ1\theta_1: 기울기

이다.

θ0\theta_0θ1\theta_1을 모델의 파라미터(parameter)라고 한다.

1.4.1어떤 직선이 좋은가?

같은 데이터에도 여러 직선을 그을 수 있다.

어떤 직선은 데이터의 전체적인 증가 경향을 잘 반영하지만, 어떤 직선은 그렇지 못한다.

1.4.2선형 회귀 모델 훈련

같은 GDP가 주어져도 모델의 파라미터가 달라지면 직선이 달라지고, 따라서 예측값도 달라진다.

각 국가에는 실제 삶의 만족도 값이 있고, 하나의 직선을 정하면 각 GDP에 대한 예측값이 생긴다. 따라서 각 국가마다 실제값과 예측값의 차이도 생긴다.

모델 훈련(training)은 훈련 데이터를 이용하여 모델의 파라미터를 결정하는 과정이다. 선형 회귀에서는 실제값과 예측값의 차이가 전체적으로 작아지도록 절편과 기울기를 결정한다.

모델 훈련에 사용하는 데이터를 훈련셋(training set) 또는 훈련 데이터(training data)라고 한다.

파라미터를 구체적으로 어떻게 계산하는지는 뒤의 모델 훈련 장에서 다룬다. 지금은 다음만 기억하면 충분하다.

모델 훈련 = 훈련 데이터를 이용하여 적절한 모델 파라미터를 결정하는 과정

1.4.3훈련된 모델 활용

잘 훈련된 모델은 새로운 국가의 1인당 GDP가 주어졌을 때 삶의 만족도를 예측하는 데 사용할 수 있다.

  • 훈련(training): 훈련 데이터를 이용하여 모델의 파라미터를 결정한다.

  • 예측(prediction): 훈련을 통해 결정된 파라미터를 이용하여 새로운 입력값에 대한 예측값을 계산한다.

머신러닝의 목적은 훈련 데이터에 대해서뿐만 아니라 새로운 데이터에서도 적절한 예측을 하는 모델을 만드는 것이다.

1.5훈련 데이터가 달라지면 모델도 달라질까?

앞에서는 의도적으로 9개 국가를 제외한 데이터로 선형 회귀 모델을 훈련했다.

아래 그래프의 검정 실선은 9개 국가를 포함한 전체 데이터로 훈련한 선형 회귀 모델이다.

파란 점선은 9개 국가를 제외한 데이터로 훈련한 선형 회귀 모델이다.

두 경우에 훈련된 직선은 상당히 다르다.

이 예는 중요한 사실을 보여준다.

모델은 데이터에서 학습하므로 어떤 데이터를 훈련에 사용했는가에 따라 결과가 달라질 수 있다. 즉, 모델만큼 데이터도 중요하다.

두 모델 중 어느 것이 더 좋은지는 이 그림만으로 결정할 수 없다. 중요한 것은 훈련에 사용하지 않은 새로운 데이터에서도 잘 작동하는가이다.

이를 일반화(generalization)라고 한다.

1.6과대적합과 과소적합

과대적합

과대적합(overfitting)은 모델이 훈련 데이터에 지나치게 맞춰져 새로운 데이터에서 성능이 떨어지는 현상이다.

과소적합

과소적합(underfitting)은 모델이 지나치게 단순하거나 훈련이 충분하지 않아 데이터에 나타난 관계를 제대로 표현하지 못하는 현상이다.

1.7과대적합을 줄이는 한 가지 방법: 규제

과대적합을 줄이기 위해 모델이 훈련 데이터에 지나치게 맞춰지지 않도록 제한할 수 있다. 이를 규제(regularization)라고 한다.

규제를 사용하면 훈련 데이터에 대한 성능은 조금 낮아질 수 있지만, 특정 훈련 데이터에 지나치게 민감하게 반응하는 것을 줄여 일반화 성능을 높이는 데 도움이 될 수 있다.

선형 회귀에 규제를 적용한 대표적인 모델이 릿지 회귀(Ridge regression)다. 아래 그래프에서 파란 파선은 9개 국가를 제외한 데이터로 훈련한 릿지 회귀 모델이다.

9개 국가를 제외한 데이터로 훈련했음에도, 규제를 적용한 모델은 전체 데이터를 사용한 선형 회귀 모델과 비교적 비슷한 예측을 보인다.

1.8머신러닝 모델 훈련의 어려움

머신러닝 모델의 성능은 모델 자체뿐 아니라 훈련 데이터의 영향을 크게 받는다.

모델 쪽에서는 앞서 살펴본 과대적합과 과소적합이 문제가 될 수 있고, 데이터 쪽에서는 다음과 같은 문제가 발생할 수 있다.

  • 충분하지 않은 훈련 데이터: 데이터가 너무 적으면 안정적인 관계를 학습하기 어렵다.

  • 낮은 품질의 훈련 데이터: 편향되거나 잘못 측정된 값 등이 포함되면 모델이 잘못된 관계를 학습할 수 있다.

  • 대표성이 부족한 훈련 데이터: 실제로 적용할 대상과 다른 데이터로 훈련하면 새로운 데이터에 일반화하기 어렵다.

  • 특성 공학(feature engineering): 문제 해결에 도움이 되는 특성을 선택하거나 기존 데이터에서 새로운 특성을 만들어 사용하는 과정이다.

1.9핵심 정리

이 장의 1인당 GDP-삶의 만족도 예제에는 이후 계속 사용할 머신러닝의 핵심 개념이 들어 있다.

  1. 특성과 타깃을 정한다.

  2. 모델의 형태를 정한다.

  3. 훈련 데이터로 모델의 파라미터를 결정한다.

  4. 훈련된 모델로 새로운 데이터를 예측한다.

  5. 훈련 데이터가 달라지면 훈련된 모델도 달라질 수 있다.

  6. 따라서 훈련 성능보다 일반화 성능이 중요하다.

  7. 과대적합을 줄이기 위해 규제와 같은 방법을 사용할 수 있다.

한 문장으로 정리하면 다음과 같다.

머신러닝의 목표는 훈련 데이터를 가장 잘 맞히는 것이 아니라, 데이터에서 유용한 관계를 학습해 새로운 데이터에서도 잘 작동하는 모델을 만드는 것이다.

1.10연습문제

1.10.1문제 1. 머신러닝 문제의 기본 개념

다음 질문에 답하라.

  1. 전통적인 프로그래밍과 머신러닝의 가장 큰 차이는 무엇인가?

  2. 지도 학습(supervised learning)과 비지도 학습(unsupervised learning)은 무엇을 기준으로 구분하는가?

  3. 다음 문제를 회귀(regression)와 분류(classification)로 구분하라.

    • 주택가격 예측

    • 이메일의 스팸 여부 판단

    • 내일의 전력 사용량 예측

    • 대출 신청자의 부도 여부 판단

  4. 머신러닝에서 특성(feature)과 타깃(target)은 각각 무엇을 의미하는가?

해설 보기
  1. 전통적인 프로그래밍에서는 사람이 해결 규칙을 직접 작성하지만, 머신러닝에서는 데이터에서 예측에 필요한 관계를 학습한다.

  2. 예측하려는 타깃이 함께 주어지는지 여부를 기준으로 구분한다.

  3. 주택가격과 전력 사용량 예측은 회귀, 스팸 여부와 부도 여부 판단은 분류다.

  4. 특성은 예측에 사용하는 입력 변수이고, 타깃은 예측하려는 값이다.


1.10.2문제 2. GDP와 삶의 만족도 선형 회귀

1인당 GDP를 이용하여 삶의 만족도를 예측하는 다음 선형 회귀 모델을 생각하자.

y^=θ0+θ1x\widehat{y} = \theta_0 + \theta_1 x
  1. 이 문제에서 xxy^\widehat{y}는 각각 무엇을 나타내는가?

  2. θ0\theta_0θ1\theta_1은 각각 어떤 역할을 하는가?

  3. θ0\theta_0θ1\theta_1을 모델의 파라미터(parameter)라고 부르는 이유는 무엇인가?

  4. 선형 회귀 모델을 훈련한다는 것은 이 예에서 무엇을 의미하는가?

  5. 같은 GDP가 주어져도 θ0\theta_0θ1\theta_1이 달라지면 예측값이 달라지는 이유를 설명하라.

해설 보기
  1. x는 1인당 GDP이고, \widehat{y}는 모델이 예측한 삶의 만족도다.

  2. \theta_0는 직선의 절편, \theta_1은 직선의 기울기다.

  3. 두 값이 모델의 구체적인 예측 방식을 결정하기 때문이다.

  4. 훈련 데이터를 이용하여 실제값과 예측값의 차이가 전체적으로 작아지도록 적절한 절편과 기울기를 찾는 과정이다.

  5. 선형 회귀 모델의 예측값은 두 파라미터로 결정되는 직선 위의 값이므로, 파라미터가 달라지면 직선과 예측값도 달라진다.


1.10.3문제 3. 훈련, 예측, 일반화

1인당 GDP-삶의 만족도 예제에서 일부 국가를 제외한 데이터로 훈련한 모델과 전체 국가 데이터로 훈련한 모델의 직선이 상당히 달랐다.

  1. 이 결과가 보여주는 가장 중요한 사실은 무엇인가?

  2. 훈련 데이터에 잘 맞는 모델만으로는 충분하지 않은 이유는 무엇인가?

  3. 일반화(generalization)란 무엇인가?

  4. 다음 두 문장을 구분하여 설명하라.

    • “모델이 훈련 데이터에서 잘 작동한다.”

    • “모델이 새로운 데이터에서도 잘 작동한다.”

  5. 머신러닝의 최종 목표는 위 두 문장 가운데 어느 쪽에 더 가까운가? 이유도 설명하라.

해설 보기
  1. 어떤 훈련 데이터를 사용했는가에 따라 훈련된 모델이 달라질 수 있다는 사실을 보여준다.

  2. 머신러닝 모델은 학습에 사용하지 않은 새로운 데이터에 대해서도 적절히 예측해야 하기 때문이다.

  3. 훈련에 사용하지 않은 새로운 데이터에서도 모델이 잘 작동하는 성질을 의미한다.

  4. 첫 번째는 훈련 데이터에 대한 적합 정도이고, 두 번째는 새로운 데이터에 대한 예측 성능이다.

  5. 두 번째에 더 가깝다. 머신러닝의 목적은 훈련 데이터를 단순히 잘 맞히는 것이 아니라 새로운 데이터에도 적용할 수 있는 관계를 학습하는 것이기 때문이다.


1.10.4문제 4. 과대적합, 과소적합, 규제

다음 세 상황을 생각하자.

  • 모델 A: 훈련 데이터에서는 매우 잘 맞지만 새로운 데이터에서는 성능이 크게 떨어진다.

  • 모델 B: 훈련 데이터에서도 관계를 제대로 설명하지 못한다.

  • 모델 C: 훈련 데이터에 대한 성능은 모델 A보다 조금 낮지만 새로운 데이터에서는 더 안정적으로 작동한다.

  1. 모델 A에서는 어떤 문제를 의심할 수 있는가?

  2. 모델 B에서는 어떤 문제를 의심할 수 있는가?

  3. 모델 C가 더 좋은 모델일 수 있는 이유는 무엇인가?

  4. 규제(regularization)는 어떤 문제를 완화하기 위해 사용하는가?

  5. 규제를 적용하면 훈련 데이터에 대한 성능이 조금 낮아질 수 있는데도 사용하는 이유는 무엇인가?

해설 보기
  1. 과대적합을 의심할 수 있다.

  2. 과소적합을 의심할 수 있다.

  3. 훈련 데이터에 대한 성능만이 아니라 새로운 데이터에 대한 일반화 성능이 더 좋을 수 있기 때문이다.

  4. 모델이 훈련 데이터에 지나치게 맞춰지는 과대적합을 완화하기 위해 사용한다.

  5. 훈련 성능을 조금 희생하더라도 새로운 데이터에서 더 안정적인 성능을 얻을 수 있기 때문이다.


1.10.5문제 5. 데이터와 모델을 함께 판단하기

다음 상황에 대해 문제가 무엇인지 설명하라.

  1. 훈련 데이터의 수가 매우 적다.

  2. 잘못 측정된 값이 많이 포함되어 있다.

  3. 실제 사용할 대상과 전혀 다른 집단의 데이터로 모델을 학습했다.

  4. 예측과 관련이 거의 없는 특성을 많이 사용했다.

  5. 새로운 훈련 데이터가 추가되자 기존 모델의 예측이 크게 달라졌다.

각 상황에서 단순히 “더 복잡한 모델을 사용하면 해결된다”고 말할 수 없는 이유도 함께 설명하라.

해설 보기
  1. 데이터가 충분하지 않으면 안정적인 관계를 학습하기 어렵다.

  2. 낮은 데이터 품질은 잘못된 관계를 학습하게 만들 수 있다.

  3. 훈련 데이터가 실제 적용 상황을 대표하지 못하면 일반화하기 어렵다.

  4. 불필요한 특성이 많으면 모델이 우연한 관계나 잡음에 민감해질 수 있다.

  5. 훈련 데이터의 구성에 따라 모델이 크게 달라질 수 있음을 보여주며, 일반화 성능을 별도로 확인해야 한다.

이 문제들은 모델의 복잡도만으로 해결할 수 없다. 머신러닝의 성능은 모델뿐 아니라 데이터의 양, 품질, 대표성, 사용한 특성의 적절성에도 영향을 받기 때문이다.


1.10.6문제 6. 코드 워크아웃으로 확인하기

(코드 워크아웃) 머신러닝 소개를 실행하면서 다음을 확인하라.

  1. 1인당 GDP와 삶의 만족도 중 특성과 타깃은 각각 무엇인가?

  2. 선형 회귀 모델을 훈련하는 코드는 어디이며, 이 코드가 하는 일을 설명하라.

  3. 훈련을 통해 결정된 절편과 기울기는 어디에 저장되는가?

  4. 새로운 국가의 GDP를 이용해 삶의 만족도를 예측하는 코드는 어디이며, 훈련과 예측의 차이를 설명하라.

  5. 일부 국가를 포함하거나 제외했을 때 학습된 직선이 어떻게 달라지는가?

  6. 이 결과가 일반화와 어떤 관련이 있는가?

해설 보기

코드의 정확한 위치와 실행 결과는 코드 워크아웃에서 직접 확인한다.

핵심은 다음과 같다.

  • 1인당 GDP가 특성이고 삶의 만족도가 타깃이다.

  • fit()은 훈련 데이터를 이용하여 모델의 파라미터를 결정한다.

  • 선형 회귀의 절편과 기울기는 각각 intercept_, coef_에 저장된다.

  • predict()는 훈련된 모델을 새로운 입력에 적용하여 예측값을 계산한다.

  • 훈련 데이터에 포함되는 국가가 달라지면 훈련된 직선도 달라질 수 있다.

  • 따라서 훈련 데이터에서의 적합 정도만이 아니라 새로운 데이터에서의 일반화 성능을 확인해야 한다.