작성: 2020-08-24 수정: 2020-08-24

코딩야학 Tensorflow 3일차(2)

아이리스 품종예측을 위한 준비, 원핫인코딩

1. 들어가면서…

이전 수업에 머신러닝을 이용해서 레몬에이드 판매량 예측, 보스턴 집값 예측을 실습해 보았다. 이번시간에는 꽃잎길이, 꽃잎폭, 꽃받침길이, 꽃받침폭을 이용해서 아이리스의 품종을 예측해보는 실습을 진행한다.

지도학습) 회귀 문제 VS 분류 문제

종속변수가 수치적 데이터 (ex. 집값, 판매량)인 경우 -> 회귀 문제

종속변수가 범주형 데이터 (ex. 품종)를 다루는 문제를 -> 분류 문제라고 한다.

2. 원핫인코딩(onehot-encoding)

iris.csv의 파일의 일부분을 보자

꽃잎길이 꽃잎폭 꽃받침길이 꽃받침폭 품종
5.1 3.5 1.4 0.2 setosa
4.9 3 1.4 0.2 versicolor
4.7 3.2 1.3 0.2 virginica
4.6 3.1 1.2 0.2 setosa

4개의 독립 변수(꽃잎길이, 꽃잎폭, 꽃받침길이, 꽃받침)와 1개의 종속변수(품종)으로 이루어져 있다.

해당 데이터를 이용하면 아래와 같은 수식을 만들수 있다.

$y = w_1x_1 + w_2x_2 + w_3x_3 + w_4x_4 + b$

종속변수의 값이 범주형인데, 해당 수식은 숫자로 이루어져 있다. 하지만 조금만 생각해보면, 수치가 아닌 데이터는 계산을 할 수 없다.

이러한 문제점을 해결하기 위해서 원핫인코딩이라는 방법이 등장한다.

품종
setosa
versicolor
virginica
setosa
versicolor

위의 범주형데이터를 아래와 같이 변환해 보자

setosa versicolor virginica
1 0 0
0 1 0
0 0 1
1 0 0
0 1 0

범주형이였던 종속변수가 갯수는 3개로 늘었지만, 수치형 데이터로 변경된 것을 볼 수있다.

아래는 위에서 처음 보았던 iris.csv에 원핫인코딩을 적용한 모습이다.

꽃잎길이 꽃잎폭 꽃받침길이 꽃받침폭 setosa versicolor virginica
5.1 3.5 1.4 0.2 1 0 0
4.9 3 1.4 0.2 0 1 0
4.7 3.2 1.3 0.2 0 0 1
4.6 3.1 1.2 0.2 1 0 0

$y_1 = w_1x_1 + w_2x_2 + w_3x_3 + w_4x_4 + b$ (iris의 품종이 setosa인지 확인하는 수식)

$y_2 = w_1x_1 + w_2x_2 + w_3x_3 + w_4x_4 + b$ (iris의 품종이 versicolor인지 확인하는 수식)

$y_3 = w_1x_1 + w_2x_2 + w_3x_3 + w_4x_4 + b$ (iris의 품종이 virginica인지 확인하는 수식)

위의 세개의 수식을 이용해서 해당 문제를 해결할 수 있게 되었다.

이처럼 분류문제(범주형 데이터)를 해결하기 위해서는 원핫인코딩이라는 과정이 필요하다.