본문 바로가기
Machine Learning

DecisionTreeClassifier

by 찐남 2022. 6. 12.

결정 트리(Decision Tree)는

트리 계열의 머신러닝 알고리즘의 

가장 기본이 되는 모형입니다.

 

GBM, XGBoost, LightGBM 등

트리 계열의 부스팅 알고리즘을

이해하기 위해서는 가장 기본이 되는 

결정 트리 모형을 잘 이해해야 합니다.

 

이진 분류 예측에 활용되는 결정 트리를

사이킷런 패키진에 있는 

DecisionTreeClassifier 함수에 대해서 

알아보겠습니다. 

 


 

 

DecisionTreeClassifier Parameter

DecisionTreeClassifier(*, criterion='gini', splitter='best', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, class_weight=None, ccp_alpha=0.0)
  • criterion: {"gini", "entropy", "log_loss"}, default="gini"노드 분할의 품질을 측정하는 기능입니다.
    지원되는 기준은 Gini 불순도에 대한 "gini"
    Shannon information Gain에 대한
    "log_loss" 및 "엔트로피"입니다.

  • splitter: {"best", "random"}, default="best"
    각 노드에서 분할을 선택하는 데 
    사용되는 전략입니다. 
    "best" : 최상의 분할을 선택
    "random" : 무작위 분할을 선택
  • max_depth: int, default=None
    트리의 최대 깊이입니다. 
    None이면 모든 leaf의 불순도가 0이거나
    min_samples_split 샘플 미만이
    포함될 때까지 노드가 확장됩니다.

  • min_samples_split: int or float, default=2
    하위 노드를 분할하는 데 필요한 최소 샘플 수
    - int이면 min_samples_split을 
      최소 숫자로 간주합니다.
    - float이면 min_samples_split은 비율로
      간주합니다.
  • min_samples_leaf: int or float, default=1
    leaf 노드에 있어야 하는 최소 샘플 수
    모든 깊이의 분할 지점은
    왼쪽 및 오른쪽 분기 각각에
    최소 min_samples_leaf 훈련 샘플이
    남아 있는 경우에만 고려됩니다.
    - int이면 min_samples_leaf를 
      최소 숫자로 간주합니다.
    - float이면 min_samples_leaf는 비율로
      간주합니다.

  • min_weight_fraction_leaf : float, default=0.0
    leaf 노드에 있어야 하는
    가중치 합계(모든 입력 샘플)의
    최소 가중치 비율입니다.
    sample_weight가 제공되지 않은 경우,
    샘플은 동일한 가중치를 갖습니다.

  • max_features : int, float or {“auto”, “sqrt”, “log2”}, default=None
    최상의 분할을 찾을 때 고려해야 할 feature 수
    - int이면 각 분할에서 고려하는 max features 수
    - float이면 max_features는 비율을 의미함
    - auto이면 max_features = sqrt(n_features)
    - sqrt이면 max_features=sqrt(n_features)
    - log2이면 max_features=log2(n_features) 
    - None이면 max_features = n_features

  • random_state : int, RandomState instance or None, default=None
    estimator의 randomness 제어

  • max_leaf_nodes : int, default=None
    leaf node의 최대 수

  • min_impurity_decrease: float, default=0.0
    노드 분할을 위한 최소 불순도 감소율

  • class_weight: dict, list of dict or “balanced”, default=None
    {class_label: weight} 형식의 클래스와 
    관련된 가중치입니다. 
    None이면 모든 클래스의 가중치는 1
    multi class 문제의 경우
    dictionary list는 y의 열과
    동일한 순서로 제공될 수 있습니다.
    다중 출력(다중 레이블 포함)의 경우
    가중치는 모든 열의 각 클래스에 대해
    정의되어야 합니다.
    예를 들어 4개 클래스의
    다중 레이블 분류 가중치는
    [{0: 1, 1: 1}, {0: 1, 1: 5}, {0: 1, 1: 1}, {0: 1, 1: 1}]
    대신 [{1:1}, {2:5}, {3:1}, {4:1}].
    "balanced" 모드는 y 값을 사용하여
    n_samples / (n_classes * np.bincount(y))로
    입력 데이터의 클래스 빈도에
    반비례하는 가중치를 자동으로 조정합니다.
    multi class의 경우
    y의 각 열의 가중치가 곱해집니다.
    sample_weight가 지정된 경우 
    이러한 가중치에 
    sample_weight가 곱해집니다.

  • ccp_alpha: non-negative float, default=0.0
    최소 비용-복잡성 가지치기에 사용되는 
    복잡도 매개변수입니다. 
    ccp_alpha보다 작은 비용 복잡도 중
    가장 큰 하위 트리가 선택됩니다. 

 

DecisionTreeClassifier Attributes

  • classes_ : ndarray of shape (n_classes,) or list of ndarray
    클래스 레이블(단일 출력 문제) 또는 
    클래스 레이블 배열 목록(다중 출력 문제).
  • max_features_ : int
    max_features의 추론 값
  • n_classes_ : int or list of int
    클래스 수(단일 출력 문제의 경우) 또는 
    클래스 수를 포함하는 list(다중 출력 문제의 경우).
  • n_features_in_ : int
    fitting 과정에서 표시되는 feature 수

  • feature_names_in_ : ndarray of shape (n_features_in_,)
    fitting 과정에서 표시되는 feature name.
    X에 모두 문자열인 feature name이
    있는 경우에만 정의됩니다.
  • n_outputs_ : int
    fitting과정에서의 출력 수

 

DecisionTreeClassifier Method

Method 설명
apply(X[, check_input]) 각 샘플이 예측되는 잎의 인덱스 반환
cost_complexity_pruning_path(X, y[, ...]) 최소 비용-복잡성 가지치기 동안 가지치기 경로 계산
decision_path(X[, check_input]) 트리에서 결정 경로 반환
fit(X, y[, sample_weight, check_input]) 훈련 세트(X, y)에서 의사결정 트리 분류기 작성
get_depth() 의사 결정 트리의 깊이 반환
get_n_leaves() 결정 트리의 leaf 수 반환
get_params([deep]) 추정기에 대한 매개변수 반환
predict(X[, check_input]) X에 대한 클래스 또는 회귀 값 예측
predict_log_proba(X) 입력 샘플 X의 클래스 로그 확률 예측
predict_proba(X[, check_input]) 입력 샘플 X의 클래스 확률 예측
score(X, y[, sample_weight]) 주어진 테스트 데이터와 레이블의 평균 정확도 반환
set_params(**params) 추정기의 매개변수 설정

 

다음 포스팅에서는 간단한

결정 트리 모형을 적합에 대해서

알아보겠습니다.

 

반응형

댓글