[TIL] 결정트리, 랜덤포레스트

키키·2021년 10월 26일
0

TIL

목록 보기
13/19
post-thumbnail

1 결정트리(Decision Trees)

: 특성들의 수치를 가지고 질문을 통해 정답 클래스를 찾아가는 과정

  • 노드(node): 질문 또는 말단의 정답
  • 엣지(edge): 노드를 연결하는 선

1.1 결정트리 학습 알고리즘

결정트리는 노드를 어떻게 분할하는가에 대한 문제.
비용함수를 정의하고 그것을 최소화하는 알고리즘을 갖는다.

트리 학습에 자주 쓰이는 비용함수는 지니불순도(Gini Impurity or Gini Index)엔트로피(Entropy)가 잇다. 노드를 분할하는 시점에서 이러한 비용함수를 가장 많이 줄이는(불순도의 감소가 최대가 되는, 정보획득이 가장 큰) 특성을 찾아내는 것이 핵심이다.

  • 불순도(impurity): 여러 범주가 섞여 있는 정도
  • 불순도 감소량이 크다.
    = 정보 획득량이 많다.
    = 특성의 중요도가 크다.
  • 정보획득(Information Gain):특정한 특성을 사용해 분할했을 때 엔트로피의 감소량
  • IG(T,a)=H(T)H(Ta){\displaystyle IG(T,a)=\mathrm {H} {(T)}-\mathrm {H} {(T|a)}} = 분할전 노드 불순도 - 분할 후 자식노드 들의 불순도

뿌리노드에는 불순도 감소량(정보획득량)이 가장 큰 기준이 들어간다.(중요한 특성이다)

결정트리는 분기를 할때만 최적화되어있다. 만든 트리는 최적 트리는 아니다.

  • 이러한 알고리즘을 greedy 알고리즘이라 한다.
  • 결정트리가 노드를 분기하는 그 '순간'의 최적 결정을 내릴 뿐이지, 전체의 큰 그림을 보고 내리는 결정이 아니기 때문
  • 예를 들어서 3번 분기한다고 하면, 매분기마다 비용함수(불순도)가 작은방향으로 분기가 만들어지지만, 전체 결과로 나온것이 전체트리에서는 최적이 아닐수도 있음. 단순히 각각의 분기로만 계산해본 결과이므로.

결정트리는 상대적인 feature importance만 볼 수 있다. 절대적으로 믿을 수는 없다.

  • feature importance가 어떻게 계산되는지 공식을 보자
  • importance 공식은 해당 트리에서 각각의 feature가 불순도를 낮추는 데 기여한 비중인 것으로 기억하는데, DT와 importance 공식의 특성상 feature가 뿌리노드와 가까운 분기에서 쓰였을수록 매우 큰 importance를 차지한다.
  • feature importance가 낮다고해서 낮은중요도가 아니라 상위중요도에 많이 포함되서, 중요도가 낮게 나올수도 있다.

1.2 트리모델의 장점

  • 해석하기가 쉽다.
  • 스케일링을 안해줘도 된다.
  • 이상치에 영향을 덜 받는다.
  • 트리모델은 다중공선성의 영향을 덜 받는다.
    • 특성중요도가 높은 기준으로 먼저 분류하기 때문.
  • 특성상호작용을 피할 수 있다.
    • 선형모델과 달리 비선형, 비단조(non-monotonic), 특성상호작용(feature interactions) 특징을 가지고 있는 데이터 분석에 용의
  • 트리모델은 분류회귀 둘다 사용가능하다.(회귀에서는 말단 leaf 노드의 값 사이 평균을 통해 예측)

1.3 트리모델의 단점

  • 과적합 되기 쉽다.
    • 따라서 과적합을 해결하는 부분을 관심을 가져야 함(하이퍼 파라미터 튜닝, 복잡도 제한)
  • 데이터가 적을 때 사용하기 어렵다.
  • 샘플에 민감. 트리구조가 잘 바뀜(해석도 바뀜)

1.3.1 결정트리의 과적합 문제

하이퍼파라미터 튜닝을 통해 과적합을 줄일 수 있다.

  • max_depth: 트리의 최대 깊이
  • min_samples_split: 중간 노드를 나누는데 필요한 최소 샘플 수
  • min_samples_leaf: 말단 노드를 나누는데 필요한 최소 샘플 수

📎sklearn.ensemble.RandomForestClassifier

2 랜덤 포레스트

: 앙상블 방법으로써, 한 종류의 데이터로 여러 머신러닝 기본모델을 만들어 그 모델들의 예측결과를 다수결이나 평균 내어 예측하는 방법

  • 랜덤포레스트는 결정트리를 기본모델로 사용한다.
  • 기본모델(weak base learner): 앙상블에서 각 단위 모델에 쓰이는 모델의 종류.
  • 기준모델: 모델성능 평가의 비교 기준이 되는 모델. 타겟의 대략적인 모양.

