Decision tree기법을 이용한 아이리스 꽃 분류
김기훈 물리학과 hoon2680@naver.com
이지연 수학과 dwnse1010@naver.com
이미영 응용시스템학과 meme22@hanyang.ac.kr
조준희 수학과 cho1004jh@naver.com
Ⅰ. Introduction
아이리스 꽃 데이터는 영국 통계학자이자 생물학자인 피셔가 정의한 다변량 데이터 세트이다. 이 데이터에는 setosa, versica, virginica 이 세가지 종이 있으며 이러한 사실을 통해 '이 세가지 종은 어떤 차이가 있고 어떻게 구분이 될까?' 라는 생각을 할 수 있다. 이 물음에 답하기 위해 주어진 아이리스에 대한 여러가지 데이터를 바탕으로 종을 어떻게 분류할 수 있을지 Decision tree 기법을 통해 알아보는 것이 우리의 목표이다.
Ⅱ. Datasets
sckit-learn의 datasets 모듈에서 아이리스 데이터에대한 정보를 불러와 pandas를 이용해 DataFrame으로 변형한다.
preprocessing 모듈의 LabelEncoder를 이용하여 dataset에 종에 대한 열을 추가시킨다.
이렇게 불러온 아이리스 데이터는 아래와 같다.
Ⅲ. Methodology
위 그림은 tree의 구조이다. Decision tree 기법을 사용하면 tree의 root node에서 시작하여 정보이득(Information Gain)이 최대가 되는 방향으로 데이터를 나눈다. 이러한 반복과정을 통해 leaf node가 순수해질 때까지 모든 노드에서 이 분류 작업을 반복한다. 그 결과 root node에는 데이터를 분류하는 질문이 들어가고 leaf node에는 순수하게 분류된 데이터가 들어가게 된다.
정보이득이란 다음과 같이 정의한다.
여기서 Before와 After는 이전노드에서의 값과 그 노드에서 이어진 다음 노드에서의 값을 뜻한다.N은 샘플의 개수를 뜻하고 I라는 함수는 여러가지가 사용될 수 있다. 보통 널리 사용되는 것은 지니 불순도와 엔트로피인데 여기서는 엔트로피를 사용하여 설명하겠다.
엔트로피는 다음과 같이 정의한다.
여기서 P는 엔트로피를 구하는 상황에서 각 사건이 발생할 확률을 의미한다.엔트로피는 정보이론과 물리학에서 사용되는 개념인데 쉽게말해 불확실성정도를 나타내는 지표라 생각하면 된다. 예를 들어 동전던지기를 생각하여 보자. 일반적인 동전던지기의 경우 앞면과 뒷면이 나올 확률이 동일하게 1/2이다. 그러므로 그 경우 위식을 이용하면 엔트로피가 1이 되고 어떤 동전이 나올지 모르는 불확실한 상황이다. 그런데 만약 동전이 항상 앞면 밖에 나오지 않는 상황이 된다면 엔트로피는 0이 된다. 즉, 불확실정도가 없다고 할 수 있다. 첫번째 상황에서 두번째 상황으로 바뀐다면 정보이득은 엔트로피가 1에서 0으로 감소하므로 1이된다. 이 경우 불확실정도가 최대인 상황에서 불확실정도가 없는 상황으로 바뀌었기 때문에 정보를 얻었다고 할 수 있고 이러한 의미에서 정보이득이라는 개념을 정의내렸다고 이해할 수 있다.
X를 iris의 꽃받침, 꽃잎의 정보를 나타내는 데이터, Y를 무슨 꽃인지에 대한 정보를 담고 있는 데이터로 선언한다.

