K-MOOC 실습으로 배우는 머신러닝 chapter 2. Machine Learning Pipeline 학습하기


✔️ 학습 목표

  • 문제 이해
  • 데이터 샘플 준비
  • 모형 구축
  • 구축된 모형으로 실제 데이터 검증
  • 구축된 모형을 공개하고 유지 보수


1. 머신러닝 프로세스

(1) Business Understanding
우선, 머신러닝 모델을 구축하기 위해선 비즈니스에 대한 이해가 필요하다. 다양한 문제 상황에 대한 적절한 이해가 있어야 하며 내가 무엇을 예측하고 싶은지, 어느 정도의 정확도를 가진 모델을 구축할 지를 정의할 줄 알아야 한다.

(2) Data Understanding
비즈니스에 대한 배경 지식에 대한 이해가 잘 되어있다면 데이터 자체에 대한 확실한 이해가 수반되어야 한다. 데이터가 어떤 구조로 축적되는지 어떤 부분을 변수로 삼아야하는지 어떻게 처리해야하는지 등 데이터 자체에 대한 구체적인 이해가 필요하다.

(3) Prepare Data
배경 지식과 데이터에 대한 이해도를 기반으로 데이터를 준비한다. 모델이 최적의 성능을 낼 수 있도록 데이터를 준비하는 것이 매우 중요하다.

(4) Training Data/Test Data
데이터는 Training Data(학습용), Test Data(검증용)로 나누는데 보통 7:3 또는 8:2 비율을 가진다.

(5) Building Model using Algorithms
학습 데이터는 모델에 넣어서 학습을 시키는데 이때 함수f(x)가 도출 될 것이다.

(6) Applying Model and performance evaluation
학습된 함수를 가지고 실제 상황에서 잘 활용이 되는지 검증하기 위해 학습에 사용하지 않았던 검증 데이터로 예측 및 검증한다.

(7) Deployment
모델을 실제 상황(문제)에 사용하는 경우 또는 서비스에 도입하는 경우에는 배포(Deployment)를 고민해야 한다. 최적의 모델을 구축하여도 사용하는 과정에선 다양한 문제가 발생할 수 있다.

예 : 실시간으로 예측하고 결과를 알려줘야하는데 계산과정이 복잡해서 결과가 늦게 출력, 어느 정도 이상 수준의 정확도를 꾸준하게 변동없이 보여줘야하는데 그렇지 않은 경우

(8) Knowledge and Actions
결과로 부터 얻은 지식이나 최종 모델을 가지고 액션을 취할 수 있다.


Fig 1. 머신러닝 프로세스


2. 데이터 관련 용어

  • Dataset
    • 정의된 구조로 모아져 있는 데이터 집합
  • Data Point (Observation)
    • 데이터 세트에 속해 있는 하나의 관측치
  • Feature (Variable, Attribute)
    • 데이터를 구성하는 하나의 특성
      • 숫자형, 범주형, 시간, 텍스트, 이진형
  • Label (Target, Response)
    • 입력 변수들에 의해 예측, 분류되는 출력 변수


Fig 2. 주택 가격 예측 데이터셋


  • 출력 변수(y), 입력 변수(x)
  • 관측치(데이터 셋에서 하나의 행을 의미)
  • 관측치의 개수(n), Feature의 수(p)


3. 분류와 회귀

종속변수(y)가 범주형이냐 연속형이냐에 따라 분류(Classification)회귀(Regression) 로 나누어지며 회귀는 둘(x, y) 간의 상관관계를 표현해 줄 수 있는 함수를 찾는 것이다.



  분류(Classification) 회귀(Regression)
결과 종속변수(y)가 범주형일 때 종속변수(y)가 연속형일 때
예제 입력된 보험 청구권에 대해서 자동 심사와 인심사 분류 날씨, 유가, 경제 지표 등을 이용한 주가 예측