2.2 앙상블의 장점

  • 실전에서도 많이 쓰이는 모델
  • 과적합 방지, 일반화 잘됨

랜덤 포레스트가 결정트리보다 성능이 떨어지는 이유?

  • 랜덤포레스트는 어떤 튜닝 없이 (디폴트) 데이터를 다 사용하지 않기 때문에 결정트리보다 성능이 떨어질 수 있다.
  • 하지만 결정트리보다 과적합 문제를 줄여줄 수 있다.
  • 그렇다고 무조건 랜덤포레스트가 과적합을 조절해주는 것은 아니다. 파라미터를 조절 해주어야 한다.

2.2.1 과적합방지

  • 여러 트리들이 있을 때, 트리마다 사용하는 특성이 다름
  • 독립성이 있음
  • 특성 자체를 랜덤하게 선택

랜덤포레스트의 작은 트리는 과적합이 되도 될까?

  • 상관없음
  • 각각의 특성들을 통해 전체를 판단하는 것이라 괜찮음
  • 작은 트리를 독립적으로 만들기 때문에

2.2.2 하이퍼파라미터 튜닝

max_features와 n_estimators 가 많을 수록 성능이 좋아질까?

  • 훈련 성능은 높아진다.
  • 과적합을 볼때는 검증 스코어를 조절해야 한다.

훈련 데이터 점수가 높은 상태에서, 하이퍼파라미터 조절시 훈련 점수가 낮아지고,
검증 점수가 높아진다면?

  • 과적합이 해소된 것이기에 조절 후 채택하는 것이 좋다.

2.3 배깅(Bagging, Bootstrap Aggregating)

  • 복원추출 후 (부트스트랩)
  • 집계(Aggregating)

2.3.1 부트스트랩 샘플링

: 샘플링 과정에서 복원추출을 함. 즉, 샘플을 뽑아 값을 기록하고 제자리에 돌려놓음

  • 샘플링을 특정한 수만큼 반복하면 부트스트랩 세트가 완성됨
  • 복원추출이기 때문에 중복을 허용함
  • 부트스트랩세트는 표본의 63.2%에 해당하는 샘플을 가짐(데이터가 충분히 크다고 가정)
  • 여기서 추출되지 않는 36.8%의 샘플을 OOB 샘플이라 함

2.3.2 OOB(Out-Of-Bag) 샘플

: 기본모델을 검증하는데 사용됨

기본모델에서 validation score 대신 oob를 사용하는 이유

  • 데이터가 부족하여, 검증 세트를 만들기 어려울 때 사용
  • oob는 랜덤포레스트에 내장 되어있음 -> 짐작하는 용도
  • 실제로는 validation score를 통해 확인한다.

oob_score=True로 사용해주는 이유

  • 단순히 oob_score를 계산하기 위해서
  • default 값은 False이다.(사용할지 않할지를 정할 수 있음)

2.4 순서형(ordinal) 인코딩

: 순서형 인코딩은 범주형 자료를 숫자로 맵핑한다.

랜덤포레스트에서는 원핫 인코딩 대신, ordinal encoding을 사용한다.

  • 지니 감소도(특성 중요도)에 따라 상위노드로 결정되는데, 하이 카디널리티는 원핫인코딩 실행 시 데이터의 구멍이 많아져서(data sparsity) 상위노드로 채택되기 어렵다.
  • 원핫인코딩에 비해 차원이 늘어나지 않아 해당 변수의 중요도가 떨어지지 않음
  • feature inportance의 경우에도 원핫인코딩시에 범주가 많을 때 높게 나오는 경향이 있음

그 외

지니불순도와 엔트로피는 면접에서도 자주 물어봄. 의미 잘 숙지하자!
잘하는 데이터 분석가는 무엇인가?

  • 남다른 인사이트를 주는 사람
  • 어려운 용어를 사용하기 보다는 현업에 유용한 정보를 줄 나만의 시각이 있는 사람이 중요하다.
    데이터 리터러시의 중요성
  • 📎다음 10년간 생존하기 위한 2가지 공부 (송길영 2부 바이브컴퍼니 부사장)
  • 단순히 정답을 맞추는 것이 중요한 것이 아니라, 스스로 문제를 정의하고 풀어내는 과정의 중요성(교육의 변화 방향성) 등을 느낄 수 있는 영상
  • 어려운 문제가 있을 때 그 상황을 빠르게 이해하고 학습하고 무엇이 핵심인지 분석하는 능력, 무엇이 문제인지 문제를 정의하는 능력, 그리고 해결책(인사이트)을 제안할 수 있는 능력 등이 단순히 데이터를 스크리닝 하는 것이 아니라, 마이닝(mining)하는 것과 연관된 능력이다.
  • 또한, 데이터 기술을 익히더라도 내가 관심있는 분야를 도메인으로 잘 설정해야 한다.
  • 관심사와 데이터 기술을 잘 접목하여 큰 시너지를 내자.

0개의 댓글