Machine Learning

[AI class w8d2] ML 기초 - 분류문제 실습

makeitworth 2021. 6. 18. 22:07

확률적 식별 모델

  • 다중클래스 로지스틱 회귀
  • 우도함수 소프트맥스, 시그모이드의 함수들 사이의 관계를 잘 기억할것
    체인룰을 쓰기 위해 함수관계를 잘 이해해야 한다.
  • Gradient Descent(batch)
    • 사이킷런의 make_classification을 통해 쉽게 데이터를 만들어낼 수 있다.
    • 로지스틱 리그레션 모델에서 반드시 써야하는 함수가 시그모이드 함수이다. 지수함수에 1을더해서 나눈것을 시그모이드 함수로 정의한다.
    • Cost를 계산하는 함수 : 현재의 파라미터값 w가 주어져 있을 때 입력 X와 목표값 t에 대해 cost를 계산한다.
    • 전체 데이터를 한꺼번에 넣어서 그래디언트를 업데이트 하는데, 이를 배치 업데이트라고한다. 배치란 데이터 전체를 한꺼번에 원샷으로 다 쓴다는 의미이다. 딥러닝에서 말하는 배치사이즈는 보통 미니배치를 말하는 것이다. 여기서 배치라는 것은 전체 데이터를 다 쓴다는 것이다.
  • 1이중분류(binary classification)

이중분류 문제의 경우 클래스가 비슷한 분포를 가지고 있지 않을 때 불균형의 문제가 있어 정확도만 구하는 것은 좋은 지표가 될 수 없다.

다음 것들을 고려해야 한다.

  • 오차행렬(Confusion matrix)
    • 오차행렬을 구하기 위해서 사이킷런에 포함된 오차행렬을 사용한다.
    • TP(True Positive) : 모델이 Positive인데 실제로도 positive라고 예측한 경우
    • FP(False Positive) : 모델이 negative인데 positive라고 예측한 경우
    • TN(True Negative) : 모델이 negative인데 negative라고 예측한 경우
    • FN(False Negative) : 모델이 Positive인데 negative라고 예측한 경우
  • 정밀도 : 모델이 positive라고 했을 때 그중 몇개가 정말로 Positive인지의 비율
  • 재현율 : 데이터에서 positive인 것들의 개수 중에서 모델이 얼마나 잘 positive를 찾아냈는지에 대한 비율 어떤 모델은 precision이 높고 recall이 낮으며, 어떤 모델은 그 반대일 수 있다. 어떤 모델이 좋은 모델일까? 이것은 경우에 따라서 다를 수 있다.
    의료진단의 경우 precision보다 recall이 중요하다. FP인 경우 병이 있다고 판단했는데 실제로는 병이 없는 경우이다. 번거롭지만 리스크가 큰 것은 아니다.
    하지만 FN인 경우 실제로 병이 있는데 병이 없다고 판단하게 되면 리스크가 크다. 이런 경우 recall이 높아야 한다.
    스팸을 분류하는 경우를 생각해보자. Precision을 높이기 위해 recall이 낮아지면, 스팸이 아닌데 스팸이라고 판단되었는데 중요한 이메일이면 리스크가 크다. 따라서 스팸을 분류하는 경우도 recall이 더 중요하다.
    동영상을 분류하는 경우(어린이에게 적절한 동영상인지) precision이 더 중요하다. 분류기가 잘못해서 좋은 동영상이 아닌데 보여주는 것은, 그 하나 때문에 큰 리스크가 발생할 수 있다.

하나의 모델 안에서 precision과 recall을 튜닝할 수 있다.
위의 사진을 보면 오른쪽으로 갈수록 이 이미지들이 높은 스코어를 가진다.
주어진 이미지에 대해 positive/negative를 판별하기 위해 스코어를 보는데, 스코어 값이 특정 기준보다 크냐/작냐에 따라 판별한다.
그 기준을 threshold라고 한다.
Threshold을 낮게 잡으면 모든 경우에 positive라고 말한다. Recall이 1에 가깝게 된다. 존재하는 모든 positive를 positive라고 예측하기 때문이다. 반면 precision은 낮을 수밖에 없다.
반면 Threshold를 높게 작으면 recall은 낮아지고 precision은 높아진다.
그래서 중간정도의 threshold를 많이 사용한다. 하지만 앞의 암이나 스팸 메일등 precision과 recall의 중요도에 따라 달라지기도 한다.

어떤지점이 가장 좋은 지점일까? 급격한 변화가 일어나기 전의 지점을 threshold로 지정하면 좋은 trade-off라고 할 수 있다.

하나의 모델 안에서 precision, recall을 조정하기 위해서는 모델의 예측값이 참이냐 거짓이냐 보다는 스코어를 알아야 한다.


다중 분류(multiclass classification)

이진문제가 아닌 다중분류의 경우에는 클래스가 비슷한 분포를 가지고 있기 때문에 그냥 정확도만 구해도 불균형의 문제가 별로 없어서 정밀도나 재현율을 구하지 않고 정확도를 구하는 것도 괜찮은 지표가 된다.

  • Data Augmentation
    • 학습한 모델의 성능을 향상시키기 위해 data augmentation이라는 방법을 사용
    • 이미지에 변형을 가해서 추가적인 데이터를 만들어서 학습데이터에 포함해 모델을 새로 학습하면 좀더 안정적인 모델을 만들 수 있다.

 

실습 - MNIST