4. 데이터 준비 과정

  • Dataset Exploration
    • 데이터 모델링을 하기 전에 데이터 변수 별 기본적인 특성들을 탐색하고 데이터의 분포적인 특징 이해
    • 사분위수, 평균, 중간값 등을 파악해서 어떤 특징을 가지고 있는지 파악
    • 데이터가 의미있는 데이터가 맞는지, 잘 수집이 되어있는 것인지, 문제가 없는지를 파악
    • Garbage In Garbage Out(GIGO) 방지
    • EDA(Exploratory Data Analysis) 라고도 부름
  • Missing Value
    • 데이터를 수집하다 보면 일부 데이터가 수집되지 않고 결측치로 남아 있는 경우가 있어서 이러한 부분 보정 필요
    • 이런 결측치로 인해 제대로 계산되지 않고 오류를 일으키는 문제가 발생할 수 있음
    • 미리 처리해 줘야 함(결측치 고정/삭제 등)
  • Data Types and Conversion
    • 데이터셋 안에 여러 종류의 데이터 타입(숫자, 텍스트, 범주, 시간 등)이 있을 수 있고, 이를 분석이 가능한 형태로 변환 후 사용해야 함
    • 머신러닝 모형에 적용하기 위해선 숫자, 벡터 등 컴퓨터가 계산할 수 있는 형태로 변형해줘야 함
  • Normalization
    • 데이터 변수들의 단위가 크게 다른 경우들이 있고 이러한 것들이 모델 학습에 영향을 주는 경우가 있어서 정규화 필요
    • 예 : 집 평수(10 ~ 100 단위), 집 값(억 단위)
    • 대표적인 방법 : 평균을 빼고 표준편차로 나눠줌
  • Outlers
    • 관측치 중에서 다른 관측치와 크게 차이나는 관측치들이 있고 이러한 관측치들은 모델링 전 처리가 필요함
  • Feature Selection
    • 많은 변수 중에서 모델링을 할 때 중요한 변수가 있고 그렇지 않은 변수가 있어서 선택이 필요한 경우가 있음
  • Data Sampling
    • 모델을 검증하거나 이상 관측치를 찾는 모델링을 할 때 또는 앙상블 모델링을 할 때 가지고 있는 데이터를 일부분 추출하는 과정을 거치기도 함
    • 내가 가지고 있는 train 데이터를 모두 사용하는 것이 아니라 일부 샘플링 과정을 통해 모형을 학습하고 고도화시키는 과정을 거칠 수 있음
    • 모형 성능 향상, 이상치 제거와 같은 작업 가능


5. 모델링(Modeling)

모델(Model) 은 입력 변수와 출력 변수 간의 관계를 정의해줄 수 있는 추상적인 함수 구조이다.



training data로 학습시키고, 데이터가 잘 작동하는지 검증한다. 이때 검증 결과에 만족하지 못하는 경우가 발생하는데 이러한 점은 피드백 루트를 통해 다시 모형을 바꿔보는 등의 작업을 수행한다. 만족할만한 수준이 되었을 때 최종 모델이 나오는 과정이 된다. 피드백 루트는 여러번 돌 수 있다.


6. 모델링 검증

  • 과소적합(Underfit)
    • 모형이 train data에 대해 학습이 잘 안됨
    • 너무 간단하게 모형을 세워서 학습한 경우
  • 과대적합(Overfit)
    • 너무 과도하게 적합시킨 경우
  • Training error
    • 학습 데이터에 대한 예측 오차 (손실)
  • Validation error
    • 유효성 검사 데이터에 대한 예측 오차 (일반적인 오차)

(1) 모델링 검증 방법



  • 방법 1 : 모델이 일반화가 잘 되는지 확인하기 어렵기 때문에 적합하지 않다.
  • 방법 2 : 적절한 하이퍼 파라미터를 고를 수 없다. 하이퍼파라미터를 바꿔보면서 검증해봐야하는데 최적의 모델을 선택에 영향을 받지 않았던 테스트 데이터를 가지고 검증하는 것이 검증력이 높다.
  • 방법 3 : 데이터셋은 train, validation, test로 나눈다. validation data로 가장 적합한 모델의 복잡도를 결정한다. 모델이 결정되면 test로 편입시키고 최종 모델 복잡도에 학습시켜 어느정도의 성능이 나오는지 확인한다.
  • 방법 4 : 데이터가 적어 train, validation, test로 나누기 어려운 상황에서 사용할 수 있다. 전체 데이터를 n개의 fold로 나누고 validation을 순차적으로 바꿔가며 최적의 파라미터와 최적의 모델 복잡도 찾고 테스팅하는 방식이다.

∴ 세 번째 방법이 가장 일반적인 검증 단계이다.

(2) 예시로 이해하기


위 그래프에서 트레이닝 데이터와 모델간의 오차를 training error 라고 한다. 반대로 모델의 결과와 테스트 결과의 차이를 testing error 라고 한다.



모델의 복잡도(model complexity) 에 따라서 training error, validation error, testing error가 달라진다.

training error는 모델의 복잡도가 커짐에 따라 줄어든다. 반면 validation error는 모델의 복잡도가 커짐에 따라 어느정도 줄어들다가 커지는 현상이 발생한다. 이는 모델이 너무 복잡해서 혹은 모델이 너무 간단해서 오차가 크게 발생한 것이다. 즉, 너무 복잡하지도 않고 너무 간단하지도 않은 적절한 수준의 모형(모델)을 찾아야 한다.

이때, 하이퍼파라미터에 따라 모델의 복잡도가 달라질 수 있다. 하이퍼파라미터 는 어떤 구조를 결정하는데 있어서 영향을 줄 수 있는 요소를 말한다.


✔️ Reference


👩🏻‍💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.

댓글남기기