📄 목차
- 머신러닝이란
- 데이터 관찰
- Decision Tree
- Scikit Learn
- 데이터 나누기 (Decision Tree를 이용한 Iris 분류)
1. 머신러닝이란
- 머신러닝: 명시적으로 프로그래밍하지 않고도 컴퓨터에 학습할 수 있는 능력을 부여하는 학문
(경험이 쌓여감에 따라 주어진 일의 성능이 점점 좋아질 때 컴퓨터 프로그램은 경험으로부터 학습한다고 할 수 있음)
- 머신러닝의 역사
- 1950: 앨런 튜링의 튜링 테스트 (기계 지능의 테스트 방법 제안)
- 1956: 인공지능 용어 탄생 (다트머스 회의, 존 매카시)
- 1962: 로젠블롯의 퍼셉트론 - 최초의 인공신경망
- 1969: 퍼셉트론의 한계 (민스키 & 페퍼트) - XOR 문제
- 1974-1980: 인공지능의 첫 번째 겨울 (성과 부진, 민스키의 비판)
- 1980-1987: 인공지능의 부활 (전문가 시스템, 신경망 역전파 알고리즘)
- 1987-1993: 인공지능의 두 번째 겨울 (신경망 문제, 과도한 기대)
- 1993-현재: 머신러닝 기법 발달, 신경망 이론의 성숙
- 연습: Iris Classification
- 수 많은 Iris 꽃 품종 중에서 3종의 품종 분류 구분
- 꽃잎(petal)과 꽃받침(sepal)의 길이/너비 정보를 이용하여 Versicolor, Virginica, Setosa 품종 구분
- 1930년대 통계학자/유전학자인 로널드 피셔의 iris 데이터를 이용
2. 데이터 관찰 (iris_classification)
from sklearn.datasets import load_iris
iris = load_iris
iris.keys()
print(iris['DESCR'])
- sklearn 모듈의 datasets 은 python의 dict 형과 유사함
- 키를 호출하는 두 가지 방법
- dataset.key
- dataset['key']
- 150개의 데이터가 존재
- 3가지 품종에 대해 각가 50개씩의 꽃잎, 꽃받침의 길이와 너비가 있음
- 이에 따른 분류 결과도 존재 (0, 1, 2 / 순서대로 setosa, versicolor, virginica)

- Boxplot 표현

- 상: 길이 / 하: 너비
- 좌: 꽃받침 / 우: 꽃잎
- Setosa는 꽃잎 길이와 너비로 확연히 구분이 되지만, versicolor <-> virginica 는 겹치는 구간이 길어 분류가 어려움
- Pairplot 표현

- 꽃잎 길이/너비를 이용하면 구분이 가능할 것으로 보임
- Decision Tree 이용
- 아주 간략하게 - 몇 개의 데이터를 놓치더라도 - 기준을 세우자면
- petal length < 2.5 : all setosa
- 1 false and petal width <1.6 : versicolor
- 1 false and 2 false : virginica

3. Decision Tree
- 현재 setosa는 정확히 분리가 되지만 versicolor와 virginica는 겹치는 구간이 있어 세밀한 조정이 필요

- 수평선 수직선 1개씩만을 가지고 분류를 하려면 어디에 위치시키는 것이 최선일까?
- Decision Tree의 분할 기준 (split criterion)
- 발생하는 사건의 확률이 적을 수록 정보의 가치는 커짐 (확률과 정보의 가치 반비례)
- 특정 속성 선택으로 인해 데이터 구분이 용이해지는 것이 정보 이득
- 이러한 정보 엔트로피 / 지니 계수가 최대한 적은 수평선 수직선을 구하면 됨
- 각 수평선 / 수직선을 그어서 최소 지니 계수를 가질 때 해당 구분 채용
4. Scikit learn
- sklearn을 이용한 decision tree 구현
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

5. 데이터 나누기
과적합 (Overfitting)
- 지도 학습
- 학습 대상이 되는 데이터에 정답 (label)을 붙여서 학습 시켜 모델 생성
- 해당 모델을 새로운 데이터에 적용하여 답을 얻는 것
- 과적합
- 학습 데이터를 과하게 학습하여 전체 표본 예측 모델이 아닌 학습 데이터만을 위한 모델이 형성 되는 것
- Tree model visualization


- 주어진 데이터가 애시당초 편향된 데이터는 아니었는지?
- versicolor와 virginica 경계면이 올바른 것인지?
- 주어진 데이터에 최적화하기 위해 일반화 한 것은 아닌지?
- 복잡한 경계면은 모델의 성능을 나쁘게 만듦
데이터 나누기
- 데이터의 분리 (훈련 / 검증 / 평가)
- 과적합을 피하기 위해 확보한 데이터 중에서 모델 학습에 사용하지 않고 빼둔 데이터를 가지고 모델을 테스트 함

- 분리한 데이터로 훈련 및 정확도 확인


- 분리한 데이터로 테스트

- 전체 데이터와 검증 데이터 동시 표현

- 4가지 전체 특성을 이용하여 새로운 decision tree 생성

- 모델을 적용하는 방법

- 주요 특성 확인

zip과 언패킹
- zip: 리스트를 튜플로 만들어주는 기능

- unpacking: zip에 넣은 것을 다시 빼는 것
