다중 클래스 분류

다중 분류(multiclass-classification)

왕눈임 2024. 9. 5. 23:07

단순한 이진 분류아닌 class가 여러개인 분류를 다중분류라고 한다

이때 class 개수경계 직선의 개수는 같아야 한다. 

가령 분류영역이 3개면 각 꼭지점이 만나는 채로 직선이 3개 있어야한다..

 

꼭짓점은 왜 만나야 할까?

 

3개의 꼭짓점이 만나지 않으면 위의 이미지 처럼 분류를 할 수 없는 영역이 발생한다.

 

 

 

그래서 다중 class 분류에 기본 계산은..

 

분류 class가 3개여서 3개의 예측 직선을 가지고 있다면,.

예측직선

 

해당 분류 직선데이터를 집어넣은 값이

나머지 분류 직선에 넣은 값보다 항상 크다면..

성립조건

이 데이터는 k번째 class에 속한다고 판단한다. 

 

이처럼 다중 class 분류에서는 여러 개의 분류 직선을 판단해야 하므로 

 

다음과 같은 행렬이 필요하다.

 

 

 

 

첫 번째 행렬에는 각 행에 회귀 직선의 모수가 입력되어 있고 

두 번째 행렬에는 입력할 data가 1열로 있어야 한다.

 

이 행렬을 다음과 같이 표현한다.

 

 

예시를 들어보자 

 

 

 

예측해야 할 class의 종류가 4개라 하자

 

4개의 회귀 직선하나의 데이터를 각각 입력하여 열 벡터를 만든다 

 

결과로 열벡터에는 3번 class 분류기에 집어넣은 값(20)가장 크기 때문에 

해당 데이터는 3번 class에 속한다고 예측할 수 있게 되는 것이다.

 

 

 


 

 

 

 

현재 데이터의 분류  결과 정답 class역시 3번 class 였다면,

정답 값으로 3번 class를 어떻게 표현할 것인가?

 

3번 class는 이처럼 표현하면 된다!

 

 

 

이러한 방식으로 클래스를 표현하는 방식이 원 핫 인코딩

 

 

원 핫 인코딩방식은  class를 이런 식으로  표현하면 된다..

 

 


 

그래서 학습은 어떻게 진행하나?

 

여기서부터는 로지스틱 회귀와 방법과 같다.

로지스틱 회귀에서는 어떻게 했었나?

 

0.5를 기준으로 그 값이 컸으면 1번 class로 예측 작으면 0번 class로 예측하고

정답 값과 비교했었는데..

한 번만 예측에 실패하면 목적함수인 크로스 엔트로피는 무한대로 가고

유의미한 학습 이 불가능 해졌었다. 

 

 

구체적인 학습 진행 방식을 살펴보자

 

 

 

이 값을 계단 함수에 의해 0과 1로 인코딩 한다 생각해보자.

 

 

 

이렇게 회귀 직선에 넣은 값을 1과 0사이 범위로 인코딩하는 함수들을

활성화 함수라 부른다. 

 

이제 이런 계단함수를 활성화 함수매핑하면

예측결과를 다음과 같이 쓸 수 있게 된다.

(19,20,3은 0보다 커서 1,  -4는 0)

이 벡터를 정답 class인 아래 벡터와 비교하면 ..

0인 부분을 1로 예측하는 순간 오차는 과장되고

한 번만 예측에 실패하면 목적함수인 크로스 엔트로피 무한대로 가고

이러한 크로스 엔트로피를 최소화하는 학습을 유의미하게 진행할 수 없게 된다..

 

 

따라서 확률로 매핑하는 과정이 필요한데 ..

활성화 함수시그모이드 함수를 활용할 때..

 

그 결과로 다음과 같은 결과가 출력된다 가정해보자

 

이때 여전히 정답 class(3번 class)가 아래 벡터와 같다하면

 

3번 class에 해당하는 예측 값(0.9)이 더욱이 1과 가깝게 하는 방향으로 모델학습이 이루어질 것이다.

그런데 문제는 학습된 후 모델이 출력하는 예측결과다른 class에 대한 확률도 높게 출력할 수 있다.

 

가령

 

 

이런식으로 나오게 학습이 되었다고 가정했을때..

 

분명 정답 class (3번 class)와는 오차가 (1-0.9) 0.1인데

1번 class일 확률도 무려0.9다.

 

즉 정답 class에 대해 0이었던 부분학습이 이루어지지 않는다.

 

 

 


 

 

 

새로운 활성화 함수

그래서 다중 class에서는 활성화함수 softmax함수를 사용합니다.

softmax 함수

 

 

쉽게 말해 0~1사이의 확률 값으로 매핑하되

최고값에 가장 큰 값을 매핑하고 작은값작게 매핑하는 함수,,

 

소프트 맥스함수를 활용한 확률값 매핑 예시

 

 

그래서 데이터를 각각의 분류직선에 넣어 나온값을 softmax함수에 집어 넣으면

정답 class에서는 1에 가깝게 나머지 class에서는 0에 가까운 확률로 매핑하게 된다.

 

 

이 매핑된 값은 확률 이므로 이제 

목적함수인 크로스엔트로피(cross-entropy)를 

LSM(Least square method ) 하는 방식으로 학습 할 수 있게 된다.