DS & ML

[ML] Introduction

DevDr 2022. 10. 1. 21:35
반응형

몇가지 용어들

Machine learning: 데이터에서부터 학습하도록 컴퓨터를 프로그래밍 하는 과학
Training set: 시스템이 학습하는데 사용하는 샘플
Training instance: 각 훈련 데이터
Training data
Accuracy: 성능 측정

머신러닝이 효과적인 상황들

  • 기존 솔루션으로는 많은 수동조정과 규칙이 필요한 문제: 하나의 머신러닝 모델이 코드를 간단하게 만들고 전통적인 방법보다 더 잘 수행되도록 할 수 있다.
  • 전통적인 방식으로는 해결방법이 없는 복잡한 문제: 가장 뛰어난 머신러닝 기법으로 해결 방법을 찾을 수 있다.
  • 유동적인 환경: 머신러닝 시스템은 새로운 데이터에 적응할 수 있다.
  • 복잡한 문제와 대량의 데이터에서 통찰을 얻을 수 있다.

머신러닝 시스템의 종류

머신러닝 시스템은 다음과 같이 분류할 수 있다.

  • 사람의 감독하에 훈련하는 것인지 그렇지 않은 것인지에 따른 분류
    • 지도, 비지도, 준지도, 강화학습
  • 실시간으로 점진적인 학습을 하는지 아닌지에 따른 분류
    • 온라인 학습과 배치 학습
  • 단순하게 알고 있는 데이터 포인트와 새 데이터 포인트를 비교하는 것인지, 아니면 과학자들이 하는 것처럼 훈련 데이터셋에서 패턴을 발견하여 예측 모델을 만드는지에 따른 분류
    • 사례기반 학습과 모델기반 학습

지도학습과 비지도학습

학습하는 동안의 감독 형태나 정보량에 따라 분류할 수 있다.

지도학습 (supervised learning)

  • 알고리즘에 주입하는 훈련 데이터에 label이라는 원하는 답이 포함된다.
    • Classification (e.g. 스팸 필터)
    • Regression: predictor variable라 부르는 feature를 사용해 target을 예측하는 것
  • 대표적인 지도학습 알고리즘은 다음과 같다.
    • K-nearest neighbors
    • Linear regression
    • Logistic regression
    • Support vector machine (SVM)
    • Decision tree, random forest
    • Neural network

비지도학습 (nonsupervised learning)

  • 훈련 데이터에 레이블이 없다.
  • 대표적인 비지도학습 알고리즘들은 다음과 같다.
    • Clustering
      • k-means
      • DBSCAN
      • Hierarchical cluster analysis (HCA)
      • Outlier detector, novelty detection
      • One-class SVM
      • Isolation forest
    • Visualization (데이터가 어떻게 조직되어있는지 이해할 수 있고, 예상치 못한 패턴 발견 가능), dimensionality reduction (데이터 간소화)
      • Principal component analysis (PCA)
      • Kernal PCA
      • Locally-linear embedding (LLE)
      • t-distributed stochastic neighbor embedding
    • Association rule learning (대량의 데이터에서 특성 간의 흥미로운 관계를 찾음)
      • Apriori
      • Eclat

준지도학습

  • 일부만 레이블이 있는 데이터를 다뤄 지도학습에 비해 시간과 비용이 감소된다.
    • 대부분 지도학습과 비지도 학습의 조합으로 이루어진다.
    • Deep belief network (DBN): Restricted Boltzmann machine이라 불리는 비지도학습에 기초

강화학습 (reinforcement learning)

  • Agent: 학습하는 시스템
    • Environment를 관찰해 action을 실행하고 그 결과로 reward/panalty를 받는다.
    • 시간이 지나면서 가장 큰 보상을 얻기 위해 policy라 부르는 최상의 전략을 스스로 학습한다.

배치학습과 온라인 학습

입력 데이터의 stream으로부터 점진적으로 학습할 수 있는지 여부에 따라 분류할 수 있다.

