엔트로피(Entropy)란? 🤔
안녕하세요! 오늘은 엔트로피(Entropy)에 대해 아주 쉽게 설명드리려고 해요. 🤗 엔트로피는 한 마디로 "무작위 변수의 예측 불가능성을 수치화한 것"이라고 할 수 있어요. 어렵게 들릴 수 있지만, 천천히 이해해볼게요! 🚀
1. 엔트로피가 뭐예요? 📊
무작위 변수(Random Variable)란 우리가 어떤 결과를 예측하기 힘든 변수예요. 예를 들어:
- 주사위를 굴렸을 때 나오는 숫자 🎲
- 코인을 던졌을 때 앞면 또는 뒷면이 나올 확률 🪙
엔트로피는 이 무작위 변수의 "얼마나 예측하기 힘든지"를 숫자로 표현한 거예요.
값이 클수록 예측이 어려운 상황이고, 값이 작을수록 예측이 쉬운 상황이랍니다. 😎
- 엔트로피 값이 낮은 경우 (0에 가까움):
- 데이터가 매우 규칙적일 때 발생해요.
- 예: 동전을 던졌을 때 항상 "앞면"만 나온다면, 예측이 너무 쉬워서 엔트로피 값은 거의 0에 가까워져요.
- 엔트로피 값이 높은 경우 (큰 값):
- 데이터가 매우 불규칙적이고, 결과를 예측하기 어려운 경우예요.
- 예: 주사위를 굴렸을 때 모든 숫자(1~6)가 동일한 확률로 나올 경우, 엔트로피 값이 더 커져요.
2. 엔트로피 공식 🧮
공식을 보면 약간 복잡해 보일 수 있지만 걱정 마세요! 😄
H(X) = - ∑ P(x) * log(P(x))
- P(x)는 각 결과가 나올 확률
- 로그(log)는 "정보량"을 계산하는 데 쓰이는 수학 도구
- 이 값을 합쳐서 음수(-)를 붙이면 엔트로피가 나와요.
엔트로피는 단위에 따라 두 가지로 표현돼요:
- Bits (2진수 로그): 컴퓨터가 쓰는 단위 💾
- Nats (자연 로그): 수학에서 흔히 쓰는 단위 🧮
3. 파이썬으로 엔트로피 계산하기 🐍
파이썬으로 간단히 엔트로피를 계산해볼까요? 😍
# 필요한 라이브러리 가져오기
import scipy.stats
import numpy as np
# 배열 생성
a = np.array([1,1,2,3,1,3,4,2,5,6,3,2,4,3])
# 확률 분포 계산
a_pdf = scipy.stats.norm.pdf(a)
# 엔트로피 계산
entropy = scipy.stats.entropy(a_pdf)
print("Entropy: ", entropy)
결과:
위 결과는 a 배열이 가진 엔트로피를 보여줘요. 값이 약 1.67로, 예측이 약간 어려운 데이터라는 걸 알 수 있어요. 📈
4. 쿨백-라이블러 발산(KL Divergence) 🤓
🧐 KL Divergence란?
엔트로피와 관련된 또 다른 개념으로, "두 확률 분포 간의 차이"를 측정해요.
간단히 말해:
- 두 확률 분포가 얼마나 비슷한지/다른지를 확인하는 방법이에요.
- 값이 0이면 두 분포가 완전히 동일하다는 뜻이에요.
공식:
D(P || Q) = ∑ P(x) * log(P(x) / Q(x))
- P(x)는 첫 번째 분포의 확률
- Q(x)는 비교할 두 번째 분포의 확률
5. 파이썬으로 KL Divergence 계산하기 🐍
# 라이브러리 가져오기
import scipy.stats
import numpy as np
# 두 개의 배열 생성
a = np.array([1,1,2,3,1,3,4,2,5,6,3,2,4,3])
b = np.array([1,1,3,4,2,4,5,2,5,6,3,2,4,3])
# 확률 분포 계산
a_pdf = scipy.stats.norm.pdf(a)
b_pdf = scipy.stats.norm.pdf(b)
# KL Divergence 계산
kl_div = scipy.stats.entropy(a_pdf, b_pdf)
print("KL Divergence: ", kl_div)
결과:
여기서 KL Divergence 값은 0.267이에요. 이는 a와 b 분포가 약간 다르다는 걸 보여줘요! 😄
6. 어디에 쓰이나요? 🤔
- 결정 트리(Decision Tree): 최적의 분할 기준을 찾는 데 사용 🧠
- 머신러닝 모델 선택: 최대 엔트로피 원칙(Maximum Entropy Principle) 적용 ⚙️
- 딥러닝: 변분 오토인코더(VAE) 같은 비지도 학습(Unsupervised Learning) 모델에서 사용 🌌
한 줄 정리 📝
엔트로피는 "얼마나 예측하기 어려운가", KL Divergence는 "두 분포가 얼마나 다른가"를 알려주는 도구예요. 데이터 분석, 머신러닝 등 다양한 분야에서 꼭 필요한 개념이랍니다! ✨
Entropy is a tool that tells us "how unpredictable something is," while KL Divergence is a tool that shows us "how different two distributions are."
'AI 공부 > Math 데이터사이언스 수학' 카테고리의 다른 글
[데이터사이언스 수학] Matrix Factorization(행렬 분해): 행렬을 분해하는 방법 🧩 SVD로 이미지 압축 (2) | 2025.01.04 |
---|---|
[데이터사이언스 수학] NORM 함수: 벡터의 크기를 측정하는 방법! 📏 (0) | 2025.01.04 |
[데이터사이언스 수학] Eigenvalues와 Eigenvectors: 데이터사이언스에서 꼭 알아야 할 핵심 개념! 📊 (0) | 2025.01.04 |
[데이터사이언스 수학] 📚 Determinant(행렬식): 행렬의 비밀을 푸는 열쇠! 🔑✨ (3) | 2025.01.03 |
[데이터사이언스 수학] 📚 Matrix와 Tensor: 데이터 사이언스 필수 개념! 🚀 (0) | 2025.01.03 |