본문 바로가기
머신러닝 야학 2기

[머신러닝 야학 2기] 4일차 - 아이리스 품종 분류

by rubyda 2021. 1. 7.
728x90

https://ml.yah.ac/

 

opentutorials.org/course/4570/28987

 

세번째 딥러닝 - 아이리스 품종 분류 - 생활코딩

수업소개 아이리스 품종을 분류하는 딥러닝 모델을 텐서플로우를 이용하여 만들어 보고, 분류모델과 회귀모델의 차이점을 이해합니다. 범주형 변수의 처리 방법인 원핫인코딩을 해야하는 이유

opentutorials.org

아이리스 품종 분류


이번시간에 사용해볼 데이터는 아이리스데이터입니다. 정말 유명하고 많이 본 데이터입니다. 우리는 식물의 생태계를 연구하는 식물학자라고 생각을 해보겠습니다. 그 중 아이리스 꽃을 좋아해서 이를 분류하는 작업을 하려고 합니다.

https://opentutorials.org/course/4570/28987

 

데이터를 보면 우리는 꽃잎길이, 꽃잎폭 등을 품종을 구분하겠구나!! 하고 느끼게 될 것입니다. 하지만 레모네이드와 보스턴 집값 데이터와는 조금 다른 데이터라고 생각이 듭니다.  종속변수가 전에 다루었던 데이터에서는 모두 수치형데이터였는데 아이리스 데이터의 종속변수는 범주형 데이터로 되어 있습니다.

 

앞에 수업에서 우리는 배웠습니다. 회귀와 분류를 나누는 기준은 종속변수의 데이터의 타입에 따라 달라진다구요!!

https://opentutorials.org/course/4570/28987

 

그래서 우리가 이번시간에 풀어야 할 문제는 종속변수의 데이터 타입이 범주형이므로 분류문제가 되는 것입니다.

 

그렇다면 이제 딥러닝을 분류문제로 구성하는 코드를 알아봅시다.

https://opentutorials.org/course/4570/28987

 

회귀 문제랑 어떤 차이가 있는지 보이나요?? 색칠되어 있는 부분이 바로 차이가 존재하는 부분입니다. 그 부분을 이해해 보도록 하겠습니다.

원핫인코딩


 

지금 우리는 범주형 종속변수를 다루고 있습니다. 하지만 지금 상태는 숫자가 아니기 때문에 수식으로 대입을 할 수 없는 상황입니다. 그래서 이러한 범주형 데이터를 숫자로 바꿔주는 작업이 필요합니다.

 

먼저, 모든 범주들을 컬럼으로 만들어줍니다.

https://opentutorials.org/course/4570/28987

그 다음 해당 범주에 해당하는 컬럼값을 1로 바꿔줍니다. 이렇게 1과 0으로 바꿔주는 방법을 바로 원핫인코딩이라고 합니다.

 

바꿔주는 과정이 복잡하지 않을까? 라는 생각이 드나요??

아니에요!! 우리는 판다스에서 제공해주는 기능을 통해 한줄로!! 범주형 데이터를 모두 원핫인코딩으로 바꿀 수 있습니다.

https://opentutorials.org/course/4570/28987

다음과 같이 pd.get_dummies 를 사용해서 원핫인코딩 현태로 바꿀 수 있습니다.

 

이제 우리는 입력층 4개의 입력을 받으며 종속변수의 수가 3개인 모델을 만들면 되는 것입니다. 

https://opentutorials.org/course/4570/28987

 

소프트맥스 크로스앤트로피의 원리를 알기전에 이것들이 필요한 이유를 알아보도록 합시다.

 

우리는 분류를 추측하는일을 어떻게 표현할 수 있을까요??

 

https://opentutorials.org/course/4570/28987

위 그림과 같이 우리는 비가올 확률 30%, 합격할 확률 99%, 동전 앞면이 나올 확률 50%로 즉 0~100사이로 분류를 표현합니다.

 

이러한 확률의 형태로 만들어주는 도구가 바로 시그모이드 소프트 맥스 입니다. 예제에서 우리는 소프트맥스를 사용하도록 하겠습니다.

 

두가지의 차이점이 궁금하신 분은 아래 글에서 참고하시면 됩니다.

jaaamj.tistory.com/76

 

활성화 함수(Activation Function)의 종류

활성화 함수(Activation Function) 개념 활성화 함수란 어떠한 신호를 입력받아을때 이를 적절한 처리를 하여 출력해주는 함수입니다. 이를 통해 출력된 신호가 다음 단계에서 활성화 되는지를 결정

jaaamj.tistory.com

https://opentutorials.org/course/4570/28987

 

 

위 그림을 해석하자면 첫번째줄은 품종이 setota일 확률이 100%이고, 두번째줄은 setosa일 확률이 70%, virginica일 확률이 30%를 의미하게 되는 것입니다.

 

https://opentutorials.org/course/4570/28987

 

 

이러한 함수들을 우리는 활성화 함수라고 말합니다.

https://opentutorials.org/course/4570/28987

우리는 loss를 작게 만들기 위함이 목표입니다. 여기서 크로스앤트로피에 의미를 지금은 몰라도 괜찮습니다. 하지만 문제 유형에 다르게 사용해야 한다를 기억합시다!!

 

회귀에서 사용하는 loss는 MSE 분류는 크로스앤트로피!!!

 

https://opentutorials.org/course/4570/28987

 

다음과 같이 학습을 시키면 출력 결과가 나오는데 이것은 크로스 앤트로피를 통해 나온 값입니다.

 

https://opentutorials.org/course/4570/28987

다음과 같이 모델이 얼마나 좋은 모델인지 저 쉽게 파악하기 위해 compliemetrics='accuracy' 옵션을 입력하면 정확도를 출력하여 보여줍니다. 이 값은 1에 가까울 수록 좋은 모델입니다.

 

분류는 회귀보다 어려운 확률의 개념이 등장합니다. 그렇기 때문에 빨리 넘어서야 된다고 생각하지 말고!! 천천히 경험을 반복하면서 연습을 자주하며 익숙해지는 연습을 하도록 해야합니다. 

 

 

실습 코드는 다음 github 사이트에서 확인할 수 있습니다.

github.com/jaaaamj0711/Machine_learning_yahac/blob/main/iris.ipynb

 

jaaaamj0711/Machine_learning_yahac

구글과 생활코딩이 함께하는 머신러닝 야학 2기 입니다. Contribute to jaaaamj0711/Machine_learning_yahac development by creating an account on GitHub.

github.com