데이터분석

47-(1). 지도학습과 대표 알고리즘

장수우 2024. 2. 2. 17:51
학습 주제
  • 지도학습 알아보기
  • 대표 알고리즘
주요 학습 내용
  • Scikit-learn
    • '사이킷런'은 다양한 머신러닝 알고리즘이 구현되어 있는 오픈 소스 패키지
      - 내부 작동 과정을 하나하나 확인할 수 있다.
    • 데이터 처리, 파이프라인, 여러 학습 알고리즘, 전/후처리 등 다양한 기능을 제공한다.
      - 현업이나 학계에서도 널리 사용된다.
    • 타 파이썬 패키지와 과학 분석 목적 패키지와 연동이 좋다.
    • 제공하는 머신러닝 모델 및 알고리즘은 아래 객체의 메서드를 전부 혹은 일부를 사용한다.
    • 통일된 API 호출 시스템을 구성해 사용자가 손쉽게 사용할 수 있는 인터페이스를 제공하기 위함이다.
    • Estimator (추정기)
      - fit() 메서드를 활용하여 학습을 진행
      - 데이터로부터 패턴을 학습하고 결과로 모델 내부 파라미터를 조정
    • Predictor (예측기)
      - predict() 메서드를 활용
      - 학습된 모델을 사용해 새로운 데이터에 대한 예측을 수행한다.
    • Transformer (변환기)
      - 데이터를 새로운 형태로 변환하기 위해 transform()메서드 활용
      - 군집화, PCA 차원 축소 등의 과정을 위해 fit_transform() 메서드를 활용
    • Model (모델)
      - 모델의 학습 적합도를 확인할 수 있다록 score()메서드를 제공
      - 학습된 모델의 성능을 평가할 수 있다.
  • 파이프라인, Pipeline
    • 머신러닝 워크플로우의 여러 단계를 하나의 수준으로 연결하는 작업
    • 데이터 전처리부터 모델 학습과 예측까지 원하는 범위의 작업을 하나로 묶을 수 있다.
    • 효율적으로 코드를 작성하고 관리할 수 있다.
    • Pipeline은 이름과 추정기 객체가 (key, value) 쌍으로 구성되어야 한다.
      - Pipeline 구성을 손쉬게 하려면 make_pipeline 함수를 활용
      https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html
    • Pipeline의 가장 마지막을 제외하고는 모두 변환기여야 한다
      - 다음 과정으로 데이터를 넘겨줘야 하기 때문
    • 마지막은 추정기, 예측기, 변환기가 올 수 있다.
      - 추정기나 예측기가 온다면 fit()과 predict()를 사용해 모델 학습과 추론을 진행할 수 있다.
      - 변환기가 온다면 단순 전처리기 정도로 사용할 수 있다.
    • 마지막 단계의 컴포넌트는 파이프라인의 최종 메서드에 영향을 미친다.
      - 만약 마지막 컴포넌트가 변환기라면 fit()과 predict()메서드를 사용할 수 없다.
  • Numpy
    • Python에서 다차원 배열 연산, 행렬 연산, 고수준의 수학  함수, 난수 생성과 같은 과학적인 계산을 위한 패키지
    • 데이터분석, 머신러닝의 기반이 되는 필수 라이브러리
    • scikit-learn에서 사용하는 기본 데이터 구조가 Numpy의 배열
  • Pandas
    • Python에서 사용하는 패키지로 데이터 분석 기능을 제공하는 패키지
    • 엑셀, CSV, 데이터베이스와 같은 다양한 파일에서 데이터를 읽어 들일 수 있는 기능을 제공한다.
    • DataFrame이라는 데이터 구조를 기반으로 SQL 처럼 테이블에 Query 명령을 수행할 수 있다.
  • Matplotlib
    • Python에서 사용하는 과학 계산용 그래프 시각화 오픈소스 라이브러리
    • 데이털르 바탕으로 선 그래프, 히스토그램, 산점도 등의 다양한 그래프를 시각화
    • Colab과 같이 웹 상황에서 matplotlib을 사용하려면 '%matplotlib inline' 매직 명령어를 사용해야한다.

  • 지도 학습, Supervised Learning
    • 정답 레이블 정보를 활용해 알고리즘을 학습하는 학습 방법론
    • 데이터와 정답인 레이블 사이의 관계를 파악하는 목적
    • 정답이 존재하므로 모델이 풀어야하는 문제가 비교적 쉽고 잘 학습된다.
    • 명확한 평가 수치가 존재하며 학습된 모델의 성능을 쉽게 측정할 수 있다.
    • 정답이 필요하므로 이를 위해 추가적인 시간, 노동, 비용이 필요하다.
    • 정답을 매기는 행위에 필요한 전문 인력과 같은 추가 비용이 발생한다.
  • 회귀 문제와 분류 문제
    • 문제 (Task)
      - 머신 러닝 기법을 활용해 해결하고자 하는 대상
      - 데이터를 통해 얻고자 하는 특정 목표나 결과를 의미
    • 지도 학습에서 흔히 다루는 대표적인 두 문제
      - 회귀 문제 (Regression problem) : 주어진 입력 데이터에 대해 연속적인 숫자값을 예측하는 문제
      - 분류 문제 (Classification problem) : 주어진 입력 데이터가 어떤 범주(클래스)에 속하는지 판별
  • 회귀 문제, Regression Problem
    • 주관식 문제와 비슷하다.
    • 입력 데이터를 바탕으로 정확한 숫자 형태의 결과를 예측하는 문제
      - 정확한 숫자는 정수 혹은 실수 범위의 수
      - ex) 내일 주식 가격?, 5년뒤 나의 몸구게?
    • 정확한 숫자 값을 찾는 문제에 적합
  • 분류 문제, Classification Problem
    • 5지선다형 객관식 문제와 비슷
    • 입력으로 주어지는 데이터를 정해진 보기 중 하나로 분류하는 문제
    • 분류 문제의 세분화 : 모델이 여러 클래스를 내보내야 하는 경우
      - 이진 분류 문제 : 주어지는 클래스가 2개인 경
      - 다중 클래스 문제 : 모델이 여러 클래스를 내보내야 하는 경우
    • 보기 중 선택의 문제에 적
  • 학습 데이터 (Train data)
    • 순수하게 학습을 하는 과정에서 사용하는 데이터
    • 갖고 있는 전체 데이터 중 가장 많은 비율을 차지한다.
      - 정해진 정답은 없지만 전체 데이터의 약 80% 정도를 사용한다.
      - 이 분류에 속한 데이터가 많으면 많을수록 성능이 좋아질 가능성이 커진다.
  • 검증 데이터 (Validation data)
    • 머신 러닝 모델이 어느 정도 학습 되었는지를 주기적으로 확인하는데 사용하는 데이터
    • 검증 과정은 학습 중간에 진행되는 평가라고 생각할 수 있다.
    • 학습의 정도를 판단 할 수 있다.
    • 전체 데이터의 약 10% 할당
  • 평가 데이터 (Test data)
    • 학습의 과정과는 별도의 과정
    • 최후의 머신 러닝 모델이 생성된 후, 학습한 모델의 최종 선능을 평가하기 위해 사용되는 데이터
    • 학습 과정에서는 절대 사용되지 않는다.
    • 완성된 머신 러닝 모델이 서비스 혹은 제품과 같이 실제 사용 시나리오 과정에서 볼게 될 데이터라는 가정으로
      만들어진다.
    • 전체 데이터 중 약 10% 할당
  • 과적합, Overfitting
    • 머신 러닝 모델이 특정 훈련 데이터에 지나치게 학습된 것
    • 새로운 데이터나 테스트 데이터에서 잘 작동하지 않는 상태를 의미한다.
    • 일반화 능력(Generalization)이 떨어진 상태로 표현
    • 학습 데이터에 포함된 특정 패턴이나 디테일 그리고 작은 노이즈까지 학습
      - 단순히 데이터를 외워버린 경우다.
    • 머신 러닝 모델이 경계해야하는 현상
    • 이를 위해 아래와 같은 방법들이 존재한다.
      - 데이터 양 늘리기
      - 머신 러닝 모델의 복잡도를 줄이기
      - 규제와 같은 정규화 기법 사용하기 등
  • 손실 함수(Loss Function)
    • 머신 러닝 모델이 얼마나 잘 하고 있는지 또는 못하고 있는지를 수치화한 손실을 구하는 함수
    • 모델의 예측값과 실제 정답 사이의 차이를 측정하는 지표
    • 일반적으로, 손실이 작을 수록 모델의 성능이 좋다고 볼 수 있다.
    • 머신 러닝 모델을 학습하는 과정은 손실(Loss)을 줄이는 과정으로 진행 된다.
    • 손실 함수의 종류는 해결하고자 하는 문제의 유형에 따라 다르다
      - 회귀 문제 : 평균 제곱 오차 (Mean Squared Error)
      - 분류 문제 : 교차 엔트로피 (Cross Entropy)
      - 이진 분류 문제 : 로그 손실 (Log Loss)
  • 파라미터(Parameter)와 최적화 (Optimization)
    • 파라미터 : 모델이 내부적으로 갖고있는 변수
    • 모델이 데이터로부터 학습하는 패턴 관계를 표현, 모델의 예측 성능에 직접적인 영향을 미친다.
    • 파라미터의 구조와 조합은 모델마다 다양하며 이 변수의 값은 학습의 과정으로 찾아야 한다.
      - 성능이 좋은 모델은 적잘한 구조의 파라미터로 구성돤다.
      - 파라미터의 구체적인 값은 데이터를 이용한 학습으로 찾게 된다.
    • 최적화 : 머신 러닝에서 모델의 성능을 최대화하거나, 오류를 최소화하기 위해 모델의 파라미터를 조절하는 과정
    • Loss 값이 최소과 되는 파라미터를 찾는 것을 목표로한다.
    • 최적화 적용 과정은 머신 러닝 모델에 따라 상이할 수 있다.
      - 최적의 해를 한번에 구하는 경우
      - 점진적으로 반복적으로 해를 구하는 경우
  • 분류 문제 대표 알고리즘
    • 로지스틱 회귀(Logistic Regression)
      - 이진 분류 문제에 적합한 구조
      - 확률을 직접 예측하는 확률 추정 접근으로 결과를 예측
    • 결정 트리 분류기 (Decision Tree Classifier)
      - 데이터를 잘 분할하는 결정 트리를 사용하여 분류를 수행
      - 직관적이고 이해가 쉽다.
    • 랜덤 포레스트 (Random Forest)
      - 여러 결정 트리의 결합으로 앙상블 기법에 해당한다.
      - 높은 정확도를 보이면서도 과적합 문제를 방지한다.
    • 서포트 벡터 머신 (Support vector Machine, SVM)
      - 데이터를 최적으로 분리하는 결정 경계를 찾는데 강력한 알고리즘
      - 어려운 형태의 데이터라도 비선형 계산이 가능한 다양한 커널 트릭이 있어 해를 구할 수 있다.
  • 회귀 문제 대표 알고리즘
    • 선형 회귀(Linear Regression)
      - 기본적이고 널리 사용되는 회귀 알고리즘
      - 독립 변수와 종속 변수 간의 선형 관계를 모델링 한다.
    • 라쏘 회귀 혹은 릿지 회귀 (Lasso & Ridge Regression)
      - 규제 기법을 이용해 과적합을 방지하고 일반화 성능이 향상된 선형 모델
    • 결정 트리 회귀 (Decision Tree Regreesion)
      - 결정 트리를 이용해 회귀 문제에 적용
    • 서포트 벡터 회귀 (Support Vector Regression, SVR)
      - 분류 모델인 SVM을 회귀에 적용한 알고리즘
    • K-최근접 이웃 회귀 (K-Nearest Neighbors Regression) 
      - 주어진 데이터 포인트에서 가장 가까운 K개의 이웃 데이터의 평균으로 예측값을 결정
      - 간단하면서도 데이터 자체만을 활용한 추정(비모수적 추적)이 가능
반응형