본문 바로가기

배우기/복습노트[Python과 분석]

[복습] Python | 분석 | 불순도 + 하루끝(20240129)

728x90
반응형

불순도

 

1. 정의와 활용

  - 정의: 범주형 자료의 클래스끼리 혼합되어있는 정도

  - 활용: 분류모델에서의 변수 선택(변수 중요도 계산) 시 사용

 

 

2. 종류

  1) Gini index: 한 노드의 불순도를 측정하는 척도

G = 1 - (p1^2 + p2^2 + ...) 

 

2진 클래스의 불순도의 최고 → 반반 섞일 때

2진 클래스의 불순도의 최저 → 0

즉, 2진 클래스일 때 불순도 최고는 반반 섞일 때이므로 0.5,

가장 낮다는 것은 하나로만 구성된 것이므로 0

** 그러므로 2진 클래스일 경우 p=0.5일 때 불순도 최대(G=0.5)

                                                 p = 1 or  0 일때 불순도 최저(G=0)

** 클  수록 혼합되어있음을 나타낸다.

 

 

 

2) Entrophy index: 열역학에서 가져온 개념으로, 혼합 정도를 나타내는 척도. 한 노드의 불순도를 측정하는 척도.

 

E = -(p1*log2p1 + p2*log2p2 + ...)

개념 정도로 이해하기. log가 있어서 계산 문제는 나오기가 어렵다.

E 값이 클 수록 혼합되어 있음을 나타낸다.

 

 

 

root 노드에서 불순도가 최고이며, 좋은 변수들을 선택해서 불순도를 낮춰가는 데에 의의가 있다(가지치기 규칙). 불순도가 더 낮아지는 방향으로 가지치기가 결정된다. 선택할 수 있다면 가장 불순도의 갭이 커지는 변수가 좋은 변수이다. leaf 노드는 마지막 노드(종착지)인데, root 노드와 leaf 노드의 불순도 갭이 큰 쪽의 변수를 선택하는 것이 좋은 변수이다. 좋은 변수를 선택하면 트리가 짧아진다. 그러면 최종 성능이 좋아지며 과적합을 방직하게 된다.

오차의 최대 허용 개수라고 불리우는, min_samples_split으로 우리가 가지치기 개수를 결정할 수도 있다. 가지치기를 더 하고 싶으면 이 수치를 낮추면 되겠다. 적절한 stopping rule을 사용자가 결정할 수 있는데 이를 hyper parameter 라고 한다.

 

 

728x90

 

 

3) IG(Information Gain): 위 대비 아래, 즉 상위 노드와 하위 노드(부모노드와 자식 노드) 간의 불순도 차이를 측정하는 척도

 

부모 불순도 -(p1*자식1불순도 + p2*자식2불순도 + ...) (자식 size 만큼 가중치 p붙여서 계산)

IG = Gp(부모 불순도) - (P1*G1 + P2*G2 + ...)

 

IG를 얻으려고 할 때 자식노드의 두 노드 사이즈가 같을 경우 자식노드의 평균을 계산하여 부모노드의 차이로 계산한다.

즉, ★ 자식노드의 사이즈가 같을 경우 부모노드의 불순도에서 자식노드들의 불순도의 평균을 뺀 값으로 구한다.

 

 

예) 제품 구매 여부 예측 모델링(구매자: 5, 비구매자: 3)

** 성별에 따른 분류 시

남자 노드: 구매 2, 비구매 2

여자 노드: 구매 2, 비구매 1

 

 

풀이)

Gp = 1 - (4/7)**2  -   (3/7)**2   = 0.4897

Gm = 1 - (1/2)**2  - (1/2)**2    = 0.5

Gf = 1 - (2/3)**2   -  (1/3)**2  = 0.4444

IG = Gp - (4/7 * Gm  + 3/7 * Gf)

     = 0.014

 

 

 

4) 카이제곱통계량★ : 위 대비 아래, 즉 상위 노드와 하위 노드(부모노드와 자식노드) 간의 불순도 차이를 측정하는 척도.

                                    적합도 검정 때 나오는 개념이다.

                                    ** 적합도 검정: 기대확률(기대도수)에 실제도수가 얼마나 일치하는지

 

 