-Decision tree에 대해 공부한 자료
[5]머신러닝 교과서 with 파이썬,사이킷런,텐서플로(세바스찬 라사카, 길벗 출판사)
Ⅵ. Conclusion : Discussion
1.Iris data set에 있는 Iris들을 Decision tree 기법을 이용하여 Iris-setosa, versicolor, virginica 이 세 가지 종으로 나누었다.
2.Decision tree 기법은 feature의 수치만으로 분류 기준을 만드는 기법이다. 그렇기에 다른 종이어도 4가지 feature값의 관계가 비슷하다면 쉽게 분류되지 않았을 것이다. 이를 통해 Iris의 세 가지 종은 꽃받침과 꽃의 길이 및 너비의 관계가 서로 다르다는 것을 알 수 있었다.
*역할분담
김기훈: 코드구현,대본,의사결정나무 기법 정리
이지연: 영상편집,대본,의사결정나무 기법 정리 및 조사
이미영: 영상녹음,대본,데이터 셋 조사 및 정리
조준희: 영상편집,대본,전체적인 정리
*설명 비디오 링크
https://youtu.be/1EFbRnyw5kg
이지연 수학과 dwnse1010@naver.com
이미영 응용시스템학과 meme22@hanyang.ac.kr
조준희 수학과 cho1004jh@naver.com
Ⅰ. Introduction
아이리스 꽃 데이터는 영국 통계학자이자 생물학자인 피셔가 정의한 다변량 데이터 세트이다. 이 데이터에는 setosa, versica, virginica 이 세가지 종이 있으며 이러한 사실을 통해 '이 세가지 종은 어떤 차이가 있고 어떻게 구분이 될까?' 라는 생각을 할 수 있다. 이 물음에 답하기 위해 주어진 아이리스에 대한 여러가지 데이터를 바탕으로 종을 어떻게 분류할 수 있을지 Decision tree 기법을 통해 알아보는 것이 우리의 목표이다.
Ⅱ. Datasets
sckit-learn의 datasets 모듈에서 아이리스 데이터에대한 정보를 불러와 pandas를 이용해 DataFrame으로 변형한다.
preprocessing 모듈의 LabelEncoder를 이용하여 dataset에 종에 대한 열을 추가시킨다.
이렇게 불러온 아이리스 데이터는 아래와 같다.
데이터 세트에는 꽃받침의 길이(Sepal Length), 꽃받침의 너비(Sepal Width), 꽃잎의 길이(Petal Length), 꽃잎의 너비(Petal Width), 이렇게 4가지 속성을 가진 150개의 자료가 있다. (Iris setosa, Iris viritica, Iris synicolor 세 종 각각 50개의 샘플이다.)
(1) choice of algorithm
* Decision tree 기법
Decision tree는 일련의 질문에 대한 결정을 통해 데이터를 분류하는 모델이며 train set에 있는 feature을 기반으로 정답을 예측할 수 있는 일련의 질문들을 학습한다.
정보이득이란 다음과 같이 정의한다.
여기서 Before와 After는 이전노드에서의 값과 그 노드에서 이어진 다음 노드에서의 값을 뜻한다.N은 샘플의 개수를 뜻하고 I라는 함수는 여러가지가 사용될 수 있다. 보통 널리 사용되는 것은 지니 불순도와 엔트로피인데 여기서는 엔트로피를 사용하여 설명하겠다.
엔트로피는 다음과 같이 정의한다.
여기서 P는 엔트로피를 구하는 상황에서 각 사건이 발생할 확률을 의미한다.엔트로피는 정보이론과 물리학에서 사용되는 개념인데 쉽게말해 불확실성정도를 나타내는 지표라 생각하면 된다. 예를 들어 동전던지기를 생각하여 보자. 일반적인 동전던지기의 경우 앞면과 뒷면이 나올 확률이 동일하게 1/2이다. 그러므로 그 경우 위식을 이용하면 엔트로피가 1이 되고 어떤 동전이 나올지 모르는 불확실한 상황이다. 그런데 만약 동전이 항상 앞면 밖에 나오지 않는 상황이 된다면 엔트로피는 0이 된다. 즉, 불확실정도가 없다고 할 수 있다. 첫번째 상황에서 두번째 상황으로 바뀐다면 정보이득은 엔트로피가 1에서 0으로 감소하므로 1이된다. 이 경우 불확실정도가 최대인 상황에서 불확실정도가 없는 상황으로 바뀌었기 때문에 정보를 얻었다고 할 수 있고 이러한 의미에서 정보이득이라는 개념을 정의내렸다고 이해할 수 있다.
(2) features
꽃받침의 길이(Sepal Length), 꽃받침의 너비(Sepal Width), 꽃잎의 길이(Petal Length), 꽃잎의 너비(Petal Width)
Ⅳ. Evaluation & Analysis
dataset에 대해 종의 종류별로 feature에대한 boxplot을 나타내면 위와 같다. boxplot을 통해 아이리스의 4가지 특징들이 아이리스 종에 의해 확연히 구분될 수 있게 분포하고 있음을 확인할 수 있다.
feature을 두 개씩 짝지어서 정답지별로 data를 분류해보면, 위의 그래프를 얻을 수 있다.
이 그래프를 보면, Iris 꽃의 종은 두 개의 다른 feature에 의해 잘 분리되는 그래프도 있고 그렇지 않은 그래프도 있다.
이제 data를 분류해가는 대략적인 과정은 아래와 같다.
scikit-learn의 metrics 모듈에서 confusion_matrix(오차행렬)을 불러 온다.
X를 iris의 꽃받침, 꽃잎의 정보를 나타내는 데이터, Y를 무슨 꽃인지에 대한 정보를 담고 있는 데이터로 선언한다.

