반걸음마다 머신러닝~ 결정 나무에 대해~

입문


XGBoost 등 강력한 알고리즘의 기초가 되는 결정 트리
단순한 알고리즘이라 거의 공부하지 않고 알아내려고 했는데 실제로는 잘 몰라서 다시 조사했습니다.
어렵기 때문에 지식을 확인하고 준비해야 한다.

언어 정의


결정 트리는 분류에도 사용할 수 있고 회귀에도 사용할 수 있다.
여기서부터 분류는 분류 트리를 사용하고 회귀는 회귀 트리를 사용한다.
네가 결정 트리에 대해 이야기할 때, 너는 불순함을 발견할 수 있다
나는 이것이 특정 공식이 있는 이유가 아니라는 것을 전혀 모른다
는 모델에 의해 개별적으로 정의된 함수입니다.
분류된 상황에서 불순도로 지니계수와 교차엔트로피 오차를 사용한다
회귀 시 제곱 오차를 사용합니다.
평가 함수와 활성화 함수처럼 상황에 따라 무엇을 사용하는가.

구체적인 상황 고려


식당
회계 금액에 따라 고객의 성별을 예측하는 분류 트리
고객 성별에 따라 회계 금액을 예측하는 회귀 트리
사용자 정의 모양새를 정의합니다.
데이터 세트는 다음과 같습니다.
성별
회계 금액
남성
2300엔
남성
2200엔
남성
2180엔
여성
1500엔
여성
1470엔
여성
1220엔
한 번 보면 굳이 결정 트리를 사용하지 않아도 돼요.
1400엔 정도의 회계 금액은 여성이고 2200엔 정도는 남성이다
그렇다면 실제로 결정 트리는 어떤 과정을 통해 결론을 내릴까요?

분류 트리 상자


회계 금액에 따라 성별을 예측하는 상황에서 고려하다.
남성이나 여성의 2개 반 분류이기 때문에 분류 나무의 등장이다.
분류 트리에 대해 주어진 샘플 데이터를 분할하여 분할 후 데이터의 불순도가 가장 적은 점을 찾습니다.
이번 상황에서 우리는 남성과 여성의 데이터를 가장 아름다운 특징량과 분기점으로 나눌 수 있는 점을 찾을 것이다.
불순도에 관하여 상기 분류 시 지니계수와 교차엔트로피 오차 등을 사용한다
ジニ係数\\
E(t) = 1 - \sum_{n=1}^{N}P^2(C_n|t)\\
交差エントロピー誤差\\
E(t) = -\sum_{n=1}^{N}P(C_n|t)log_eP(C_n|t)\\
자신은 수학 지식이 없기 때문에 갑자기 아무런 정의도 없이 이런 식으로 나타나면 구역질이 난다.
정의를 설명하면서 구체적인 수치를 고려하다.
예를 들어 어떤 분할 기준으로 분할할 때 다음과 같이 샘플 데이터가 분할된다

이때 왼쪽 상자(남:1녀:2)의 지니계수와 교차엔트로피를 계산해 보세요.
우선, 두 함수의 공통 $P(C_n|t)$는 전체 $t$에 대응하는 각종 $C_n$퍼센트를 나타내는 함수입니다.
즉, $P(C_nut) =\frac{C_n}{t}$입니다.
지니계수
남녀 각각 $P(C_nut) =\frac {1} {3},\frac {2} {3}$
지니계수의 공식에는 $P^2 (C_nut) $와 제곱이 있기 때문에 각각 제곱은 $\frac {1} {9},\frac {4} {9}$입니다.
$\sum$가 첨부되어 있기 때문에 다른 반의 결과를 모두 1에서 뺀다.
$1 - (\frac{1}{9} +\frac{4}{9}) =\frac{4}{9} = 0.4444...$
이것이 바로 왼쪽 상자의 지니계수다.
교차 엔트로피 오차
$P (C_nut) $남녀는 각각 $\frac {1} {3},\frac {2} {3}$
여기에는 $log_eP(C_n|t)에 $를 곱하여 화합을 구하므로 계산해 보십시오.
$- ((-0.3658...) + (-0.2703....)) = 0.6361$
지니계수와 교차엔트로피 오차는 상자의 내용이 완전히 단일한 종류라고 가정하면 둘 다 0이다
낮을수록 좋은 지표라고 할 수 있다.

불순도를 최소화하는 분할점을 찾다


나는 분할의 장점을 어떻게 평가하는지 알게 되었다.
다음 문제는 분할점을 어떻게 찾는가이다.
이번 경우 남녀의 분류를 위해 부여된 데이터(특징량)는 회계 금액에 불과하다.
우선, 이 회계 금액을 정렬하여 데이터 간의 중점을 계산한다.

그리고 이 중점으로 데이터를 구분하여 불순도를 계산하고 각 분할점의 불순도를 계산한다.
이때 불순도는 좌우로 나누어 계산하고 좌우로 분배된 샘플 수에 따라 평균을 가중하여 이 분할의 불순도로 한다.

만약 이번 상황이라면 회계금액이 1840엔 이상인지에 따라 불순도 0은 남녀 3:3으로 나눌 수 있기 때문에 다른 점의 불순도를 계산하지 마세요.
만약 특징량이 여러 개가 있다면 다른 특징량도 마찬가지로 정렬하고 각 분할점의 불순도를 계산하여 가장 좋은 특징량과 분할점을 찾아라.
또 한 번의 분할만으로 남녀를 완전히 구분할 수 없다면 그곳에서 다음과 같은 분할을 계속한다.

반복적으로 분할하면 불순물도는 끊임없이 떨어지지만 모델로서 과도한 학습 훈련 데이터의 상태가 된다.
대책으로 적당한 곳에서 분할을 싫어하고 이미 있는 분할을 무효화시키는 것을 가위질이라고 한다.

회귀 트리의 경우


회귀 트리의 상황과 분류의 상황은 큰 변화가 없다
불순도가 가장 낮은 특징량과 분할점을 찾아 반복적으로 분할하다
회귀 트리의 경우 불순도로 같은 상자에 분류된 샘플의 평균값인 MSE(균일 오차)와 RMSE(균일 오차) 등
회귀 모델의 값 구하기 함수에 사용되는 함수입니다.
MSE\\
\frac{1}{N}\sum_{n=1}^{N}(y_n - y)^2\\
이번 경우라면 사용할 수 있는 특징량이 성별밖에 없기 때문에 부인할 수 없이 3:3으로 나뉘어 더 이상 분할할 수 없다.

그러나 특징량으로 제시된 다른 데이터가 있다고 가정하면 분류할 때와 마찬가지로 계속 분할된다.

끝내다


결정 트리는 XGBoost와 LightGBM 등 강력한 예측 모델의 기초입니다.
구조가 간단해서 알겠지만 찾아보니 불순물의 정의를 잘 이해하지 못하는 등
또한 분류 트리에 비해 회귀 트리에 대한 설명이 흔치 않아서 회귀 트리의 분할 기준이 어떻게 되는지 궁금해서 조사하고 정리했습니다.
주의할 생각입니다. 만약 잘못이 있으면 지적해 주십시오.

좋은 웹페이지 즐겨찾기