본문 바로가기

Study/Hands-On Machine Learning

[Book] 3. 분류

Book Title : Hands-On Machine Learning with Scikit-Learn, Keras & TF

지은이 : 오렐리앙 제롱

옮긴이 : 박해선

출판사 : 한빛미디어

코드 출처

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

 

GitHub - rickiepark/handson-ml2: 핸즈온 머신러닝 2/E의 주피터 노트북

핸즈온 머신러닝 2/E의 주피터 노트북. Contribute to rickiepark/handson-ml2 development by creating an account on GitHub.

github.com

3. 분류

책에서는 Mnist 데이터셋을 이용한 이중/다중 분류와 성능 평가를 해보지만 포스팅에서는 OvO와 OvR의 차이점을 간단하게 포스팅합니다.

이진 분류 알고리즘을 사용해 다중 분류가 가능한가?

  • 가능합니다.
  • 데이터 세트르를 여러 이진 분류 데이터 세트로 분할하고 각각에 모델을 맞추는 것인데, 대표적인 접근 방식에는 일대일 전략, 일대다 전략입니다

이진 분류 알고리즘을 통한 다중 분류 전략

1. OvR(One-Vs-Rest) : 일대다 전략
  • One-vs-All이라고도 불림
  • 말 그대로 한 개의 클래스와 나머지 클래스를 이진 분류기에 학습시키는 것인데 예를 들어 설명하겠습니다.
  • 클래스 'a', b', 'c'가 있는 경우 아래와 같이 나눠서 학습합니다.
  1. 1번 이진 분류 알고리즘 : 'a' vs  'b' , 'c'
  2. 2번 이진 분류 알고리즘 : 'b' vs 'a', 'c'
  3. 3번 이진 분류 알고리즘 : 'c' vs 'a', 'b'
  • 각각의 이진 알고리즘이 클래스 예측을 확률로 하게 되어서 가장 높은 확률을 갖는 클래스를 최종 예측으로 선정합니다
  • 클래스의 개수만큼 분류기를 생성해야 합니다.

2. OvO(One-vs-One) : 일대일 전략
  • 말 그대로 한 개의 클래스와 다른 한개의 클래스를 이진 분류기에 학습시키는 것인데 예를 들어 설명하겠습니다.
  • 클래스 'a', b', 'c' , 'd'가 있는 경우 아래와 같이 나눠서 학습합니다.
  1. 1번 이진 분류 알고리즘 : 'a' vs  'b'
  2. 2번 이진 분류 알고리즘 : 'a' vs  'c'
  3. 3번 이진 분류 알고리즘 : 'a' vs 'd'
  4. 4번 이진 분류 알고리즘 : 'b' vs 'c'
  5. 5번 이진 분류 알고리즘 : 'b' vs 'd'
  6. 6번 이진 분류 알고리즘 : 'c' vs 'd'
  • 이것도 OvO전략과 마찬가지로 각 분류기는 확률로 예측을 하게 됩니다. 모든 분류기의 확률을 다 더해서 확률이 가장 높은 클래스를 최종 예측으로 선정합니다.
  • 모델이 많이 만들어지는 단점이 있습니다. (모델 수 : (classes * (classes - 1)) / 2)