JINWOOJUNG

[ 핸즈온 머신러닝 ] 1-1. 한눈에 보는 머신러닝 본문

핸즈온머신러닝

[ 핸즈온 머신러닝 ] 1-1. 한눈에 보는 머신러닝

Jinu_01 2024. 8. 17. 15:57
728x90
반응형

본 포스팅은 Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow 2판을 토대로

공부한 내용을 정리하기 위한 포스팅입니다. 

해당 도서에 나오는 Source Code 및 자료는 GitHub를 참조하여 진행하였습니다.

https://github.com/ageron/handson-ml2

 

GitHub - ageron/handson-ml2: A series of Jupyter notebooks that walk you through the fundamentals of Machine Learning and Deep L

A series of Jupyter notebooks that walk you through the fundamentals of Machine Learning and Deep Learning in Python using Scikit-Learn, Keras and TensorFlow 2. - ageron/handson-ml2

github.com


머신러닝

머신러닝은 명시적인 프로그래밍 없이 컴퓨터가 학습하는 능력을 갖추게 하는 연구 분야로 정의된다. 이때, 시스템이 학습하는데 사용되는 샘플을 훈련 세트(Training Set)라 하고, 각각의 훈련 데이터를 훈련 사례(Training Instance)이라 한다. 훈련 데이터를 기반으로 학습된 시스템의 성능을 측정하는 방법은 직접 정의해야 하는데, 분류 작업의 경우 정확도(Accuracy)가 주로 사용된다.

 

머신러닝이 아니더라도 머신러닝이 수행하는 Task를 프로그래밍을 통해 진행할 수 있다. 하지만 이를 수행함에 있어서 좋은 성능을 위해선 규칙이 점점 길고 복잡해지기에 유지 보수가 힘들다. 하지만 머신러닝을 사용하면 훈련 데이터를 기반으로 자주 나타나는 패틴(Feature)을 감지하여 자동으로 학습하여 Task를 수행하게 된다. 따라서 더 높은 정확도를 지님과 동시에 프로그램이 훨씬 짧아지고 유지 보수에 용이하다.

 

또한, 머신러닝 알고리즘이 학습한 것을 조사할 수 있다. 데이터 마이닝이라고 불리는 분석방법은, 머신러닝 기술을 적용해서 대용량의 데이터를 분석 함으로써 겉으로는 보이지 않던 패턴을 발견하는 방법이다.


머신러닝 시스템의 종류

지도 학습(Supervised Learning)

시스템이 학습하는 훈련 세트의 데이터에 레이블(정답)이 포함된 학습방법

 

  • 분류(Classification)
  • 회귀(Regression) : 예측 변수(Predictor Variable)라고 불리는 특성을 기반으로 Target 수치를 예측
  • 로지스틱 회귀(Logistic Regression) : 레이블에 속할 확률을 예측
  • ...

 

비지도 학습(Unsupervised Learning)

시스템이 학습하는 훈련 세트의 데이터에 레이블(정답)이 없는 학습방법

 

  • 군집화(Clustering)
  • 특성 추출(Feature Extraction)
  • 이상치 탐색(Outlier Detection)
  • ...

 

준지도 학습(Semisupervised Learning)

시스템이 학습하는 훈련 세트의 데이터 중 일부만 레이블이 있는 학습방법

대부분의 준지도 학습의 경우 지도 학습과 비지도 학습의 조합으로 이루어진다.

 

  • 심층 신뢰 신경망(Deep Belief Network, DBN) : 제한된 볼츠만 머신(Restricted Boltzmann Machine, RBM)이 비지도 학습 방식으로 순차적으로 훈련된 다음 전체 시스템이 지도 학습 방식으로 세밀하게 조정 됨.
  • ...

 

강화 학습(Reinforcement Learning)

에이전트(학습하는 시스템)이 환경(Environment)을 관찰하여 행동(Action)하고, 그 결과로 보상(Reward)를 받고, 최적의 보상을 얻기 위해 정책(Policy)를 스스로 학습한다. 여기서 Policy는 주어진 상황에서 에이전트가 어떤 행동을 선택하는지 결정하는 근거이다.


 

배치 학습(Batch Laerning)

