[솔트룩스] 새싹 인공지능 응용 SW 개발자 양성과정 | 24일차 | 5. 머신러닝 (2)
2022.01.17 | 24일차 | 5. 머신러닝 (2)
- 권혜윤 강사님 ( yujinkwon@nate.com )
Decision Tree 분리 기준 (Split Criterion)
- 부모 마디로부터 자식 마디들이 형성될 때, 생성된 자식 노드에 속하는 자료의 순수도가 가장 크게 증가하도록 트리를 형성하며 진행
- 입력 변수를 이용해 목표 변수의 분포를 얼마나 잘 구별하는 정도를 파악해 자식 마디가 형성되는데, 목표 변수의 구별 정도를 불순도에 의해 측정
지니 지수 (Gini Index) : 데이터 집합의 불순도를 측정
- 0~1 사이의 값
- 어떤 데이터 집합에 속한 개체들이 같은 범주로 구성되어 있으면 지니 지수는 최솟값이 0을 갖고, 해당 데이터 집합은 순수하다고 볼 수 있음.
- 즉, 지니 지수가 작을수록 잘 분류된 것.
Tree 만든 데이터는 정확도가 100%
- 데이터 보고 Gini 계산해서 Tree를 만들었기 때문
- 모든 데이터로 Tree를 만들어서 만든 Tree가 정확한 Tree인지 알 수 없음
- 해결방안
- 전체 75% 로 Tree를 만들고 (Train Set), 일부 25% 는 보관 (Test Set), 나중에 Test set 데이터로 Tree가 얼마나 정확한지 측정
강의자료 실습
- Decision Tree [실습교재코드]
- 패키지 설명
- Scikit-learn (sklearn)
- Python 프로그래밍 언어용 기계학습(Machine Learning) 관련 라이브러리 (Library)
- sklearn.metrics
- scikit-learn 패키지 중 모형평가에 사용되는 서브 패키지 classification_report: 주요 분류 측정 항목을 보여주는 보고서 모듈 confusion_matrix: 분류의 정확성을 평가하기 위한 오차행렬 계산 모듈
- sklearn.model_selection
- scikit-learn 패키지 중 클래스를 나눌 때, 함수를 통해 train/test를 나눌 때, 모델 검증에 사용되는 서브 패키지
- train_test_split
- 배열 또는 행렬을 임의의 훈련(train) 및 테스트(test) 하위 집합으로 분할하는 모듈
- sklearn.tree
- scikit-learn 패키지 중 분류 및 회귀를 위한 의사결정 트리 기반 모델이 있는 서브 패키지
- DecisionTreeClassifier
- 의사결정 트리 분류 모듈
Random Forest
- Random Forest ?
- 서로 다른 Decision Tree 많이 만들고 싶을때.
- Tree가 많아서 Forest (숲) 임.
- 2001년에 Leo Breiman에 의해 처음으로 소개
- Decision Tree의 단점을 개선하기 위한 알고리즘 중 하나
- Decision Tree의 확장
- Random Forest는 훌륭한 데이터 분석 알고리즘 중 하나
- 데이터 분류 (Classification)
- 종속 변수 있음
- 지도 학습
- 예측 분류하고 싶은 칸 있음
- 데이터 군집 (Clustering)
- 종속 변수 없음 (어떻게 분류될지 모름, 컴퓨터가 알아서 분류)
- 비지도 학습
- 그룹을 만듬
- 잠재적 디리클레 할당 (LDA: Latent Dirichlet Allocation)
- Feature의 중요성 확인
- 데이터 예측
Random Forest 특징
- 여러 개의 Decision Tree를 결합함으로 단일 Decision Tree의 결점을 극복
- Over-fitting 문제가 적음
- 트리 만든 데이터의 정확도는 높은데, 안 만든 데이터는 정확도가 낮음
- Random Forest 트리를 기본 100개 만들기 때문에 문제 적음
- 트리 안만든 데이터의 정확도도 높음
- 구현이 간단함
- 병렬 계산이 간편함 (Multi Thread: 동시 실행)
Random Forest 에서의 2가지 Random
- Dataset 에서 샘플 데이터를 random으로 선택
- 샘플 데이터 선택
- Random으로 n개의 데이터 선택
- 선택한 n개의 데이터는 중복이 가능
- 선택한 t개의 샘플 데이터 사이 데이터 중복 가능
- 선택한 샘플 데이터로 Decision Tree 생성
- 샘플 데이터에서 freature을 random으로 선택해 decision tree를 생성
- 선택한 샘플 데이터에서 random으로 f개 feature를 선택
- 선택하는 feature의 개수는 기본으로 Sqrt(전체 feature 수, 선택으로 Log2(전체 feature 수) 등 방법으로 계산
Random Forest 알고리즘
- Bootstrapped Dataset 만들기
- Tree 만들기
- Voting 하기
Random Forest IRIS 데이터 분류
- Random Forest [강의코드]
- Random Forest [실습교재]
- Iris 데이터를 이용해 간단한 Random Forest 구현
- Iris Data 소개
- 필요한 패키지 및 라이브러리 로드
from sklearn.datasets import load_iris from sklearn.metrics import accuracy_score import numpy as np import pandas as pd- numpy
- 파이썬 언어를 위한 행렬, 벡터 등의 수학 계산을 위한 자료구조와 계산 함수를 제공하는 패키지
- pandas
- 데이터 분석, 가공, 처리 등을 쉽게 하기 위한 자료구조와 처리 함수들을 제공하는 패키지
- sklearn.metrics
- scikit-learn 패키지 중 모듈 성능 평가 방법 모듈
- sklearn.datasets
- scikit-learn 패키지 중 일반적인 참조 데이터 셋을 로드(load)하는 모듈
- load_iris
- iris data 로드 함수
- acccuracy_score
- 분석 결과의 accuracy를 측정하는 함수
- Training data 와 Test data 설정
- load_iris() : iris data를 호출
- iris.data : iris data에서 feature 데이터를 호출
- iris.target: iris data에서 target 데이터를 호출
- Random Forest 분류기 생성
- Random Forest 분류기 생성을 위해 RandomForestClassifier 클래스를 import
- Sklearn.ensemble 모듈은 분류, 회귀 및 이상 탐지를 위한 ensemble-based 방법을 포함
- 10개의 tree를 가진 random forest 생성
dt_graph.write_pdf("그래프(이미지)를 pdf로 저장하는 코드.pdf")
- Random Forest 분류기 성능 평가 (1)
- Accuracy (정확도) 란?
- 전체 정답률
- Precision과 Recall 이란?
- F-measure(F1 스코어)에 대해서도 다룸
- Precision : 항목 정답률 (세로) / Recall : 항목 검출률 (가로)
- Random Forest 분류기 성능 평가 (2)
- Random Forest 성능 제고 방법
- Training, Test 데이터 재 생성
- Random Forest 분류기 성능 평가
- Random Forest 분류기 성능 높이는 방법
- Tree의 개수(n_estimators)를 변경
- max_features의 값을 변경
- 각 feature의 중요도 확인
- 컬럼 중요도 (Information Gain 계산)

댓글
댓글 쓰기