laon

[쉽게읽는 머신러닝-라온피플] 2. 머신러닝의 학습방법

  • By Diominor, 백승열
  • 23 Jan 2019
  • Tags : laon



지난 포스트에는 머신러닝의 framework에 대해서 알아보았습니다.
[쉽게읽는 머신러닝-라온피플] 1. 머신러닝 framework
오늘은 머신러닝의 학습방법과 몇 가지 종류의 머신러닝 모델(Boosting and Bagging)에 대해서 알아보겠습니다!


그럼, 가 봅시다!!


1. 머신 러닝의 학습 방법


먼저, 머신 러닝 알고리즘의 종류는 매우 다양하고 여러 카테고리로 나뉩니다.

다양한 종류의 ML알고리즘

머신 러닝 알고리즘의 분류


  • 지도 학습(Supervised Learning) :

    • 주어진 입력에 대해 어떤 결과가 나올지 알고 있는 학습 데이터를 이용해, 데이터를 해석할 수 있는 모델을 만들고 그것을 바탕으로 새로운 데이터를 추정하는 방법입니다.

    • 모델 f를 결정하기 위해 많은 변수들을 풀어야 하는데, 변수의 수가 너무 많게 되면 대수(algebra)를 이용해 풀어내는 것이 불가능 합니다. 따라서 수치해석(numerical analysis) 방법으로 최적값을 찾아가는 과정을 반복적으로 수행합니다.

  • 자율 학습(Un-supervised Learning) :

    • 학습 데이터에 대한 기대값이 붙어 있지 않기 때문에, 학습 알고리즘을 통해 학습 데이터 속에 있는 어떤 패턴이나 숨어 있는 중요한 핵심 컨셉을 찾아서 학습하는 것입니다.

    • 특정 가이드가 없기 때문에 기대했던 것과 다른 결과가 나올 수도 있습니다.

  • 강화 학습(Reinforcement Learning) :

    • 훈련을 잘 따르면 ‘상(reward)’을 주고, 그렇지 못하면 ‘벌(punishment)’을 주며, 상과 벌을 통해 훈련의 감독관이 원하는 방향으로 학습을 하게 됩니다.



2. Boosting


무작위로 선택하는 것보다 약간 가능성이 높은 규칙(weak learner)들을 결합시켜 보다 정확한 예측 모델을 만들어 내는 것입니다.

(Weak learner : 무작위로 선정하는 것보다는 성공 확률이 높은, 즉 오차율이 50% 이하인 학습 규칙)

Boosting 학습 방법


매번 기본 러닝 알고리즘을 적용할 때 마다 새로운 Weak learner를 만들며, 이 과정을 반복적으로 수행합니다.

이 Weak learners를 하나로 모아서 Strong learner를 만듭니다.

Boosting1

Weak learner를 이용해 학습을 하면서 에러가 발생하면, 그 에러에 좀 더 집중하기 위해 error에 대한 weight를 올리고, 그 에러를 잘 처리하는 방향으로 새로운 Weak learner를 학습시킵니다.

최종 결과는

Boosting2

과 같이 표현되며, 여기서 αt는 가중치입니다.

Boosting은 새로운 Learner를 학습할 때마다 이전 결과를 참조하는 방식이며, 이것이 뒤에 나올 Bagging과 다른 점입니다.

최종적으로 Weak learner로부터의 출력을 결합하여 더 좋은 예측율을 갖는 Strong learner가 만들어 집니다.

3. Bagging (Bootstrap Aggregating)


Bootstrapping


먼저 표본을 취하고, 그 표본에 대한 분포를 구합니다. 그리고 나서 표본을 전체라고 생각하고, 표본으로부터 많은 횟수에 걸쳐(동일한 개수의) 샘플을 복원 추출(Resample with replacement)한 후 각 샘플에 대한 분포를 구합니다.

그 후 전체 표본의 분포와 샘플들 간의 분포의 관계를 통해, 전체 집단의 분포를 유추하는 방식입니다.

Regression의 경우는 평균(model averaging)을 취해 분산(variance)를 줄이는 효과를 얻을 수 있고, 분류(classification)에서는 투표 효과(voting)을 통해 가장 많은 결과가 나오는 것을 취하는 방식을 사용합니다.

Bagging의 예 -위키피디아

Bagging을 적용하면 안되는 경우


  • 표본 데이터가 작은 경우 :

    표본 데이터가 전체 데이터를 잘 반영하지 못합니다.

  • 데이터에 잡음이 많은 경우 :

    특이점(outlier)이 추정을 크게 왜곡시킬 가능성이 있습니다.

  • 데이터에 의존성이 있는 경우 :

    기본적으로 Bootstrapping은 데이터가 독립적인 경우를 가정합니다.

Bagging과 Boosting의 차이


  1. Bagging은 독립적으로 weak learner를 생성하는데 반해 Boosting은 모든 데이터를 순차적으로 처리하며, 에러가 발생하면 그 에러의 weight를 올리기 때문에 현재의 Weak learner가 이전 Weak learner의 영향을 받습니다.

  2. Boosting은 최종적으로 weighted vote을 하지만, Bagging은 단순 vote을 합니다.

  3. 배깅은 분산(variance)을 줄이는 것 (과적합을 벗어나는 것), 부스팅은 편향(bias)을 줄이는 것(과소적합을 벗어나는 것)이 주 목적입니다.

  4. Bagging은 Overfitting문제를 해결할 수있지만, Boosting은 Overfitting의 문제로부터 자유롭지 못합니다.



(Bagging과 Boosting에 대해서는 추후에 Hands-on Machine learning 책을 정리할 때 더 자세히 다루겠 습니다.)





출처 : 쉽게 읽는 머신 러닝 - 라온피플