부모노드: 구매자 12명, 비구매자 6명

자식노드1: 총 10명(구매자 8명, 비구매자 2명)

자식노드2: 총 8명(구매자 4명, 비구매자 4명)

카이제곱 통계량 구하기

 

카이제곱통계량

= ((10*12/18 - 8)**2)/(10*12/18) + ((10*6/18 - 2)**2)/(10*6/18) + ((8*12/18 - 4)**2)/(8*12/18) + ((8*6/18 - 4)**2)/(8*6/18)
= 1.8

 

 

 

반응형

 

 

 

카이제곱 검정

1. 범주형 분석

  1) 적합도 검정: 특정 집단이 기대 집단과 일치하는지에 대한 검정

  - 기대집단에 대한 비율이 정해져 있을 때: 카이제곱 검정(예: 멘델의 유전법칙)

  - 기대집단에 대한 비율이 정해져 있지 않을 때: 정규성 가정(qqplot, hist, kde, 샤피로윌크, 콜모고로프 - 스미르노프)

 

이 때의

H0: 기대집단과 일치한다.

H1: 기대집단과 일치하지 않는다.

양측검정 같지만 적합도 검정은 완전한 오른쪽 검정. 왜냐하면 기대하는 것과 다르다는 것은 대립가설인데, 대립가설의 영역은 계속 커지기 때문이다.

 

예) 수업을 위해 세 개의 클래스를 운영(각 클래스의 비율이 같아야 함)

모집했더니 A반 24명, B반 32명, C반 36명

과연 균등한 배분이라고 할 수 있을까에 대한 가설검정.  이 때 적합도 검정을 수행하여야 한다.

 

카이제곱 통계량 구하기(예제)

EA = (((24+32+36) * (1/3)  - 24)**2)   / ((24+32+36) * (1/3)) 

EB =(((24+32+36) * (1/3)  - 32)**2)   / ((24+32+36) * (1/3)) 

EC = (((24+32+36) * (1/3)  - 36)**2)   / ((24+32+36) * (1/3))  

EA + EB + EC = 2.43

 

따라서 검정통계량은 2.43 

위의 검정통계량은 자유도가 2인 카이제곱분포를 따른다(오른쪽 검정)

이 때 임계값은 누적확률이 0.95가 되는 부분(반대쪽이 0.05가 되어야 하므로)

 

 

검정통계량이 5.9914보다 작으므로 영가설 채택.

그러므로 세 반이 균등하지 않다고 볼 수 없다.

 

  2) 독립성 검정: 이원분할표에서의 카이제곱검정

      예) 성별이 통신사 선택에 영향을 미치는가  ~ chisq(k1-1)(k2-1)

 

  3) 동질성 검정

 

 

 

2. (단일집단) 모분산 가설검정

V = (n-1)S^2 / sigma^2 ~ chisq(n-1)

 

카이제곱 검정이라고 불리우는 것은 위가 전부이다.

지금 우리가 분류분석에서 카이제곱 통계량을 계산하여야 하는데 이 때에는 네 가지 케이스 중에서 1) 적합도 검정이다.

 

 

 

 

카이제곱 통계량은 하위 노드에 집중한다.

카이제곱을 분류모델에 적용 시에 기대도수 관찰도수는 부모 노드 쪽에 있다. 정확히는 부모 노드 쪽에 기대 비율이 있다. 자식노드 관찰도수는 실제 도수이다. 부모 노드와 얼마나 다르냐를 측정하려면 기준이 있어야 하는데, 그 기준이 기대비율이라면 자식노드에 O가 두 개 씩 들어가야 하므로 기대도수가 2, 실제 도수가 1 이다(왼쪽 자식노드 기준). X는 기대되는 게 2개, 실제 관측이 3개이다(왼쪽 자식노드 기준)

 

 

카이제곱 통계량은 얼마만큼 불순도가 낮아졌느랴를 평가하는 것으로, 기대되는 것으로부터 얼마나 달라졌음을 측정하는 척도가 되겠다.

728x90
반응형