본문으로 건너뛰기

섀넌 엔트로피 계산기

범주별 빈도나 확률로 비트 단위 엔트로피와 각 범주의 기여도를 구하세요.

분포

브라우저에서 처리해요.

0 이상인 값 2~100개를 공백, 쉼표 또는 세미콜론으로 구분하세요.

결과

분포를 입력하고 계산하세요.

사용 방법

10, 20, 30 같은 횟수라면 빈도, 각 값이 확률이고 합이 1이면 확률을 선택하세요. 0 이상인 값 2~100개를 공백, 쉼표, 세미콜론으로 구분하고 계산합니다. 범주 이름은 필요 없으며 결과 1, 2, 3은 첫째, 둘째, 셋째 입력에 대응합니다.

연한 빈도 예시 10, 20, 30은 바로 계산할 수 있습니다. 값 입력칸에 초점을 맞추면 선택 모드를 유지하고 예시가 한 번 지워집니다. 값이나 모드를 바꾸면 확정 결과가 지워지고 다시 계산할 때까지 복사가 비활성화됩니다. 지우기는 모드를 유지하고 숫자 목록을 비웁니다.

계산과 결과 항목

빈도 모드는 각 횟수를 전체 횟수로 나눠 확률을 구합니다. 확률 모드는 합이 1과 0.000000001 이내로 같아야 하며 아니면 수정을 요청합니다. 비트 단위 섀넌 엔트로피는 H = −Σ pᵢ log₂(pᵢ)입니다. 확률 0인 범주의 기여도는 정의상 0이며 0 log 0의 극한을 0으로 처리합니다.

기여도 목록은 입력 위치, 정규화 확률, −p log₂p 항을 연결합니다. 이 항의 합이 엔트로피입니다. 나열된 k개 범주의 최댓값은 log₂(k)로 균등분포에서 달성합니다. 정규화 엔트로피 H/log₂(k)는 범주 수가 다른 목록을 0~1로 비교할 때 유용합니다.

풀이 예시

빈도 10, 20, 30은 확률 1/6, 1/3, 1/2로 정규화됩니다. 기여도는 약 0.43, 0.53, 0.5비트이고 총 엔트로피는 약 1.46비트입니다. 세 범주의 최댓값 log₂(3)은 약 1.58비트이므로 정규화 엔트로피는 약 0.92입니다.

같은 빈도 1, 1, 1, 1은 정확히 log₂(4) = 2비트이고 정규화 엔트로피는 1입니다. 확률 0.5, 0.25, 0.25는 1.5비트입니다. 1, 1, 0은 1비트이며 0인 항목도 보이지만 기여도는 0입니다.

엔트로피 해석 시 주의점

엔트로피가 높으면 이 모형에서 한 범주를 뽑을 때 분포가 더 고르거나 덜 예측 가능하다는 뜻입니다. 낮으면 적은 범주에 더 집중되어 있습니다. 어떤 범주가 바람직한지, 차이가 통계적으로 유의한지, 패턴이 왜 생겼는지는 알려 주지 않습니다.

범주 정의와 수집 방식이 호환될 때만 비교하세요. 사용하지 않는 0 범주를 추가하면 H는 같지만 이론적 최댓값이 올라 정규화 엔트로피가 바뀝니다. 균등도를 비교하기 전에 범주 집합을 정하세요.

제한과 데이터 품질

일반적인 0 이상 소수만 허용하며 음수, NaN, 무한대, 모두 0인 빈도는 거부합니다. 빈도에 소수 가중치도 가능하지만 정수 횟수가 설명하기 쉽습니다. 불안정한 연산을 막기 위해 매우 큰 값은 제한합니다. 표시값은 반올림하고 합은 JavaScript의 전체 정밀도로 계산합니다.

분포 계산기이며 통계 추정기가 아닙니다. 편향 보정, 표본 구간, 가설 검정, 불확실성 측정을 제공하지 않습니다. 작은 표본의 엔트로피는 아래로 편향될 수 있고 누락하거나 합친 범주가 답을 크게 바꿀 수 있습니다.

자주 하는 질문

로그의 밑을 선택할 수 있나요? 아니요. 밑 2를 사용해 단위는 비트입니다. 1비트가 이진 비밀번호 문자 하나를 뜻하나요? 아니요. 이 분포 엔트로피는 비밀번호 강도, 암호학적 무작위성, 텍스트의 예측 불가능성을 보장하지 않습니다.

확률 합이 1이어야 하는 이유는 무엇인가요? 완전한 분포라고 가정하기 때문입니다. 임의의 0 이상 가중치를 정규화하려면 빈도를 사용하세요. 결과 복사에는 합계, 최댓값, 정규화 엔트로피, 위치별 기여도가 포함되며 입력을 저장하거나 전송하지 않습니다.