시스템이 점진적으로 학습하는 것이 아닌 주어진 데이터를 모두 사용하여 훈련하는 방법. 훈련 셋트를 이용하여 시스템을 우선적으로 학습시킨 후 더 이상의 학습 없이 적용만 하는 오프라인 학습(Offline Learning).

 

온라인 학습(Online Learning)

데이터를 순차적으로 미니배치(Mini-Batch)의 작은 단위로 주입하여 시스템을 학습시키는 방법. 매 학습 단계가 빠르고 비용이 적으며, 새로운 데이터가 도착하는 즉시 학습하기에 빠른 변화에 적응해야 하는 시스템에 적합한 학습 방법. 

 

새로운 데이터 샘플을 학습하면, 이전에 학습이 끝난 데이터는 필요하지 않으면 버리게 된다. 따라서 변화하는 데이터에 얼마나 빠르게 적응하는지 결정하는 학습률(Learning Rate)이 중요하다.

 

학습률이 높은면 시스템에 바르게 적응하지만, 과거 데이터를 빠르게 잊어버린다. 학습률이 낮으면 시스템의 관성이 더 커져서 느리게 학습되지만, 새로운 데이터에 존재하는 잡음, 않좋은 데이터에 덜 민감해진다.

 


 

머신러닝 시스템은 주어진 훈련 데이터로 학습하고, 훈련 데이터에 없는 새로운 데이터에서 좋은 예측(혹은 각 상황에 맞는 Task)를 수행해야 한다. 즉 일반화(Generalize)되어야 한다.

 

사례 기반 학습

시스템이 훈련 샘플을 기억함으로써 학습하고, 유사도(Similarity)를 기반으로 새로운 데이터와 학습한 샘플을 비교함으로써 일반화한다. 

 

모델 기반 학습

훈련 샘플을 기반으로 모델을 만들어 예측(Predeiciton)하는 방법.

 

주어진 데이터를 보면, 1인당 GDP와 삶의 만족도는 선형적인 경향성을 보임을 알 수 있다. 따라서 직관적으로 선형 모델로 모델링 할 수 있다. 

 

$$ 삶의만족도 = \theta_0 + \theta_1 \times 1인당GDP"$$

 

해당 모델은 2개의 모델 파라미터(Model Parameter) $\theta_0, \theta_1를 가진다. 이 모델 파라미터를 조절 함으로써 다양한 모델이 정의되는데, 그 중 최적의 모델을 선정해야 한다. 모델의 성능을 측정하는 지표는 모델이 얼마나 좋은지를 측정하는 효용 함수(Utility Function), 모델이 얼마나 나쁜지 측정하는 비용 함수(Cost Function)으로 정의할 수 있다. 

 

일반적으로 선형 모델에서는 훈련 데이터와 선형 모델의 예측의 거리를 측정하는 비용 함수를 사용하고, 이를 최소화 하는 것을 목표로 한다. 이를 위해 훈련 데이터가 주어지면, 데이터에 가장 잘 맞는 선형 모델의 파라미터를 찾는 학습(Train)이 진행되고, 선형 모델의 경우 선형 회귀(Linear Regression) 알고리즘을 기반으로 모델이 학습된다.

 


 

머신러닝 시스템을 학습시키기 위해선 좋은 데이터와 알고리즘이 요구된다. 나쁜 데이터와 알고리즘을 알아보고, 머신러닝 시스템의 성능 향상을 위해서 고수해야 할 방향성을 생각 해 보자.

 

나쁜 데이터

충분하지 않은 양의 훈련 데이터

머신러닝 시스템의 성능 향상을 위해서는 충분히 많은 양의 훈련 데이터가 요구되지만, 방대한 양의 훈련 데이터를 모으는 것은 쉬운 일은 아니다.

 

대표성 없는 훈련 데이터

머신러닝 시스템의 일반화를 위해서는 훈련 데이터가 훈련 데이터에 없는 사례를 잘 대표해야 한다. 대표성이 없는 데이터를 기반으로 학습된 모델은 새로운 사례(데이터)가 주어졌을 때 예측의 정확성이 매우 낮아진다. 따라서 훈련 세트를 잘 구성하는 것이 중요한데, 훈련 샘플이 작으면 샘플링 잡음(Sampling Noise)가 발생하고, 잘못 취득된 방대한 양의 훈련 세트는 대표성을 띄지 못하여 샘플링 편향(Sampling Bias)을 발생시킨다.

 