데이터를 training set과 test set으로 쪼개기 위해, scikit-learn의 cross_validation(교차 검증) 모듈에서 train_test_split를 불러온다.
이제 주어진 데이터를 분류하기 위하여 Decision tree를 사용한다. scikit-learn의 tree모듈에서 DecisionTreeClassifier을 불러낸 뒤, 이 함수를 classifier라 선언한다. x와 y의 training set으로 classifier을 학습시키고, 이렇게 학습된 classifier에 test set을 넣어 y_pred를 예측한다.
예측한 y값을 정답지와 비교하기 위해 confusion_matrix함수와 sckit-learn의 metrics 모듈에서 불러온 accuracy_score 함수에 넣어 본다.
confusion_matrix와 accuracy_score의 결과 값은 위와 같다.7개의 setosa에 대한 데이터 모두 setosa라 예측했지만 versicolor는 12개 중 10개만 versicolor라 예측하였고 virginica는 11개 중 9개만 virginica라 예측하였다. 그 결과 예측의 정확도는 87%가 되었다.
Ⅴ. Related Work
[0] 코드는 Pandas library(Python 3.7 기반)로 작성되었다.
-Data set을 다루는 코드에 대해 공부한 자료
[1] Iris Data Analysis and Machine Learning(Python)
-Python(Pandas)의 명령어에 대해 공부한 자료
[2] GeeksforGeeks (https://www.geeksforgeeks.org/)
[3] Pandas 기본 (https://sacko.tistory.com/18)
[4] stack overflow https://stackoverflow.com/
-Decision tree에 대해 공부한 자료
[5]머신러닝 교과서 with 파이썬,사이킷런,텐서플로(세바스찬 라사카, 길벗 출판사)
Ⅵ. Conclusion : Discussion
2.Decision tree 기법은 feature의 수치만으로 분류 기준을 만드는 기법이다. 그렇기에 다른 종이어도 4가지 feature값의 관계가 비슷하다면 쉽게 분류되지 않았을 것이다. 이를 통해 Iris의 세 가지 종은 꽃받침과 꽃의 길이 및 너비의 관계가 서로 다르다는 것을 알 수 있었다.
*역할분담
김기훈: 코드구현,대본,의사결정나무 기법 정리
이지연: 영상편집,대본,의사결정나무 기법 정리 및 조사
이미영: 영상녹음,대본,데이터 셋 조사 및 정리
조준희: 영상편집,대본,전체적인 정리
*설명 비디오 링크
https://youtu.be/1EFbRnyw5kg
댓글
댓글 쓰기