1. criterion
- entropy
- 랜덤 변수에 대한 정보를 계산하는 것을 '정보 엔트로피' 또는 '엔트로피'라고 함
- 각 사건의 확률에 대한 로그에 각 사건의 확률을 곱한 값의 합계의 음수
- 0.0 ~ 1.0 사이의 값
- 1개의 클래스만 구성되어 있으면(100%의 순도) 0, 2개의 클래스가 같은 비율로(50:50)로 섞여 있으면 1.0
- gini(지니계수)
- 집합에 이질적인 것이 얼마나 섞였는지를 측정하는 지표
- 0.0 ~ 0.5 사이의 값
- 100% 순수한 노드로 구성되어 있으면 0, 클래스별로 균등하게 분포되어 있으면(50:50) 0.5
- 로그를 계산할 필요가 없어서 엔트로피보다 구현 성능이 좀 더 우수함
#주사위 던지기의 엔트로피 계산
from math import log2
#경우의 수
n = 6
#확률
p = 1.0/n
#엔트로피 공식
entropy = -sum([p*log2(p) for _ in range(n)])
#############################################
def gini(x):
#평균 절대 오차
mad = np.abs(np.subtract.outer(x,x)).mean()
#평균 절대 오차를 평균으로 나누고
rmad = mad/np.mean(x)
#0.5를 곱하여 리턴
g = 0.5 * rmad
return g
2. splitter
- 각 노드에서 분할을 선택하는데 사용된 전략
- best : 최상의 분할을 선택하는 방식(랜덤포레스트에서 사용하는 방식)
- DecisionTreeClassifier(splitter='best', random_state=0)
- random : 무작위 분할을 선택하는 방식(엑스트라 트리에서 사용하는 방식)
- DecisionTreeClassifier(splitter='random', random_state=0)
3. ccp_alpha
- 가지치기 양을 조절하는 옵션(가지치기↑ 나무의 성장)
- 값이 커지면 가지치기하는 노드수 증가
- 값이 작아지면 가지치기하는 노드수가 감소
- alpha가 0이면 과적합 문제가 있을 수 있다
- ccp_alpha ∝ impurities
- impurities : 불순도
4. max_leaf_nodes
- leaf nodes의 최대 개수
- leaf nodes : 자식 노드가 없는 도드
- min_samples_leaf : lead node가 되기 위한 최소한의 샘플 개수
- min_samples_split : 노드가 분기할 수 있는 최소 샘플 개수
5. TPR 민감도와 FPR 특이도
- 민감도(TPR, True Positive Rate)
- 1을 1로 잘 맞춘 비율
- 재현율(recall)이라고도 함
- 특이도(FPR, False Positive Rate)
- 실제값 0을 1로 잘못 예측한 비율
- 위양성율(fall-out)이라고도 함
- 낮을수록 좋은 모형
- 민감도와 특이도는 일반적으로 양의 상관관계가 있다.
민감도를 높이기 위해서는 True로 판단하는 기준(threshold)을 낮춘다.
그러면 False를 True로 판단하는 샘플이 증가하게 되어 특이도가 동시에 증가한다.
반대로 특이도를 낮추기 위해 True로 판단하는 기준을 높이면 민감도가 떨어진다.
6. ROC와 AUC
- ROC curve
- 클래스 판별 기준값의 변화에 따른 민감도와 특이도의 변화를 시각화 한 것
- 판별함수의 판별 기준값이 달라질 때 판별 결과가 어떻게 달라지는 지를 표현한 그래프
- 어떤 모델을 사용하는게 더 좋을지 판단할 때 용이하게 사용됨
- 판별함수 : 음수이면 0, 양수이면 1로 판별함, 0이 판별기준이 됨
- roc_curve()함수는 이진분류에만 지원됨
- 다중 클래스에 대해서는 ROC Curve를 그릴 수 없으므로 각각의 클래스에 대해 별도로 ROC Curve를 그려야함
- AUC(Area Under the Curve)
- ROC Curve의 면적
- 1에 가까울수록 좋은 모형
8. 회귀트리
- 회귀 트리는 해석하기 쉽다는 의사나무 결정의 장점을 그대로 가짐
- 의사결정나무와 차이점
- 의사결정 나무는 분류에 사용
- 회귀 트리는 예측에 사용
- 선형회귀모형: 직선모양
- 결정트리모형은 학습용 데이터의 범위를 벗어나는 새로운 데이터를
예측할 능력이 없음(트리 모형의 단점) - 새로운 데이터를 예측하려면 시계열분석, 순환신경망(RNN) 등을
사용하여 분석하는 방법을 사용해야 함
- 결정트리모형은 학습용 데이터의 범위를 벗어나는 새로운 데이터를
출처
'Study > Python' 카테고리의 다른 글
Python | 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape (0) | 2023.06.29 |
---|---|
Python | K-NN vs. K-Means (0) | 2022.05.19 |
Python | 의사결정나무 Decision Tree (0) | 2022.04.20 |
Python | 회귀분석 (0) | 2022.03.23 |
Python | 데이터 전처리 (0) | 2022.03.23 |