머신러닝이란?

데이터로 부터 학습되도록 컴퓨터를 통해 프로그래밍하는 과학분야로, 성과 목표를 가지고 있을 때, 목표와 관련된 성능을 높힐 수 있도록 경험데이터를 기반으로 모델을 학습시키는 것입니다.

  •  간단한 코드로도 더 효과적으로 수행하게 할 수 있어, 많은 수동 조정과 규칙이 필요한 문제에 적합합니다.
  • 가장 뛰어난 머신러닝 기법으로 해결방법을 찾을 수 있어, 전통적인 방식으로 해결 방법을 찾기 어려운 복잡한 문제에 적합합니다
  • 새로운 데이터에 빠르게 적응하는 유동적인 환경을 가지고 있습니다
  • 복잡한 문제, 대량의 데이터에서 통찰을 얻을 수 있습니다.

 

 머신러닝의 핵심 도전 과제 

  • 충분하지 않은 양의 데이터
    • 인공지능의 경우, 아주 간단한 문제에서 조차 데이터가 최소 수천개 이상 필요합니다.
  • 대표성이 없는 데이터
    • 일반화가 잘되도록 학습하려면 새로운 사례가 존재할 떄 학습데이터가 이를 잘 대표할 수 있어야 합니다.
    • 대표성이 없는 데이터는 새로운 사례 데이터가 추가되어도 모델이 유의미하게 작동하지 않습니다
    • sampling noise - 샘플이 적을 때
    • sampling bias - 샘플이 많을 때
  • 낮은 품질의 데이터
    • 에러, 이상치, 잡음으로 가득한 데이터는 머신러닝 시스템이 내재된 패턴을 찾기 어려워 데이터 정제에 많은 시간을 소요하게 됩니다.
  • 관련없는 변수
    • 타겟 변수와 관련성이 높은 변수들을 찾아내는 변수공학(feature engineering)이 필요합니다.
    • 변수공학
      • 변수 선택 : 가지고 있는 학습 변수 중 가장 유용한 변수 선택
      • 변수 추출 : 가지고 있는 학습 변수들을 결합하여 더 유용한 변수 생성
      • 새로운 파생 변수 생성
  • 데이터 과대적합
    • 과도하게 일반화하는 복잡한 모델을 만들 경우, 학습 때는 정답을 잘 맞추지만, 새로운 데이터를 입력했을 때 그 예측의 정확도를 믿기 힘듭니다
    • 규제를 통해 과대적합 위험을 감소시킬 수 있습니다.
  • 데이터 과소적합
    • 모델이 너무 단순해서 데이터의 내재 구조를 파악하기 힘든 상태입니다
    • 모델 파라미터가 더 많은 복잡한 모델을 사용하거나, 더 좋은 변수를 활용하고 모델의 제약을 줄이는 방법으로 해결할 수 있습니다.

 

 머신러닝 시스템 종류 구분 

[ 사람의 감독하에 프로그램 훈련하는 지 여부 ]

  • 학습 동안 사람이 감독(labeling)하는 가?
    • 지도/비지도/준지도 학습 vs 강화학습
  • 감독된(labeling된) 정보량에 따른 분류
    • 지도학습 vs 비지도학습 vs 준지도학습

# 지도학습 (Supervised Learning)

훈련데이터에 레이블(label)이라는 원하는 답이 존재하는 학습방법입니다.
  • 분류(Classification)
  • 회귀(Regression) : 설명 변수를 통해 타겟의 수치를 예측
  • 종류
    • KNN (K Nearest Neighbor)
    • Linear Regression
    • Logistic Regression
    • SVM (Support Vector Machine)
    • Decision Tree/ Random Forest
    • Gradient Boosting Algorithms
    • Neural Network

# 비지도학습(Unsupervised Learning)

