범위 : 6.2 트리 모델 ~ 6.3 배깅과 랜덤 포레스트
6.2 트리모델
주요용어
- 재귀분활(recursive partitioning) : 마지막 분활 영역에 해당하는 출력이 최대한 비슷한 결과를 보이도록 데이터를 반복적으로 분할하는 것
- 분할값 : 분할값을 기준으로 예측변수를 그 값보다 작은 영역과 큰 영역으로 나눈다
- 마디(노드) : 의사결정 트리와 같은 가지치기 형태로 구성괸 규칙들의 집합에서, 노드는 분할 규칙의 시각적인 표시
- 잎(leaf) : if-then 규칙의 가장 마지막 부분, 트리의 마지막 가지부분으로 트리모델에서 잎 노드는 어떤 레코드에 적용할 최종적인 분류 규칙을 의미
- 손실(loss) : 분류하는 과정에서 발생하는 오분류의 수, 손실이 클수록 불순도가 높다고 할 수 있다
- 불순도 : 데이터를 분할한 집합에서 서로 다른 클래스의 데이터가 얼마나 섞여있는지를 나타낸다. 더 많이 섞여 있을수록 불순도가 높다고 할 수 있다
- 가지치기 : 학습이 끝난 트리 모델에서 오버피팅을 줄이기 위해 가지들을 하나씩 잘라내는 과정
트리모델이란 if-then-else 규칙의 집합
의사결정나무 : (1) 종속, 독립 변수선택 > (2)성장 > (3) 가지치기 > (4) 타당성 평가 및 예측
(2) 성장 : 나무가 성장하기 위해 데이터를 분류기준을 통해 분류함
목적 : 자식노드의 순수도는 증가시키고 불순도는 감소시킴
분류기준 | 의미 | 방법 | 알고리즘 |
지니불순도 | 불순도가 낮도록 | 지니 불순도를 감소시켜주는 방향으로 지식 node를 만듦 | cart |
엔트로피 | 불확실도가 낮도록 | 엔트로피가 클수록 순수도가 낮음 | id3/c4.5 |
카이제곱 p값 | 분포가 동질하지 않도록 | p value가 가장 작은 예측 변수를 이용하여 node를 만듦 | chaid |
어떤 변수를 부모 노드로 시작할 것인가?
< 범주형일때 노드를 분류하는 법 > 분류 >
예) 대금지급 예측
전체 데이터 중 분류하고자 하는(카드 대금 결제 / 연체)게 가장 분명하게 구분하는 변수
> 기준 : 불순도, 순수도
불순도 : 다양한 범주들의 데이터들이 얼마나 포함되어 있는가
( 여러가지의 범주들이 섞여 있는 정도)
순수도 : 같은 범주들끼리 얼마나 많이 포함되어 있는가
1) 지니지수 : 불순도를 측정, 0에가까울 수록 순수한 노드
2) 엔트로피 계수 : 불확실성을 측정, 0에 가까울수록 순수한 노드
차이점(GPT)
(1) 계산방식(제곱합 SV 로그값의 곱) * sklearn에서는 기본적으로 지니지수 사용
> 더 간단하고 직관적이어서 계산이 빠름
(2) 불확실성의 최소화
엔트로피는 정보이론에 기반하여 분할에 정보적 특성이 더 강조
정보이득을 계산할 수 있기 때문에 불확실성이 얼마나 줄었는지 평가할 수 있기 때문
> 지니계수로도 정보이득을 구하지 않나..?
*정보이론 : 확률이 낮은 사건일 수록 정보량이 높다..?????
(3) 이진분류와 다중분류
* 이진분류 : 데이터를 두개로 분류하는 방법 (예: emil > spam or not)
* 다중분류 : 데이터를 서로 독립적인 세개로 분류하는 방법
엔트로피는 로그함수를 사용하기 때문에 제곱을 사용하는 지니 계수보다 더 민감하게 반응한다
3) 카이제곱값
카이제곱 검정 > 관측된 데이터가 기대값과 얼마나 차이가 나는지 평가
카이제곱 검정을 통해 노드의 분할이 통계적으로 유의한지 평가
> 카이제곱통계량이 작다는 것은 독립변수의 각 범주에 따른 종속변수의 분포가 서로 동일하는 것을 의미
즉, 독립변수가 종속변수에 영향을 주지 않는다
> 카이제곱 값이 큰 것을 선택하여 노드를 정한다
< 연속형일때 노드를 분류하는 법 > 회귀 >
1) F-통계량 (분산분석)
F = 분할 후 노드간 분산 / 분할 후 노드내 분산
*분할 후 노드간 분산 : 각 자식 노드의 평균값과 전체 평균값 간의 차이
*분할 후 노드내 분산: 자식노드 내 데이터 분산
> f통계량이 높은 것(노드간 분산이 큼)을 선택하여 변동성을 잘 설명하는 노드를 선택
2) 분산의 감소량
선택한 노드로 분리하였을때 분산의 감소량이 크다는 것
즉, 서로 이질적인 데이터(서로 다른곳에 있음)을 분리하여 동질적인 것으로 묶었다는것
> 분산이 큰 노드를 선택
3) 트리 형성 중지하기
최적의cp(복잡도 파라미터)를 결정하는 것은 평향-분산 트레이드보프를 보여주는 하나의 예
cp를 추정하는 가장 일반적인 방법은 교차타당성 검정
- 데이터를 학습용 데이터와 타당성검사용(홀드아웃) 데이터로 나눈다
- 학습 데이터를 이용해 트리를 키운다
- 트리를 단계적으로 가지치기 한다. 매 단계마다 학습 데이터를 이용해 cp를 기록한다
- 타당성검사 데이터에 대해 최소 에러를 보이는 cp를 기록한다
- 데이터를 다시 학습용 데이터와 타당성검사용 데이터로 나누고 마찬가지로 트리를 만들고 가지치기하고 cp를 기록하는 과정을 반복한다
- 이를 여러 번 반복한 후 각 트리에서 최고 에러를 보이는 cp값의 평균을 구한다
- 원래 데이터를 이용해 위에서 구한 cp의 최적값을 가지고 트리를 구한다
주요개념
- 의사결정 트리는 결과를 분류하거나 예측하기 위한 일련의 규칙을 생성
- 이 규칙들은 데이터를 하위 영역으로 연속적으로 분할하는 것과 관련
- 각 분할 혹은 분기는 어떤 한 예측변수 값을 기준으로 데이터를 위 아래 두 부분으로 나눈 것
- 각 단계마다, 트리 알고리즘은 결과의 불순도를 최소화하는 쪽으로 영역분할을 진행
- 더 이상 분할이 불가능할 때, 트리가 완전히 자랐다고 볼 수 있으며, 각 말단 노느 혹은 잎 노트에 해당하는 레코드들은 단일 클래스에 속한다, 새로운 데이터는 이 규칙 경로를 따라 해당 클래스로 할당된다
- 완전히 자란 트리는 데이터를 오버피팅하기 때문에, 노이즈를 제외한 신호에만 반응하도록 트리에 가지치기를 수행해야 한다
- 랜덤포레스트나 부스팅 같은 다중트리 알고리즘은 우수한 예측 성능을 보장한다, 하지만 규칙에 기반을 둔 잔일 트리 방법의 장점이라고 할 수 있는 전달 능력은 잃어버린다
6.3 배깅과 랜덤포레스트
용어정리
배깅(bagging) : 데이터를 부트스트래핑해서 여러 모델을 만드는 일반적인 방법
랜덤포레스트 : 의사결정트리모델에 기반을 둔 배깅추정 모델
변수 중요도 : 모델 성븡에 미치는 예측변수의 중요도
앙상블(ensemble) : 여러 모델의 집합을 이용해서 하나의 예측을 이끌어내는 방식
기본적인 앙상블 방법
- 주어진 데이터에 대해 예측 모델을 만들고 예측 결과를 기록한다
- 같은 데이터에 대해 여러 보델을 만들고 결과를 기록한다
- 각 레코드에 대해 예측된 결과들의 평균을 구한다
(1) 배깅 = bootstrap aggregating
- 만든 모델의 개수M과 모델을 만드는게 사용할 레코드의 개수릐 값을 초기회 한다, 반복변수m = 1
- 훈련 데이터로부터 복원추출 방법으로n개의 부분 데이터와Y와M을 부트스트래 재표본 추출한다
- 의사결정 규칙을 얻기 위해Y와x을 이용해 모델을 학습한다
- m=m+1로 모델 개수를 늘린다 m < M보다 작으면 2단계 부터 다시
2) 랜덤포레스트
랜덤포레스트에서는 알고리즘의 각 단계마다, 고를 수 있는 변수가 랜덤하게 결정된 전체 변수들의 부분집합에 한정된다.
주의 : 랜덤포레스트는 일정의 블랙박스로 직관적인 해석이 불가능하다
3) 변수 중요도
랜덤포레스트는 피처와 레코드의 개수가 많은 데이터에 대해 예측 모델을 만들때 장점이 있다
> 다수의 예측변수 중 어떤 것이 중요한지, 이들 사이에 존재하는 상관관계 항들에 관계를 정리한다
변수 중요도를 측정하는 두가지 방법
- 변수의 값을 랜덤하게 섞었다면, 모델의 정확도가 감소하는 정도를 측정한다. 변수를 랜덤하게 섞는다는 것은 해당변수가 예측에 미치는 모든 영향력을 제거하는 것을 의미한다(정확도는 OOB데이터로부터 얻는다)
- 특정변수를 기준으로 분할이 일어난 모든 노드에서 불순도점수의 평균 감소량을 측정한다. 이 지표는 해당 변수를 포한하는 것이 노드의 순도를 얼마나 개선하는지를 나타낸다. (이 지표는 학습 데이터를 기반으로 측정되기 때문에, OOB 데이터를 가지고 계산한 것에 비해 신뢰도가 떨어진다)
4) 하이퍼파리미터
주요개념
앙상블 모델은 많은 모델로부터 결과를 서로 결합해 모델 정확도를 높인디
배깅은 앙상블 모델 가운데 하나의 형태로, 부트스트랩샘플을 이용해 많은 모델들을 생성하고 이 모델들을 평균화 한다
랜덤포레스트는 배깅 기법을 의사결정 트리 알고리즘에 적용한 특별한 형태이다. 랜덤포레스트에서는 데이터를 재표본추출하는 동시에 트리를 분할할때 예측변수 또한 샘플링 한다
랜덤포레스트로부터 나오는 출력 중 유용한 것은 예측변수들이 모델 정확도에 미치는 영향력을 의미하는 변수 중요도 이다
랜덤 포레스트에서는 오버피팅을 피하기 위해 교차타당성검사를 통해 조정된 하이퍼파리미터를 사용한다
'학습노트 > 통계' 카테고리의 다른 글
[통계 학습] 칸 아카데미 오답노트1 (0) | 2024.07.08 |
---|---|
[통계학습] 부스팅과 주성분 분석 (0) | 2024.06.25 |
분류(3) ~ 통계적 머신러닝(1) (0) | 2024.06.17 |
[통계학습] 분류 (2) (0) | 2024.06.12 |
[통계학습] 분류 (1) (1) | 2024.06.10 |