머신러닝 결정트리 모델

2019. 8. 5. 18:59기타

728x90

train data를 학습 시키면 그걸 토대로 질문을 만든다.

최대한 Yes or No 이분을 잘 할 수 있는 방향으로 질문을 만들게 되어있다.

그 과정에서 지니불순도, 엔트로피 점수같은 것을 이용하여 지가 비교하는 과정이 포함되어 있다.

 

하나의 질문에는 하나의 컬럼 내용만 들어있다.

예를 들어, 

성적이 n점이냐? 는 질문은 하지만

성적이 n점이고 학급이 y반이냐? 는 질문은 안한다.

 

 

 앙상블 : 한 가지 트리모델에 의존하지 않고, 다른 모델로도 해보고 나온 모든 결과물을 헤아려 예측값을 정하는 것이다. 

 

결정트리 모델은 디폴트로 과대적합하는 경향이 있다. 지 혼자서 질문을 하고 답을 헤아리다 보면 어느새 과대적합이 되게 된다.

그래서 과대적합을 제한하고자(모델 성능을 높이고자) 매개변수 3가지를 사용한다.

 

1) 리프 개수

2) 리프 내 샘플 개수

3) max depth 제한

 

이 세 가지 매개변수를 한번에 제어할 수 있는 방법이 grid search이다.

 

 

Q. 결정트리 모델과 KNN최근접모델의 비슷한 점?

A. 결정트리모델 분류에서는 Yes군 개수와 No팀 개수에 따라 Yes or No를 판단한다. 결정트리모델 회귀에서는 Yes군 샘플들의 평균값 또는 No군 샘플들의 평균값을 예측값으로 내놓는다.

 

Q. 결정트리모델 과대적합을 방지하는 방법?

A. 사전 가지치기 : 과대적합 각이 설 즈음에 질문을 중단한다.

 사후 가지치기 : 트리를 만든 후 데이터 샘플 개수가 적은 노드를 삭제하거나 병합하는 전략.

 

 

 Tree feature importances : 컬럼을 활용하여 질문을 만들었을때, 어떤 칼럼이 필터링에 영향을 많이 미쳤는지 보여준다. Feature selection에 활용할 수 있다.

 

 

Q. 결정트리모델과 시계열데이터는 왜 잘 맞지 않는가?

A. 내가 1990년 ~ 2000년의 데이터를 가지고 모델을 학습시키고, 2019년에 대한 예측값을 얻고자 한다고 생각해보자. 결정트리모델이 test data가 1995년 이전 데이터인가 아닌가 질문을 했을 때, 1995년 이후 데이터에 대해서는 모두 같은 결과값을 내놓기때문에 예측의 의미가 없다. 

결정트리모델이 test data가 2000년 이후 데이터인가 아닌가 질문을 한다고 해도 달라지는건 없다. 2010년이든, 2020년이든 모두 똑같은 결과값을 받기 때문이다.

728x90
반응형