훈련데이터에 레이블이 없는 학습 방법입니다.
  • 군집 (Clustering) : 데이터 특성 기반으로 비슷한 그룹으로 세분화
    • 대표 알고리즘
      • K Means
      • DBSCAN
      • 계층군집분석(Hierarchical Cluster Analysis:HCA)
  • 이상치/특이치 탐지 (Anomaly/Novelty Detection)
    • 이상치 탐지 : 새로운 데이터에서 정상적이지 않은 데이터 탐지 ex) 신용카드 부정거래 탐지, 제조 결함 탐지
    • 특이치 탐지 : 훈련세트 샘플들과 달라보이는 새로운 데이터 탐지
    • 대표 알고리즘
      • One-class SVM
      • Isolation Forest
  • 시각화 (Visualization) & 차원축소 (Demension Reduction)
    • 데이터 특성기반 n차원의 데이터 특성을 최대한 보존하며, 낮은 차원의 데이터로 군집화가 잘되도록 변환합니다.
    • 시각화를 위한 경우 n차원에서 시각화가 가능한 2차원으로 축소 변환합니다.
    • 대표 알고리즘
      • 주성분분석 (Principal Component Analysis:PCA)
      • 커널 PCA (Kernel PCA)
      • 지역적 선형 임베딩 (Locally Linear Embedding:LLE)
      • T-SNE (T-distributed Stochastic Neighbor Embedding)
  • 연관 규칙 학습 (Association Rule Learning)
    • 대량의 데이터에서 특성 간의 유의미한 관계를 찾는 학습방법
    • 대표 알고리즘
      • 어프라이어리 (Apriori)
      • 이클랫 (Eclat)

# 준지도학습 (Semisupervised Learning)

일반적으로 labeling에 시간과 비용이 많이 들기 때문에 데이터 중 labeling한 데이터가 적은 경우가 많을 때 활용되는 학습방법입니다.
  • 대표 알고리즘
    • 심층 신뢰 신경망 (Deep Belief Networks:DBN) : 제한된 볼츠만 머신 (Restricted Boltzmaann Machine:RBM) 알고리즘 기반으로 순차적 학습하고, 지도학습으로 세밀하게 추가 조정하는 모형

# 강화학습 (Reinforcement Learning)

지도/비지도/준지도 학습과 매우다른 종류의 알고리즘으로, 에이전트(Agent)가 환경(Environment)를 관찰해서 행동(Action)하고, 그 결과로 보상(Reward) 혹은 벌점(Penalty)을 얻어서, 가장 큰 보상을 얻기위한 최상의 전략인 정책(Policy)를 스스로 학습하는 방법

 

[ 입력데이터의 stream부터(실시간으로) 점진적인 학습을 하는지 여부 ]

# 배치 학습 (Batch Learning)

  • 가용한 데이터를 모두 사용해 훈련하는 방법으로 시스템이 점진적인 학습이 불가능 합니다
  • 시간과 자원을 많이 소모하게 되어, 일반적으로 오프라인에서 수행됩니다. (Offline Learning이라고도 함)

# 온라인 학습 (Online Learning)

  • 데이터를 순차적으로 한 개 혹은 여러 개를 하나의 작은 묶음 단위인 미니배치로 주입하여 학습시키는 방법
  • 시간과 비용이 적게 들어 데이터가 들어오는 즉시 실시간으로 학습 가능합니다.
  • 외부 메모리를 활용하는 실시간 학습이 아닌 경우, Online Learning보다 Incremental Learning으로 보는 것이 적합합니다. 즉, 서비스에 적용이 되면서 동시에 학습까지 진행되면 Online Learning, 서비스에 적용되는 모델이 따로 있고 다른 서버에서 학습이 이루어져 나중에 서비스에 업데이트되면 Incremental Learning으로 보는 것이 적합합니다
  • (문제점) 시스템에 나쁜 데이터가 주입되었을 때, 시스템 성능이 점진적으로 감소하게 됩니다.
    • 해결방안
      • 면밀한 시스템 모니터링을 진행하여 해결합니다
      • 성능 모니터링을 통해 성능 감소가 탐지되면, 학습이 중지되도록 하며 이전 운영 상태로 변경합니다.
      • 데이터 모니터링을 통해 비정상 데이터를 탐지합니다 (이상 탐지 알고리즘 활용)

 

[ 시스템이 어떻게 일반화되는지 여부 ] 

기존의 데이터와 새로운 데이터를 간단히 비교 분석하는 것인지 훈련 데이터 셋으로 부터 패턴을 발견하여 예측모델을 만드는 지 여부에 따라 분류됩니다.

# 사례 기반 학습

  • 단순히 예측하고자 하는 Target(0.1)에 대한 Modeling 변수들 기반 통계적인 기준을 선정하고, 유사도 기반으로 0,1 중 더 가까운 Target 예측

