MachineLearning Basics

YU NA Joe·2022년 8월 17일

0817 ML 공부
목표?! - 새로운 샘플에 잘 작동하는 모델

머신러닝 정의

  • 컴퓨터가 학습하는 능력을 갖추게 하는 연구 분야
  • 어떤 작업 T에 대한 컴퓨터 프로그램 성능을 P로 측정했을 때 경험 E로 인해 성능이 향상됐다면,
    이 컴퓨터 프로그램은 작업 T와 성능 측정 P에 대해 경험 E로 학습한 것.

==============================================

머신러닝 용어 정리

  • 훈련 세트(training set): 시스템이 학습하는데 사용하는 샘플
  • 데이터 마이닝(data mining): 머신러닝 데이터를 분석하면 겉으로는 보이지 않던 패턴을 발견 하는 것

왜 머신러닝을 사용하는가?!

  • 기존 솔루션으로는 많은 수동 조정과 규칙이 필요한 문제: 하나의 머신러닝 모델이 코드를 간단하게 만들고, 전통적인 방법보다 더 잘 수행되도록 할 수 있다.

  • 전통적인 방식으로는 너무 복잡하거나 알려진 알고리즘이 없는 문제

  • 유동적인 환경==> 머신러닝 시스템은 새로운 데이터에 적응 할 수 있음

  • 복잡한 문제와 대량의 데이터에서 통찰 얻기

==============================================

머신러닝 시스템의 종류

  1. 사람의 감독하에 훈련하는 것인지 그렇지 않은 것인지(지도, 비지도, 준지도, 강화학습)

1-1) 지도학습 => 훈련 데이터에 레이블이라는 값도 포함
ex) 분류(classification), 회귀(regression)

회귀: 예측 변수(predictor vars), 즉 특성(feature)을 사용해 target 수치를 예측 하는 것.

대표적인 알고리즘: k-최근접 이웃(K-nearest neightbor), 선형회귀(linear regression), 로지스틱 회귀(logistic regression), 서포트 벡터 머신(SVM),
결정 트리(decision tree)와 랜덤 포레스트(random forest), 신경망(neural networks)

1-2) 비지도학습 => 훈련 데이터에 레이블값이 없음
ex) 군집, 이상치 탐지 & 특이치 탐지, 시각화와 & 차원축소 , 연관규칙 학습

1-3) 준지도학습 => 일부만 레이블이 있는 데이터 (지도 학습 + 비지도 학습 조합)

1-4) 강화학습 => 학습하는 시스템을 agent라고 부르며 환경을 관찰해서 행동을 실행하고 그 결과로 보상 또는 벌점을 받는다.

==============================================

2.입력 데이터의 스트림으로부터, 즉, 실시간으로 점진적인 학습을 하는지 아닌지(온라인 학습, 배치학습)

2-1) 배치학습 =>

2-2) 온라인학습 => 데이터를 순차적으로 한 개씩 또는 미니배치(mini batch)라 부르는 작은 묶음 단위로 주입하여 시스템을 훈련. 새로운 데이터가 들어오면 계속 학습
변화하는 데이터에 얼마나 빠르게 적응할 것인지? (학습률)
학습률을 높게하면? 낮게 하면?!

==============================================

  1. 훈련데이터셋에서 패턴을 발견하여 모델을 만드는 것인지?!
    단순하게 알고 있는 데이터 포인트와 새 데이터 포인트를 비교하는 것인지

3-1. 사례기반 학습 => 시스템이 훈련 샘플을 기억함으로써 학습, 그리고 유사도 측정을 사용해 새로운 데이터 데이터와 학습한 샘플을 비교하는 시으로 일반화

3-2. 모델기반 학습 => 샘플들의 모델을 만들어 예측에 사용하는 것

=============================================================================

ML의 주요 과제?!

=> 알맞은 알고리즘을 사용하여 알맞은 데이터를 훈련시키는 것. 따라서 나쁜 알고리즘과 나쁜 데이터를 be careful 해야 한다

  1. 나쁜 데이터
    1-1) 충분하지 않은 양으 훈련 데이터

