제로베이스_Machine Learning (1)

KulangK·2023년 7월 28일

Machine Learning

목록 보기
1/13
post-thumbnail

📄 목차

  1. 머신러닝이란
  2. 데이터 관찰
  3. Decision Tree
  4. Scikit Learn
  5. 데이터 나누기 (Decision Tree를 이용한 Iris 분류)
    • 과적합
    • 데이터 나누기
    • zip과 언패킹

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 data import

iris = load_iris # iris data declare

iris.keys() # checking iris data keys

print(iris['DESCR']) # descrption of iris data

  • sklearn 모듈의 datasets 은 python의 dict 형과 유사함
    • 키를 호출하는 두 가지 방법
      1. dataset.key
      2. dataset['key']

  • 150개의 데이터가 존재
    • 3가지 품종에 대해 각가 50개씩의 꽃잎, 꽃받침의 길이와 너비가 있음
    • 이에 따른 분류 결과도 존재 (0, 1, 2 / 순서대로 setosa, versicolor, virginica)


  • Boxplot 표현

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

  • Pairplot 표현

    • 꽃잎 길이/너비를 이용하면 구분이 가능할 것으로 보임

  • Decision Tree 이용
    • 아주 간략하게 - 몇 개의 데이터를 놓치더라도 - 기준을 세우자면
      1. petal length < 2.5 : all setosa
      2. 1 false and petal width <1.6 : versicolor
      3. 1 false and 2 false : virginica


3. Decision Tree

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

    • 수평선 수직선 1개씩만을 가지고 분류를 하려면 어디에 위치시키는 것이 최선일까?
      • Decision Tree의 분할 기준 (split criterion)

  • 발생하는 사건의 확률이 적을 수록 정보의 가치는 커짐 (확률과 정보의 가치 반비례)
  • 특정 속성 선택으로 인해 데이터 구분이 용이해지는 것이 정보 이득

  • 정보 엔트로피: 얼마 만큼의 정보를 담고 있는지 혹은 무질서도/불확실성을 의미

    • 두번째 사진의 -6/16 앞의 sign은 +임 (오타)
    • 엔트로피는 무질서도/불확실성을 뜻하므로 엔트로피가 내려갈 수록 질서도가 높아지니 더 용이한 데이터가 됨

  • 지니 계수


  • 이러한 정보 엔트로피 / 지니 계수가 최대한 적은 수평선 수직선을 구하면 됨
    • 각 수평선 / 수직선을 그어서 최소 지니 계수를 가질 때 해당 구분 채용

4. Scikit learn

  • 2007년 구글 썸머 코드에서 처음 구현
    • 파이썬 기계 학습 오픈 소스 라이브러리

  • sklearn을 이용한 decision tree 구현
    • from sklearn.tree import DecisionTreeClassifier
      from sklearn.metrics import accuracy_score

      • 99.3%의 유사성을 보임

5. 데이터 나누기

과적합 (Overfitting)

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

  • Tree model visualization

    • 주어진 데이터가 애시당초 편향된 데이터는 아니었는지?
    • versicolor와 virginica 경계면이 올바른 것인지?
      • 주어진 데이터에 최적화하기 위해 일반화 한 것은 아닌지?
      • 복잡한 경계면은 모델의 성능을 나쁘게 만듦

데이터 나누기

  • 데이터의 분리 (훈련 / 검증 / 평가)
    • 과적합을 피하기 위해 확보한 데이터 중에서 모델 학습에 사용하지 않고 빼둔 데이터를 가지고 모델을 테스트 함


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


  • 분리한 데이터로 테스트


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


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

  • 모델을 적용하는 방법


  • 주요 특성 확인


zip과 언패킹

  • zip: 리스트를 튜플로 만들어주는 기능

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

profile
새싹 데이터 분석가 https://github.com/KulangK

0개의 댓글