본문 바로가기
멋쟁이사자처럼 AIS7/오늘코드

[1101]지니 불순도, 엔트로피와 타이타닉 데이터 전처리

by YeonGun M 2022. 11. 1.

타이타닉 데이터

Q. 당뇨병 데이터셋보다 더 난이도가 있는 이유는?
A. 전처리할 데이터가 많다(결측치, 다양한 데이터 형식, 더 큰 크기)

데이터 전처리

  • 정규화(Normalization) : 숫자 스케일의 차이가 클 때 값을 정규분포로 만들어 주거나 스케일 값을 변경해 주는 것
  • 이상치(Outliers) : 이상치를 제거하거나 대체
  • 대체(imputation) : 결측치를 다른 값으로 대체
  • 인코딩(encoding) : 호칭, 탑승지의 위치, 문자 데이터를 수치화, 너무 범위가 큰 수치 데이터를 구간화

머신러닝과 데이터 타입
머신러닝 내부에서는 수치 데이터만 연산 가능 => 중요 feature의 경우 수치 데이터로 변환 필요

  • binary encoding : bool 값 등으로 변환 해주는 것(머신러닝 알고리즘에서 bool 값은 수치 데이터로 취급)
    ex. 타이타닉 데이터에서의 'Sex'
  • one-hot encoding

y_test가 없을 때 accuracy를 구하는 방법
hold-out-validation 이라든지 cross_validation을 사용해서 구한다

  • hold-out-validation : valid 가 한 조각
  • cross_validation : valid 가 여러 조각

Q. 캐글 등에서 제출 횟수를 제한한 이유?
A. 서버무리, 점수조작, 찍어 맞출 수도 있겠죠. 어뷰징 때문에 API등 도 제공하고 있기 때문에 너무 많이 제출하면 어뷰징(잘못된 사용)
어뷰징 사례 : 광고에서 어뷰징 AD Fraud 광고사기, 게임사기 다양한 분야에 어뷰징이 있을 수 있죠
캐글에는 상금걸거나 채용을 걸거나 상을 걸고 하는 대회에 어뷰징이 있을 수 있기 때문입니다. 그래서 하루 제출 횟수를 제한합니다. 한국 데이콘도 마찬가지 입니다.

지니 불순도

  • 0에 가까울수록 좋다
  • 짜장 짬뽕 중 아무거나가 아니라, 조금이라도 더 먹고 싶은지
  • 두 값이 얼마나 섞여있는가

로그

  • 지수함수의 역함수
  • 이진로그, 자연로그, 상용로그...
    1) x가 1이면 y는 0이다.
    2) x는 0보다 큰 값을 갖는다.
    3) x < 1 이면 y < 0, y는 - 무한대로 수렴
    => 0 < x < 1 이면 y는 음수

엔트로피 - 정보획득량
정보획득량은 정보 이론의 엔트로피의 개념에 근거를 두고 있다. 기술적인 관점에서 보면 정보는 발생 가능한 사건이나 메시지의 확률분포의 음의 로그로 정의할 수 있다. 각 사건의 정보량은 그 기댓값, 또는 평균이 섀넌 엔트로피인 확률변수를 형성한다.

클래스에 따라 최대 엔트로피가 달라진다.

  • 이진 클래스 : 엔트로피 np.log2(2) == 1
  • 멀티 클레스 : 엔트로피 np.log2(클래스개수)
    ex. 클래스 개수가 8개 라면 최대 엔트로피는 3이 됩니다. np.log2(8) == 3
  • 멀티클래스의 Metric 측정 방식 중 하나로 logloss 공식을 사용, 측정 공식이 엔트로피와 비슷하지만 다름

새넌 엔트로피(정보 엔트로피)
다양한 엔트로피 중 디시전트리에서 사용하는 엔트로피로, 정의는 아래와 같다.

  • 2 섀넌의 엔트로피: 2 개의 공정한 동전을 던질 때 정보 엔트로피는 발생 가능한 모든 결과의 개수에 밑이 2 인 로그를 취한 것과 같다. 2 개의 동전을 던지면 4 가지 결과가 발생할 수 있고, 엔트로피는 2 비트가 된다. 일반적으로 정보 엔트로피는 모든 발생가능한 결과의 평균적인 정보가 된다(위키백과).

정보이론 기초 - Entropy

Q. 지니불순도와 엔트로피를 사용하는 목적?
A. 값이 얼마나 섞여 있는지를 비교하기 위함이다. 분류를 했을 때 True, False 로 완전히 나뉘지 않는데 이 때 값이 얼마나 섞여있는지 수치로 확인하기 위해서이고, 0에 가까울 수록 다른 값이 섞여있지 않은 상태입니다. 분류의 분할에 대한 품질을 평가하고 싶을 때 사용합니다.

트리와 엔트로피, 지니불순도

  • 엔트로피: np.log2(클래스 개수)일때 가장 값이 많이 섞여있음
  • 지니불순도: 0.5일 때 가장 값이 많이 섞여 있음
    => 0에 가까울수록 분류가 잘 된 것
  • 트리가 아래로 갈 수록 0에 가까워지며 0이 되는 순간 트리 분할을 멈춤
    => 오버피팅(과대적합)일 가능성이 높아 일반화하기 어려움
    ex. 샘플의 개수가 [1, 0], [2, 0]일 때 엔트로피와 지니불순도는 0이지만 일반화 불가능

Q. 프로젝트 등을 할 때 지니불순도 등을 참고하게 되나요?
A. 캐글이나 데이콘 등에 제출하기 전에 시각화를 해보고 그 모델이 얼마나 잘 나뉘었는지 여러가지로 평가해 볼 수 있는데 이 때 함께 참고해 볼 수 있을거 같아요. 이 때 함께 참고해 볼 수 있는 것은 피처 중요도, 교차검증(cross validation) 값 등을 참고해 볼 수 있겠습니다.

댓글