의사 결정 트리

2021. 5. 17. 12:37·AI/머신러닝

결정 트리  1) 수치 

               2) 분류형

 

ex) 타이타닉 호 탑승자의 성별, 나이, 배우자와 자녀의 수를 이용해서

생존 확률을 구분해 나가는 모형 "sibsp‟는 탑승한 배우자와 자녀의 수를 의미

 

지도 수치형 regression

       분류형 classfication

 

어떤 속성을 먼저 던지냐에 따라 트리의 깊이가 달라진다.

여러 속성을 많이 고려 할 수록 오버 피팅이 발생할 수 있다.(너무 깊은 깊이까지 가면 안좋다.)

 

주어진 데이터의 학습을 통한 예측이 가장 중요하다.

단, 한가지의 경우도 실수가 나오지 않을 때까지 학습을 시키는 것이 목표이다.

 

의사결정 트리의 구성요소

1) 뿌리 마디 (root node) : 시작되는 마디로 전체 자료를 포함

2) 자식 마디 (cjilde node) : 하나의 마디로부터 분리되어 나갂 2개 이상의 마디들

3) 부모 마디 (parent node) : 주어짂 마디의 상위마디

4) 끝마디 (terminal node, leaf node) : 자식마디가 없는 마디

 

 

기계학습 계열의 판단 기준 : 불순도 

의사 결정 트리 학습에서 각 노드에서 분기하기 위한 최적의 질문은 정보이득이라는 값이 최대가 

되도록 만들어 주는 것이 핵심이다.

정보이득 = 부모의 정보이익 - 자식의 (정보이익*확률)의 합

 

데이터의 불순도 : 데이터가 제대로 분류되지 않고 섞여 있는 정도를 말한다. 정보이득 ig는 자식노드의 데이터의 불순도가 작으면 작을수록 커지게 된다.

 

기계학습에서는 불순도가 낮아지는 방향을 택하는 것이 중요하다.

 

데이터 불순도를 측정하는 다양한 방법

1) 지니 인덱스

2) 엔트로피

3) 분류 오류

의사 결정 분석의 장단점

장점 단점
•설명력이 높다.
•결과에 대한 근거를 나뭇가지 형태로 추적할 수 있다.
•빠르고 변수 선택 능력이 있다.
•많은 변수들을 대상으로 종속변수에 영향이 높은 변수를 선택 할 수 있다.
•종속변수가 연속형일 때 쓸 수 없다.
•설명변수가 연속형일 때 낮은 예측능력을 보일 수 있다.
이분법적 사고로 인해 오류가 높을 수도 있다.
•자료의 추가에 의하여 나무구조가 바뀔 수 있다.
•비선형데이터에는 적합하지 못하다.
#install.packages("caret",dependencies = T,repos ="http://cran.rstudio.com/")

library(caret)
idx <-createDataPartition(iris$Species, p = 0.7, list=F)
iris_train<-iris[idx, ]
iris_test<-iris[-idx, ]
table(iris_train$Species)
table(iris_test$Species)

library(rpart)
rpart.result <-rpart(Species~., iris_train)
rpart.result

plot(rpart.result,margin = 0.2)
text(rpart.result,cex=0.8)

install.packages("rattle")
install.packages("rpart.plot")
library(rattle)
library(rpart.plot)
library(RColorBrewer)

rpart.plot(rpart.result)

 

https://ratsgo.github.io/machine%20learning/2017/03/26/tree/

 

의사결정나무(Decision Tree) · ratsgo's blog

이번 포스팅에선 한번에 하나씩의 설명변수를 사용하여 예측 가능한 규칙들의 집합을 생성하는 알고리즘인 의사결정나무(Decision Tree)에 대해 다뤄보도록 하겠습니다. 이번 글은 고려대 강필성

ratsgo.github.io

 

반응형

'AI > 머신러닝' 카테고리의 다른 글

머신러닝 지도학습 비지도학습  (0) 2021.05.17
'AI/머신러닝' 카테고리의 다른 글
  • 머신러닝 지도학습 비지도학습
코딩 코딩 코오딩
코딩 코딩 코오딩
  • 코딩 코딩 코오딩
    코딩하는 누누
    코딩 코딩 코오딩
  • 전체
    오늘
    어제
    • 분류 전체보기 (491)
      • 생산성 (2)
        • 인텔리제이 (2)
      • 프로젝트 기록 (14)
        • git (2)
        • spring (3)
        • TestCode (2)
        • spring security (3)
        • 기타 (2)
        • MySQL (0)
        • Cloud (2)
      • 회고 (4)
      • Spring (6)
      • JPA (0)
      • DB (4)
        • MySql (2)
        • Redis (1)
      • Java (7)
        • JSP (1)
      • 잡담 (1)
      • CS (30)
        • 컴퓨팅 사고 (0)
        • 배열 (4)
        • 알고리즘 (8)
        • 메모리 (7)
        • 자료구조 (9)
        • 암호학 (2)
      • opencv (14)
      • AI (56)
        • 머신러닝 (2)
        • 딥러닝 (7)
        • tensorflow (3)
        • 머신러닝(딥러닝) 정리 (21)
        • 강화학습 (7)
        • 논문 읽기 (1)
        • 잡동사니 (1)
        • python AI (13)
        • 선형대수 (1)
        • 확률론 (0)
      • 알고리즘 공부 (177)
        • 그래프 이론 (0)
        • 다익스트라 (4)
        • 위상정렬 (3)
        • 신장트리-크루스칼 알고리즘 (4)
        • 플로이드 워셜 (3)
        • 이진탐색 (9)
        • 백트래킹 (11)
        • 부르드포스 (9)
        • 다이나믹 프로그래밍 (20)
        • BFS & DFS (24)
        • 그리디 (6)
        • 구현 (15)
        • 정렬 (3)
        • 기타 (62)
        • 수학? (1)
      • 코딩 (173)
        • 파이썬(python) (15)
        • c언어 (13)
        • 프로그래머스 lv1 (46)
        • 프로그래머스 lv2 (41)
        • 백준 - c++ (49)
        • Softeer (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    BFS
    다이나믹 프로그래밍
    왜곡보정
    DFS
    C언어 기초
    선택정렬
    인접리스트
    프로그래머스
    인접행렬
    이미지처리
    에라토슽네스의 체
    백준
    정렬
    코딩문제
    스택
    코딩기초스킬
    자료구조
    그리디
    코딩테스트
    if문
    소수찾기
    c언어
    코딩
    캘리브레이션
    알고리즘
    삽입 정렬
    n진법 변환
    순차 탐색
    큐
    코딩기초
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩 코딩 코오딩
의사 결정 트리
상단으로

티스토리툴바