글쓰기

스마트인재개발원/파이썬

[21.07.05] 딥러닝 이론

RSpring41 2021. 7. 6. 10:28

Decision Tree(결정트리)

 

- Tree를 만들기 위해 예/아니오 질문을 반복하며 학습한다.

- 다양한 앙상블(ensemble)모델이 존재한다

  (RandomForest, GradentBoosting, XGBoost, LighGBM)

  (앙상블 : 여러 개의 분류기를 생성하고, 그 예측을 결합하여 정확한 더욱 좋은 예측을 도출하는 기법)

 

- 분류와 회귀에 모두 사용 가능

- 타킷 값이 한 개인 리프 노드를 순수 노트라고 한다. 

- 모든 노드가 순수 노드가 될 때 까지 학습하면 복잡해지고 과대적합이 된다.

- 새로운 데이터 포인트가 들어오면 해당하는 노드를 찾아 분류라면 더 많은 클래스를 선택하고,

  회귀라면 평균을 구한다.

 

 

장단점 및 주요 매개변수

- 트리의 최대 깊이 : max_depth

(값이 클수록 모델의 복잡도가 올라간다.)

- 리프노드의 최대 개수 : max_leaf_nodes

- 리프노드가 되기 위한 최소 샘플의 개수 : min_samples_leaf

 

- 만들어진 모델을 쉽게 시각화할 수 있어 이해하기 쉽다.

  (white box model)

- 각 특성이 개별 처리되기 때문에 데이터 스케일에 영향을 받지 않아 특성의 정규화나 표준화가 필요 없다.

- 트리구성시 각 특성의 중요도를 계산하기 때문에 특성 선택(Feature selection)에 활용될 수 있다.

 

- 훈련데이터 범위 밖의 폰인트는 예측할 수 없다.

(ex : 시계열 데이터 

- 가지치기를 사용함에도 불구하고 과대적합되는 경향이 있어 일반화 성능이 좋지 않다.

 

* RootNode  : 시작 노트

* LeafNode : 종료 노트

 

Gini Impurity(지니 불순도)

데이터가 올바르게 분리 되었는지를 나타내는 지표

 

 

 

Decision Tree(결정트리) 과대적합 제어

- 노드 생성을 미리 중단하는 사전 가지치기(pre-pruning와 트리를 만든후에

  크기가 작은 노드를 삭제하는 사후 가지치기(pruning)가 있다.

(sklearn은 사전 가지치기만 지원)

 

- 트리의 최대 깊이나 리프노드의 최대 개수를 제어

-노드가 분할하기 위한 데이터 포인트의 최소 개수를 지정

 

독버섯 데이터 예제

- 독버섯 데이터 scv 파일

mushroom.csv
0.36MB

학습 순서

1.데이터 가져오기(로딩)
2.전체 컬럼, 행 파악
3.결측치 파악
4.문제와 정답으로 분리
5.모델
6.학습

 

% 문자데이터가 있다면 Label Encoding(라벨 인코딩)을 해줘야 한다.

-> 단순 수치 값으로 mapping 하는 작업

 

Label Encoding(라벨 인코딩)

 

여러 문자들을 특정 수치로 변경하는 작업

 

- One-hot Encoding

  -> 0 or 1 의 값을 가진 여러 개의 새로운 특성으로 변경하는 작업