다중 분류

세렌디·2023년 4월 17일
0

AI

목록 보기
13/17
post-thumbnail

이번 시간에는 다중분류에 대해서 알아보겠다.

처음에는 간단하게 시각화로 시작해보겠다.

다중 분류의 문제에서 자주 사용되는 아이리스 문제가 있다.
아이리스는 품종이 3가지로 다양하다. 이 아이리스를 딥러닝을 사용해서 구분해보는 과정을 해보겠다.

Iris 시각화

시작하기 전에 먼저 다중분류에 대해서 알면 좋을 것 같다.
다중분류란? 규칙에 따라 입력된 값을 세 그룹 이상으로 분류하는 작업을 의미한다.

그럼 시작해 보겠다.

다음과 같이 라이브러리를 임포트 하고 데이터 불러옵니다.

데이터를 불러왔다면, 시본 라이브러리에 있는 pairplot함수를 사용하여 전체 상관도를 볼 수 있는 그래프를 출력할 수 있다.
pairplot함수 설정 중 hue옵션을 통해 품종(species)을 중심으로 보여지게끔 설정해주었다.

다음과 같이 간단하게 시각화가 된 것을 볼 수 있다. 사진상으로 비슷해 보이던 꽃잎과 꽃받침의 크기와 너비가 품종별로 어떤 차이가 있는지 쉽게 알 수 있다.

원-핫 인코딩

원-핫 인코딩이란?

원-핫 인코딩은 여러 개의 값으로 된 문자열을 0과 1로만 이루어진 형태로 만들어 주는 과정을 원-핫 인코딩(one-hot encoding)이라고 한다.
카테고리형 데이터를 다룰 때 사용되는 인코딩 방법 중 하나다.
이 방법은 선형 모델과 같은 일부 머신러닝 알고리즘에서 필요한 특성 값의 크기를 제한하지 않고, 범주형 변수를 처리하기 위한 방법이다.

왜?

카테고리형 데이터를 수치형 데이터로 변환하는 것은 머신러닝 알고리즘에서 매우 중요하다. 이는 머신러닝 모델이 비교적 쉽게 처리할 수 있는 수치형 데이터로 변환하여, 데이터의 특징을 더 잘 파악하고, 분류 및 예측 문제에서 높은 성능을 발휘할 수 있게 해주기 때문인데, 원-핫 인코딩은 머신러닝에서 카테고리형 데이터를 처리하고, 더 나은 예측 결과를 얻기 위해 필수적인 기술 중 하나이기 때문에 사용된다.

어떻게?

앞에서 불러온 iris 데이터를 이용해서 간단하게 해보겠다.

데이터 프레임을 x와 y로 나누고 출력해보면... y의 값이 문자이다. 계산을 위해 모두 숫자형으로 바꿔준다.
아이리스는 3종류가 있다. 이름이 일치하는 경우 1, 나머지는 0으로 바꿔준다.
그리고 판다스가 제공하는 get_dummies()함수를 사용하면 간단하게 해낼 수 있다.

소프트맥스

소프트맥스?

소프트맥스(softmax)는 입력값을 다차원 배열로 받아 각 클래스에 속할 확률을 출력하는 함수다. 보통 딥 러닝에서 다중 클래스 분류 문제를 해결할 때 출력층에서 많이 사용된다.

예를 들어, 이미지 분류 문제를 풀기 위해 소프트맥스 함수를 사용한다면, 입력 이미지를 네트워크에 주입하여 출력으로 확률 벡터를 얻을 수 있는데, 이 벡터의 각 원소는 해당 이미지가 각각의 클래스에 속할 확률을 나타낸다. 이러한 확률 분포를 기반으로 모델은 가장 높은 확률을 가진 클래스를 예측으로 선택하게된다.

왜?

소프트맥스 함수는 다중 클래스 분류 문제를 해결하는데 매우 유용하다. 일반적으로, 딥 러닝 모델은 여러 개의 클래스 중 하나에 속하는 것을 예측하는 작업을 수행하게 된다. 예를 들어, 이미지 분류 문제에서 입력 이미지가 어떤 클래스에 속하는지 예측해야 한다고 하자, 이러한 문제에서 소프트맥스 함수는 출력층에서 각 클래스에 대한 확률을 계산하는 데 사용된다.

소프트맥스 함수의 출력은 각 클래스에 대한 확률 분포를 나타내므로, 이를 이용하여 모델이 가장 높은 확률을 가진 클래스를 예측하게 된다. 또한, 소프트맥스 함수의 출력을 손실 함수와 함께 사용하여 모델을 학습시킬 수 있다. 학습 시, 모델의 예측값과 실제값 사이의 차이를 최소화하는 방향으로 모델을 업데이트하게 됩니다.

따라서, 소프트맥스 함수는 다중 클래스 분류 문제를 풀기 위한 핵심적인 요소 중 하나이기 때문에 사용된다고 할 수 있다.

어떻게?

원-핫 인코딩과 마찬가지로 iris 데이터를 기반으로 해보겠다.
각 샘플마다 아이리스 품종 1인지, 2인지, 3인지 확률을 따로따로 구해야 한다.
예측결과는 이렇게 나온다.

아이리스 실행


앞에서 모델을 설정하고 컴파일 한 내용을 바탕으로 모델을 실행해준다.
업로드중..
그럼 이렇게 정확도를 확인할 수 있다. 약 150개 데이터 중 144개의 꽃 종류를 정확히 맞추었다는 의미이다.
이렇게 간단하게 다중분류에 대해서 알아보았다.

profile
당당하게 자신을 개발자라고 할 수 있는 사람이 될 때 까지

0개의 댓글