가장 쉽게 배우는 머신러닝 2주차 : 다항 논리 회귀(Multinomial logistic regression)

wwoo·2021년 7월 2일
0

머신러닝

목록 보기
8/10
post-thumbnail

2. 📚다항 논리 회귀(Multinomial logistic regression)


1. 📒다항 논리 회귀와 One-hot encoding

💡 대학교 시험 전 날 공부한 시간을 가지고 해당 과목의 성적(A, B, C, D, F)를 예측하는 문제

이 문제를 논리 회귀로 풀려면, 아래와 같이 5개의 클래스로 나누면 되는데 이 방법을 다중 논리 회귀(Multinomial logistic regression)이라고 부른다.

One-hot encoding은 다항 분류(Multi-label classification) 문제를 풀 때 출력값의 형태를 가장 예쁘게 표현할 수 있는 방법이다. 다항 논리 회귀도 다항 분류에 속하기 때문에 One-hot encoding을 사용한다. 여러개의 항을 0과 1로만 표현할 수 있다.

📌 One-hot encoding 만드는 방법

  1. 클래스(라벨)의 개수만큼 배열을 0으로 채운다.
  2. 각 클래스의 인덱스 위치를 정한다.
  3. 각 클래스에 해당하는 인덱스에 1을 넣는다.

2. 📗Softmax 함수와 손실함수

Softmax는 선형 모델에서 나온 결과(Logit)를 모두가 더하면 1이 되도록 만들어주는 함수이다.

다 더하면 1이 되도록 만드는 이유는 예측의 결과를 확률(=Confidence)로 표현하기 위함이다. One-hot encoding을 할 때도 라벨의 값을 전부 더하면 1(100%)이 되기 때문이다.

다항 논리 회귀에서 Softmax 함수를 통과한 결과 값의 확률 분포 그래프를 그려서 아래 그래프의 모양이라고 가정하자. 단항 논리 회귀에서와 마찬가지로 가로축은 클래스(라벨)이 되고 세로축은 확률이 된다.

마찬가지로 확률 분포의 차이를 계산할 때는 Crossentropy 함수를 쓴다. 항이 여러개가 되었을 뿐 이진 논리 회귀와 차이는 없다. 우리는 데이터셋의 정답 라벨과 우리가 예측한 라벨의 확률 분포 그래프를 구해서 Crossentropy로 두 확률 분포의 차이를 구한 다음 그 차이를 최소화하는 방향으로 학습을 시킨다.

📌 Keras에서 다항 논리 회귀의 경우 categorial_crossentropy 손실 함수를 사용한다.

0개의 댓글