배치 학습 (Batch learning)

  • 시스템이 점진적으로 학습할 수 없으며, 가용한 데이터를 모두 사용해 훈련시켜야 한다.
  • 시간과 자원을 많이 소모해 보통 오프라인에서 수행한다.
  • Offline learning: 먼저 시스템을 훈련시키고 적용하면 더이상의 학습 없이 실행한다.
  • 새로운 데이터에 대해 학습하려면 전체 데이터를 사용해 시스템의 새로운 버전을 처음부터 다시 훈련해야 한다.
    • 자주 훈련시켜야 한다.
    • 많은 컴퓨팅 자원이 필요하다.

온라인 학습 (Online learning)

  • 데이터를 순차적으로 한 개씩 또는 mini-batch라 부르는 작은 묶음 단위로 주입하여 시스템을 훈련시킨다.
  • 매 학습 단계가 빠르고 비용이 적게 들어 시스템은 데이터가 도착하는 대로 즉시 학습할 수 있다.
    • 연속적으로 데이터를 받고 빠른 변화에 스스로 적응해야 하는 시스템에 적합하다. (e.g. stock market)
    • 컴퓨팅 자원이 제한 된 경우에 사용 가능하다.
  • 학습이 끝난 데이터는 더 필요하지 않아 제거해도 된다.
  • Learning rate: 변화하는 데이터에 얼마나 빠르게 적응할 것인지를 나타낸다.
    • 학습률이 높으면 시스템이 데이터에 빠르게 적응하지만 이전 데이터를 금방 잊는다.
    • 학습률이 낮으면 시스템의 관성이 더 커져 느리게 학습, 새로운 데이터에 있는 잡음이나 대표성 없는 데이터포인트에 덜 민감해진다.
  • 문제점: 시스템에 나쁜 데이터가 주입되었을 때 시스템 성능이 점점 감소된다.
    • 시스템과 입력 데이터를 모니터링하여 비정상 데이터를 잡아내거나 학습을 중지시켜야 한다.

사례 기반 학습과 모델 기반 학습

  • 어떻게 일반화 (generalize)되는지에 따라 분류한다.

사례기반학습 (instance-based learning)

  • 시스템이 훈련 샘플을 기억함으로써 학습한다.
  • 유사도 측정 (similarity measure)를 통해 새로운 데이터와 학습한 데이터 샘플을 비교하는 식으로 일반화 한다.

모델기반학습 (Model-based learning)

  • 샘플들의 모델을 만들어 예측 (prediction)에 사용한다.
    • Model selection, model parameter
    • Utility function (fitness function): 모델이 얼마나 좋은지 측정한다.
    • Cost function: 모델이 얼마나 나쁜지 측정한다.

일반적인 머신러닝 프로젝트의 형태

  • 데이터 분석 → 모델 선택 → 훈련데이터로 모델 훈련 → 새로운 데이터에 모델을 적용해 예측 (inference; 추론)