# 모델 기반 학습

  • 예측하고자 하는 Target(0,1)에 대한 Modeling 변수들을 기반으로 모델을 학습한 후, 모델 기반으로 0,1 중 더 가까운 Target 예측

 

 학습 이후 테스트와 검증 절차 

[ 모델이 새로운 샘플에 얼마나 잘 들어맞는지 가장 간단히 확인하는 법 ]

  • 실제 비즈니스에서 활용중인 서비스에 도입 후 잘 작동하는지 모니터링하는 것
  • (문제점) 모델의 성능이 나쁘면 고객으로부터 불만사항이 발생하게 됩니다.

[ 사전 선행시 더 좋은 방법 ]

  • 훈련데이터를 처음부터 훈련세트와 테스트 세트로 나누는 것 ( 즉, 처음부터 새로운 샘플을 가정하여 테스트 세트로 분리 하여 구성)
  • 훈련 세트를 사용해 모델을 훈련하고, 테스트 세트를 사용해 모델을 테스트합니다
  • 새로운 샘플에 대한 오류 비율(일반화 오차 혹은 외부 샘플 오차)

[ 하이퍼파라미터 튜닝 및 모델 선택 ] 

  • 테스트 데이터 기반의ㅘ 모델 평가란?
    • 학습 데이터와 테스트 데이터로 나누어서 학습 데이터는 학습에만 사용, 테스트 데이터를 기반으로 모델을 테스트
    • 예측 결과와 실제 결과에 대한 오차(Generalization Error)를 기반으로, 학습데이터에서는 오차가 적고, 테스트 데이터에서는 오차가 크다면, 결국 과대적합이 이루어졌다는 평가가 이루어질 수 있다.
  • 과대적합 줄이기 위한 하이퍼파라미터 튜닝
    • 규제를 적용
    • 하이퍼파라미터 튜닝을 100개 이상의 경우의 수로 들리는 방법 적용
  • 실제 서비스에서 문제가 되는 경우
    • 튜닝 이후 테스트 데이터로 최적이 오차(5%)를 찾았지만, 여전히 새로운 데이터로서는 오차(15%)가 큰 경우 발생 (과대적합 여전히 존재)
  • 홀드아웃 검증 (Holdout Validation)
    • 학습데이터에서 일부 검증 데이터 세트(Validation Set/Holdout Set)를 활용
    • 여러 모델을 학습시키고 검증 세트에서 먼저 최상의 성능을 내는 모델 및 하이퍼파라미터 선택
    • 최종적으로, 검증 데이터 세트를 포함해서 다시 학습한 후, 최종적으로 단 한번의 최종테스트 진행
    • 하지만, 모델 및 하이퍼파라미터 선정 시 모든 학습데이터가 학습에 쓰이지 않아서 아쉬움 존재
  • 교차 검증 (Cross Validation)
    • 학습데이터를 여러 서브셋으로 나누어서 다양한 조합 기반 학습 및 검증 진행
    • 최종적으로는 학습 데이터셋 전체로 학습을 해서 테스트 세트에서 오차 측정
  • 데이터 불일치 문제
    • 분포의 차이 : 학습 데이터셋의 독립변수 vs 테스트 데이터셋의 독립변수

 

# 추천 진행 순서

  1. 학습 데이터와 테스트 데이터의 분포가 동일한지 여부를 파악한다
  2. 활용할 모델 알고리즘들을 정한다
  3. Hyperparameter Tuning Case를 정의한다
  4. Cross Validation기반 학습을 진행한다 (모든 학습 데이터를 학습과 검증에 다 활용)
  5. 유의미한 결과가 나오는 알고리즘 및 Hyperparameter Case를 기반으로 학습 데이터 전체를 학습한다
  6. 테스트 결과를 확인한다.

 

 

 

 

 


 

'AI > Machine Learning' 카테고리의 다른 글

Logistic Regression (로지스틱 회귀)  (0) 2022.12.06
Regression (회귀 모형)  (0) 2022.12.03
Classification Evaluation(분류 모형 평가)  (0) 2022.11.24
ML Process Overview  (0) 2022.11.21
Ensemble (앙상블)  (0) 2022.11.07

+ Recent posts