1-2) 대표성 없는 훈련 데이터

1-3) 낮음 품질의 데이터

1-4) 관련 없는 특성 (garbage in, garbage out)
==> 훈련 데이터에 관련없는 특성이 적고, 관련이 있는 특성이 충분해야 한다.
==> 특성 선택(feature selection): 가지고 있는 특성 중에서 훈련에 가장 유용한 특성을 선택
==> 특성 추출(feature extraction): 특성을 결합하여 더 유용한 특성을 만든다.

1-5) 훈련 데이터 과대 적합
==> 모델이 훈련 데이터에 너무 잘 맞으면 일반성이 떨어질 수 있다.
==> 과대 적합의 위험을 감소시키기 위해 모델에 제약을 가하는 것을 규제(regulzation)이라고 한다.
==> 학습하는 동안 규제의 양은 하이퍼파라미터(hyperparameter)가 결정한다.

cf. 하이퍼파라미터란?!

  • 모델이 아니라 학습 알고리즘 파라미터. 그래서 학습 알고리즘으로부터 영향을 받지 않으며 훈련 전에 미리 지정되고 훈련하는 동안에는 상수로 남아 있다.
    만약 하이퍼 파라미터를 크게(=기울기,0) 하면은 거의 평편한 모델을 얻게 된다.
    그러면 overfitting 될 가능성은 거의 없지만, 좋은 모델을 찾지 못하게 된다.

1-6) 훈련 데이터 과소 적합

  • 과대적합의 반대말. 모델이 너무 단순해서 데이터의 내재된 구조를 학습하지 못할 때 일어넌더,

cf. how to solve it?!

  • 모델 파라미터가 더 많은 강력한 모델을 선택
  • 학습 알고리즘에 더 좋은 특성을 제공
  • 모델의 제약을 줄인다(예를 들어, 규제 하이퍼파라미터를 감소시킨다)
  1. 나쁜 알고리즘

============================================================================

테스트와 검증

  • 모델을 학습시켰다 해서 새로운 샘플에 일반화되길 그냥 바라기만 해서는 안된다. 모델을 평가하고, 필요하면 상세하게 튜닝해야 한다.

1) 새로운 데이터에 얼마나 잘 일반화될지는 실제로 적용해 보는 것이다.
2) 또는 훈련 데이터를 훈련 세트와 테스트 세트 두 개로 나누어, 훈련 데이터로 training을 하고 테스트 데이터로 test를 한다..

** 새로운 샘플에 대한 오류 비율을 일반화 오차(generalization error)라 한다.

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

  • 모델 평가는 is simple! => 테스트 세트를 사용.
  • 그런데 training, test과 나누고 모델을 test 용도에 여러번 하다보면은,
    모델과 하이퍼 파라미터가 테스트 세트에 최적화된 모델을을 만든다. 결국엔, 과대적합(overfitting)한 모델이 되고 새로운 데이터에 잘 작동되지 않는다.

cf. How to solve it?!

  • 일반적인 해결방법은 홀드아웃 검증(Holdout 검증)이다.

LETS'S START THE PROJECT

  1. 문제 정의
  • 비즈니스의 목적이 정확히 무엇인가요?
    (모델을 어떻게 사용해 이익을 얻으려고 할까?!)

  • 솔루션이 있다면, 현재 솔루션은 어떻게 구성되어 있나요?!

cf. 파이프라인?!

ex) 레이블이 된 훈련 샘플(지도학습), 값을 예측(회귀문제), 예측에 사용할 특성이 여러개 (다중회귀, multiple regression), 각 구역마다 하나의 값을 예측(단변량 회귀, univarie regression), 만약 각 구역마다 여러개의 갮을 예측(다변량 회귀, multivariate regression)

  1. 성능지표선택
  • 평균제곱근오차(RSME, root mean squre error)
  • 평균절대오차(MAE, mean absolute error)

0개의 댓글