나쁜 데이터의 사례

  • 충분하지 않은 양의 훈련 데이터
    • 샘플이 작으면 sampling noise가 발생
  • 대표성 없는 훈련 데이터
    • sampling bias가 잘 발생
  • 낮은 품질의 데이터
    • error, outlier, noise가 많은 데이터라면 내재된 패턴을 찾기 어려워 잘 작동하지 않는다.
    • 데이터 정제가 필요한 경우
      • 일부 샘플이 이상치라는 게 명확하면 간단히 그것들을 무시하거나 수동으로 잘못된 것을 고치는 것이 좋다.
      • 일부 샘플에 특성 몇 개가 빠져있다면 이 특성을 모두 무시할지, 샘플을 무시할지, 빠진 값을 채울지, 특성을 넣은 모델과 제외한 모델을 따로 훈련시킬 것인지 결정해야 한다.
  • 관련 없는 특성
    • Garbage in, garbage out
    • Feature engineeering: 훈련에 사용할 좋은 특성들을 찾는 것
      • Feature selection: 가지고 있는 특성 중에서 훈련에 가장 유용한 특성을 선택한다
      • Feature extraction: 특성을 결합하여 더 유용한 특성을 만든다. (차원 축소도 도움이 될 수 있다)
      • 새로운 데이터를 수집해 새 특성을 만든다
  • 훈련 데이터 과대적합
    • Overfitting: 모델이 훈련데이터에 아주 잘 맞지만 일반성이 떨어진다.
      • 훈련 데이터에 있는 잡음의 양에 비해 모델이 너무 복잡할 때 발생
      • 해결방법
        • 파라미터 수가 적은 모델을 선택하거나, 훈련 데이터에 있는 특성 수를 줄이거나, 모델에 제약을 가하여 단순화시킨다
        • 훈련 데이터를 더 많이 모은다
        • 훈련 데이터의 잡음을 줄인다
    • Regularization: 모델을 단순하게 하고 과대적합의 위험을 감소시키기 위해 모델에 제약을 가하는 것
      • Degree of freedom
      • Hyperparameter: 학습하는 동안 젹용할 규제의 양을 결정
        • 학습 알고리즘의 파라미터
          • 학습 알고리즘으로부터 영향을 받지 않으며 훈련 전에 미리 지정되고, 훈련하는 동안에는 상수로 남아있다
        • 매우 큰 값으로 지정 (기울기가 0에 가까움) 거의 평평한 모델을 얻음
        • hyperparameter tuning은 매우 중요
  • 훈련 데이터 과소적합
    • Underfitting
      • 모델이 너무 단순해 데이터의 내재된 구조를 학습하지 못해 발생
      • 해결 방법
        • 모델 파라미터가 더 많은 강력한 모델을 선택
        • 학습 알고리즘에 더 좋은특성을 제공
        • 모델의 제약을 줄임

테스트와 검증

  • 모델이 새로운 샘플에 얼마나 잘 일반화될지 아는 유일한 방법은 새로운 샘플에 실제로 적용해 보는 것
  • 훈련 데이터를 훈련 세트와 테스트 세트 두개로 나누는 것
    • Generalization error (out-of-sample error): 새로운 샘플에 대한 오류 비율
    • 테스트 세트에서 모델을 평가함으로써 generalization error의 estimation을 얻음

하이퍼파라미터 튜닝과 모델 선택

  • Holdout validation: validation set (훈련세트의 일부)를 떼어내어 여러 후보모델을 평가하고 가장 좋은 하나를 선택한다.
    • 전체 훈련 세트에서 검증 세트를 떼어낸 데이터에서 다양한 하이퍼파라미터 값을 가진 여러 모델을 훈련한다.
    • 그 다음 검증 세트에서 가장 높은 성능을 내는 모델을 선택한다.
    • 이 모델을 전체 훈련 세트에서 다시 훈련해 최종 모델을 만든다.
    • 최종 모델을 테스트 세트에서 평가해 일반화 오차를 추정한다.
  • Cross-validation
    • 검증 세트마다 나머지 데이터에서 훈련한 모델을 해당 검증세트에서 평가한다.
    • 모든 모델의 평가를 평균하면 훨씬 정확한 성능을 측정할 수 있다.
    • 검증세트나 남은 훈련 세트가 너무 작은 경우 유용하다.
    • 훈련시간이 검증 세트의 개수에 비례해 늘어나는 단점이 있다.

데이터 불일치

  • 쉽게 많은 양의 훈련 데이터를 얻을 수 있지만, 이 데이터가 실제 제품에 사용될 데이터를 완벽하게 대표하지 못할 때 발생한다.
    • 검증세트와 테스트세트가 실전에서 기대하는 데이터를 가능한 한 잘 대표해야 한다.
    • Train-dev set: 훈련 데이터와 실제 데이터를 섞는다.
    • 훈련 세트에서 훈련해 훈련-개발 세트에서 평가한다
반응형

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

모두를 위한 머신러닝/딥러닝  (0) 2023.07.16
[DS] MacOS에 MySQL 설치 (M1)  (0) 2023.04.03
[DS] Missing data를 다루는 대표적인 방법들  (0) 2022.10.07