분류에 관한 관점으로 설명.
결정트리와 스무고개의 다른 점은
Decision Tree 는
정답의 후보가 정해져있다
질문의 선택지도 정해져 있다.
창의적으로 질문할 수 없고 데이터가 가지고 있는 feature 값 중에 질문할 수 있다.
닮은 점은
계속 파티셔닝을 해나간다
좋은 질문인지 나쁜 질문인지에 대해 판단하는 것이 비슷하다
(질문을 던졌을 때 우리가 예측해야하는 것에 대한 기준으로 봤을 때 100% 양분은 아니지만 클래스를 기준으로 적절히 나눠지는가, 정보획득량이 큰 질문인지.)
좋은 질문의 기준
정보획득량이 큰 것
카테고리를 기준으로 명확하게 잘 구분해주는 질문
규칙
하나의 feature에 대해 하나의 질문을 할 수 있다.
기하학적으로는 축에 수직인 경계선을 그리는 것이다. (대각선 X, 곡선 X)
대각선은 질문으로 규정될 수 없다.
학습
좋은 질문을 골라나가는 것, 던질 수 있는 질문들을 다 던져본다. (Greedy 하게)
정보획득량이 큰지 알아야 좋은 질문인지 아닌지 판별할 수 있다.
정보획득량을 계산하기 위해서는 Entropy, Gini 계수가 대표적이다.
Entropy : 불순도(서로 다른 카테고리가 섞여있는 정도)
minEntropy
Q
Entropy 가 최소가 되게 하는 Question을 찾겠다. 비슷한 구조로 이해할 수 있다.
logistic regression 은 대각선, weight를 찾겠다는 접근. 각이 정확한 각을 찾겠다는 것이며 이것은 weight 값에 의해 결정됨.
desicion tree 는 직선
질문을 한 가지 할 수 있는 decision tree는 logistic regression 보다 단순하다.
하지만 decision tree 는 수직선을 여러 번 반복해서 파티셔닝을 해서 찾겠다는 접근.
장점
단순한 계산을 여러번 반복하며, 한 번의 계산이 빨리 수행된다.
단순한 계산인 만큼 계산의 의미가 사람에게 해석이 잘 된다.
단점
학습에 대해 (Recursive partitioning, 반복적 분할) overfitting이 될 수 있다.
-> 가지치기 prunning(pre-prunning(scikit learn에서 지원하는 방법), post-prunning), 모델을 단순히 만드는 것. depth에 제한을 준다던지, 최소한 노드가 가지고 있어야 하는 크기를 정해주거나.. (규제화의 전략과 같다고 볼 수 있다.)
너무 잘게 쪼개져서 경향이 없어지는 것을 우려하는 것.
더 잘게 쪼개는 것은 경향을 잃어버릴 수 있으니까 max_depth 만으로 제한을 걸 수는 없다고 볼 수 있다.
이중 장치로 하나 더 걸어주는데, leaf node의 크기를 설정해 놓는 것이다. 최소한 이정도는 있어야 돼. 이런 것이다.
leaf node의 크기로 제한을 걸 때 두 가지 조건을 걸 수 있다.
하나는 쪼개지기 전에 애초에 갖고 있어야 하는 leaf node의 크기 min samples split
또 하나는 쪼개지고 났을 때 leaf node의 크기 min samples leaf
앙상블
이런 결정 트리의 경우 여러 개를 합쳐서 같이 사용한다.
Decision Tree 의 예측방식
찾은 질문을 반복해나가면서 해당 집단에 놓여있는 카테고리들의 비중으로 예측한다.
확률적이다.
예측 : 트레인셋의 평균으로 예측한다
학습 : minSquare = 편차
Q
'개발' 카테고리의 다른 글
AdaBoost (0) | 2022.11.10 |
---|---|
Random Forest (0) | 2022.11.10 |
머신러닝에서 convex (0) | 2022.11.09 |
모델 정리할 때 (0) | 2022.11.08 |
머신러닝 성능 개선 (0) | 2022.11.08 |