낮은 품질의 데이터

훈련 데이터에 에러, 이상치, 잡음 등이 섞여있다면, 시스템이 훈련 세트의 패턴(Feature)를 찾기 힘들어 성능이 좋을 수 없다. 따라서 훈련 세트를 정제하는 과정도 매우 중요하다.

 

관련 없는 특성

훈련 데이터에 관련 있는 특성이 충분해야 시스템이 학습할 수 있다. 따라서 특성 공학(Feature Engineering)을 통해 훈련에 사용할 좋은 특성을 찾는다.

 

나쁜 알고리즘

훈련 데이터 과대적합(Overfitting)

모델이 훈련 데이터에 너무 잘 맞아서 일반성이 떨어지는 상황. 

 

앞서 선형적인 모델을 선정한 반면, 이처럼 고차원의 다항 회귀 모델로 선정하게 된다면 훈련 데이터에 과적화될 수 있다. 간단한 선형 모델보다 훈련 데이터에 더 잘 맞지만, 일반화에서 떨어지므로 성능이 좋다고 판단할 수 없다.

 

따라서 모델을 단순하게 하고 Overfitting을 방지하기 위해 모델에 제약을 가하는 규제(Regularization)를 하게된다. 

 

$$ 삶의만족도 = \theta_0 + \theta_1 \times 1인당GDP"$$

 

앞서 정의한 선형 모델의 경우 2개의 모델 파라미더 $\theta_0, \theta_1$가 존재한다. 즉, 모델은 2개의 자유도(Degree of Freedom)를 가지게 된다. 따라서 우리는 학습 과정에서 2개의 모델 파라미터에 규제를 적용할 수 있고, 이를 통해 데이터에 완벽히 맞추면서 일반화를 위해 단순한 모델을 유지할 수 있다. 

 

이러한 규제의 양(정도)는 하이퍼파라미터(HyperParameter)가 결정한다. 하이퍼파라미터는 학습 알고리즘의 파라미터로써, 사전에 미리 정의되기에 하이퍼파라미터 튜닝은 매우 중요한 과정이 된다.

 

훈련 데이터 과소적합(Underfitting)

Overfitting과 반대로 과소적합은 모델이 너무 단순하여 데이터의 내재된 구조를 학습하지 못하는 상황.

 


 

모델의 일반화는 새로운 샘플에 실제로 적용 해 봄으로써 확인하는 방법이 있지만, 훈련 과정에서 일반화 된 모델로 훈련시키기 위해 훈련 데이터를 훈련 세트테스트 세트로 나눈다. 훈련 세트를 사용하여 훈련된 모델은 테스트 세트를 통해 검증되고, 이때 발생한 새로운 샘플에 대한 오류 비율인 일반화 오차(Generalization Error)의 추정값을 통해 모델의 Overfitting을 방지한다.

 

하지만, 훈련 과정에서 모델은 테스트 세트를 기준으로 일반화 오차가 측정되었기에, 테스트 세트에 Overfitting 될 수 있다. 이는 일반적으로 홀드아웃 검증(Holdout Validation)을 통해 해결한다. 훈련 세트의 일부를 검증 세트로 분리하고, 검증 세트를 제외한 훈련 세트로 다양한 하이퍼파라미터 값을 가진 모델을 훈련한다. 이후 검증 세트를 기반으로 최적의 성능을 가지는 모델을 선택하게 된다. 홀드아웃 검증 과정이 종료되면, 최적의 모델을 검증 세트가 포함된 훈련 세트로 다시 훈련하여 최종 모델을 만들고 테스트 세트에서 평가하여 일반화 오차를 추정한다. 

 

하지만 이 방법 역시 검증 세트가 너무 작으면 모델이 정확하게 평가되지 않기에, 검증 세트를 여러 개를 사용하여 반복적인 교차 검증을 수행한다. 

728x90
반응형