엔트로피와 정보 획득이란 무엇입니까?


338

이 책을 읽고 있는데 ( NLTK ) 혼란 스럽습니다. 엔트로피다음과 같이 정의됩니다 .

엔트로피는 각 레이블의 확률에 동일한 레이블의 로그 확률을 곱한 값의 합입니다.

텍스트 마이닝과 관련하여 엔트로피최대 엔트로피 를 어떻게 적용 할 수 있습니까? 누군가 나에게 쉽고 간단한 예를 줄 수 있습니까 (시각적)?


1
훌륭하고 직관적 인 솔루션 math.stackexchange.com/questions/331103/…
Ravi G

이 질문에 대한 훌륭하고 직관적 인 답변 math.stackexchange.com/questions/331103/…
Ravi G

비디오 좋은 간단한 설명은
Grijesh 차우

답변:


1048

나는 의사 결정 트리 를 구축 할 때 엔트로피가 언급되었다고 가정한다 .

설명하기 위해하는 작업 상상 학습분류 남성 / 여성 그룹으로 처음 이름을. 여기에는 각각 m또는로 레이블이 지정된 이름 목록이 제공되며 , 데이터에 맞는 모델f 을 배우고 보이지 않는 새로운 이름의 성별을 예측하는 데 사용할 수 있습니다.

name       gender
-----------------        Now we want to predict 
Ashley        f              the gender of "Amro" (my name)
Brian         m
Caroline      f
David         m

첫 번째 단계는 예측하고자하는 대상 클래스와 관련된 데이터 기능결정하는 것 입니다. 특징의 예는 다음과 같습니다 : 첫 글자 / 마지막 글자, 길이, 모음 수, 모음으로 끝나는가 등. 특징 추출 후 데이터는 다음과 같습니다.

# name    ends-vowel  num-vowels   length   gender
# ------------------------------------------------
Ashley        1         3           6        f
Brian         0         2           5        m
Caroline      1         4           8        f
David         0         2           5        m

목표는 의사 결정 트리 를 구축하는 것 입니다 . 나무 의 예 는 다음과 같습니다.

length<7
|   num-vowels<3: male
|   num-vowels>=3
|   |   ends-vowel=1: female
|   |   ends-vowel=0: male
length>=7
|   length=5: male

기본적으로 각 노드는 단일 속성에서 수행되는 테스트를 나타내며 테스트 결과에 따라 왼쪽 또는 오른쪽으로 이동합니다. 클래스 예측 ( m또는 f) 이 포함 된 리프 노드에 도달 할 때까지 트리를 계속 탐색합니다.

따라서이 트리에서 Amro 라는 이름을 실행하면 " is length <7? " 테스트를 시작 하고 대답은 yes 이므로 해당 분기로 내려갑니다. 분기 후, 다음 테스트는 " 모음 수 <3? " 이며 다시 true로 평가됩니다 . 이것은이라는 레이블이 붙은 리프 노드로 이어지고 m, 따라서 예측은 남성입니다 (그래서 나는 나무가 결과를 정확하게 예측했습니다 ).

의사 결정 트리는 하향식으로 작성 되지만 문제는 각 노드에서 분할 할 속성을 어떻게 선택합니까? 답은 대상 클래스를 가장 순수한 가능한 하위 노드로 가장 잘 분할하는 기능을 찾는 것입니다.

순도정보 라고합니다 . 그것은 나타냅니다 예상 양의 정보를 노드에 도달 예를 주어, 새로운 인스턴스 (첫 번째 이름) 남성 또는 여성으로 분류해야하는지 여부를 지정하는 데 필요하다. 노드의 남성 및 여성 클래스 수를 기반으로 계산합니다.

반면 엔트로피 불순물 의 측정치입니다(반대). 값이/ 인 이진 클래스에 대해 정의됩니다.ab

Entropy = - p(a)*log(p(a)) - p(b)*log(p(b))

이진 엔트로피 함수 는 아래 그림에 나와 있습니다 (무작위 변수는 두 값 중 하나를 사용할 수 있음). 이 확률이 최대 일 때 최대 값에 도달합니다 p=1/2. 즉, p(X=a)=0.5또는 p(X=b)=0.550 % / 50 %의 확률로 a또는 b불확실성이 최대 임을 의미합니다 . 확률이 경우 엔트로피 함수 제로 최소 인 p=1또는 p=0완전한 확실성 ( p(X=a)=1또는 p(X=a)=0각각 후자는 의미 p(X=b)=1).

https://en.wikipedia.org/wiki/File:Binary_entropy_plot.svg

물론 엔트로피의 정의는 N 개의 결과 (2 개가 아닌)를 갖는 불연속 랜덤 변수 X에 대해 일반화 될 수 있습니다.

엔트로피

( log공식에서는 일반적으로 밑이 2 인 로그로 간주 됨 )


이름 분류 작업으로 돌아가서 예를 살펴 보겠습니다. 나무를 만드는 과정에서 어느 시점에서 다음과 같은 분할을 고려한다고 상상해보십시오.

     ends-vowel
      [9m,5f]          <--- the [..,..] notation represents the class
    /          \            distribution of instances that reached a node
   =1          =0
 -------     -------
 [3m,4f]     [6m,1f]

당신이 볼 수 있듯이, 분할 전에 우리는 9 명의 남성과 5 명의 여성, 즉 한 P(m)=9/14P(f)=5/14. 엔트로피의 정의에 따르면 :

Entropy_before = - (5/14)*log2(5/14) - (9/14)*log2(9/14) = 0.9403

다음으로 우리는 그것을 두 개의 자식 가지를 보면서 분할을 고려한 후 계산 된 엔트로피와 비교합니다. 의 왼쪽 지점 ends-vowel=1에는 다음이 있습니다.

Entropy_left = - (3/7)*log2(3/7) - (4/7)*log2(4/7) = 0.9852

의 오른쪽 지점 ends-vowel=0에는 다음이 있습니다.

Entropy_right = - (6/7)*log2(6/7) - (1/7)*log2(1/7) = 0.5917

각 브랜치 아래에있는 인스턴스 수를 가중치 요소 (7 개의 인스턴스가 왼쪽, 7 개의 인스턴스가 오른쪽)로 사용하여 왼쪽 / 오른쪽 엔트로피를 결합 하고 분할 후 최종 엔트로피를 얻습니다.

Entropy_after = 7/14*Entropy_left + 7/14*Entropy_right = 0.7885

이제 분할 전후의 엔트로피를 비교하여 정보 획득 척도 또는 특정 기능을 사용하여 분할을 수행하여 얻은 정보량을 얻습니다.

Information_Gain = Entropy_before - Entropy_after = 0.1518

위의 계산을 다음과 같이 해석 할 수 있습니다.이 end-vowels기능 을 사용하여 분할을 수행하면 하위 트리 예측 결과의 불확실성을 소량의 0.1518 ( 정보 단위로 비트 단위 로 측정)로 줄일 수있었습니다 .

트리의 각 노드에서이 계산은 모든 기능에 대해 수행되며, 정보 게인가장 큰 기능 은 탐욕스러운 방식으로 분할에 대해 선택됩니다 (따라서 불확실성 / 엔트로피가 낮은 순수한 분할 을 생성하는 기능을 선호 함 ). 이 프로세스는 루트 노드 다운에서 재귀 적으로 적용되며 리프 노드에 동일한 클래스를 가진 인스턴스가 모두 포함 된 경우 중지됩니다 (더 이상 분할 할 필요 없음).

숫자 기능 , 누락 값 , 과적 합가지 치기 트리 등 을 처리하는 방법을 포함 하여이 게시물의 범위를 벗어난 일부 세부 정보 는 건너 뛰었습니다 .


1
@ all3fox : 그것은에 도달하는 경우이 마지막 단락에 설명되어, 프로세스가 특정 지점에 대한 중지해야 순수한 노드 (모든 인스턴스가 같은 클래스에 속하는 잎 노드가 더 이상 분할 할 수 질수 있도록). 따라서 노드는 포함 된 유일한 클래스를 예측합니다.
Amro

3
@ all3fox : 실제로 순수한 노드로 가는 것은 과적 합으로 고통받는 상당히 깊은 의사 결정 트리 (즉, 훈련 데이터에 잘 맞지만 훈련 세트에 표시되지 않은 다른 데이터에는 일반적으로 좋지 않은 트리)를 생성합니다. 따라서 우리는 보통 리프 노드에서 특정 최소 수의 인스턴스에 도달하면 (그리고 대다수 클래스를 예측할 때) 중지하거나 일종의 정리를 수행합니다 (자세한 내용은 위의 Wikipedia 링크 참조).
Amro

3
@Jas : 여기에 잘 설명되어 있습니다 : en.wikipedia.org/wiki/…
Amro

1
@Rami : 맞습니다. 과적 합 과 같은 문제를 피하기 위해 작은 나무가 큰 나무보다 선호됩니다 (즉, 적은 테스트로 결정에 도달). 분할 피처가 선택되는 휴리스틱은 탐욕스러운 검색 알고리즘이므로 생성 된 트리가 가능한 모든 트리 공간에서 가장 작은 트리임을 보장하지는 않습니다 (전 세계적으로 최적 인 1 개의 wrt 분류 오류가 보장되지 않음). ). 이것은 실제로 NP- 완전 문제입니다 ...
Amro

1
@Rami : 흥미롭게도 다른 접근법을 취하는 앙상블 학습 방법이 있습니다. 하나의 아이디어는 각 후보 분할에서 기능임의의 하위 집합을 선택하고 이러한 임의의 트리를 빌드하고 결과를 평균화 하여 학습 알고리즘을 무작위 화하는 것입니다. 또한 랜덤 포레스트 와 같은 알고리즘을 확인할 가치가 있습니다.
Amro

45

우선 이해하는 것이 가장 좋습니다 the measure of information.

우리는 어떻게 할 measure정보?

일어날 수없는 일이 발생하면 큰 소식이라고합니다. 또한 우리가 예측할 수있는 말을 할 때 실제로는 흥미롭지 않습니다. 이것을 정량화 interesting-ness하려면 함수가

  • 이벤트 확률이 1 (예측 가능) 인 경우 함수는 0을 제공합니다.
  • 사건의 확률이 0에 가까우면, 함수는 높은 숫자를 주어야합니다
  • 확률 0.5 이벤트가 발생하면 one bit정보를 제공 합니다.

제약 조건을 충족시키는 자연 측정법 중 하나는

I(X) = -log_2(p)

여기서 p 는 사건의 확률입니다 X. 그리고 단위는 bit컴퓨터와 같은 비트 컴퓨터에 있습니다. 0 또는 1.

실시 예 1

공정한 동전 뒤집기 :

하나의 코인 플립에서 얼마나 많은 정보를 얻을 수 있습니까?

대답 : -log(p) = -log(1/2) = 1 (bit)

실시 예 2

유성이 내일 지구에 닿으면 p=2^{-22}22 비트의 정보를 얻을 수 있습니다.

내일 해가 뜨면 p ~ 10 비트 정보입니다.

엔트로피

따라서 우리 interesting-ness가 사건 에 대한 기대를 가지면 Y그것은 엔트로피입니다. 즉, 엔트로피는 사건의 흥미의 기대 값입니다.

H(Y) = E[ I(Y)]

보다 공식적으로 엔트로피는 이벤트의 예상 비트 수입니다.

Y = 1 : 사건 p가 확률 p로 발생합니다.

Y = 0 : 확률 1-p에서 이벤트 X가 발생하지 않음

H(Y) = E[I(Y)] = p I(Y==1) + (1-p) I(Y==0) 
     = - p log p - (1-p) log (1-p)

모든 로그에 대한 로그베이스 2


22

나는 당신에게 그래픽을 줄 수는 없지만 아마도 명확한 설명을 줄 수 있습니다.

하루에 한 번 빨간색이나 녹색으로 깜박이는 빛과 같은 정보 채널이 있다고 가정합니다. 얼마나 많은 정보를 전달합니까? 첫 번째 추측은 하루에 1 비트 일 수 있습니다. 그러나 발신자가 세 가지 옵션을 갖도록 파란색을 추가하면 어떻게 되나요? 우리는 2의 거듭 제곱 이외의 것을 처리 할 수있는 정보를 원하지만 여전히 가산 적입니다 (가능한 메시지 수에 2를 곱하는 방법에 1 비트가 추가됨 ). 로그 2 (가능한 메시지 수) 를 가져 와서이 작업을 수행 할 수 있지만보다 일반적인 방법이 있습니다.

빨간색 / 녹색으로 돌아 왔지만 램프가 항상 녹색으로 깜박이도록 빨간색 전구가 타 버렸다고 가정합니다. 채널은 이제 쓸모가 없습니다. 우리는 다음 번 플래시가 무엇인지 알고 있습니다.플래시는 정보 나 뉴스를 전달하지 않습니다. 이제 전구를 수리하지만 빨간색 전구가 연속으로 두 번 깜박이지 않을 수있는 규칙을 부과합니다. 램프가 빨간색으로 깜박이면 다음 플래시가 무엇인지 알 수 있습니다. 이 채널에서 비트 스트림을 보내려고하면 비트보다 플래시를 더 많이 인코딩해야합니다 (실제로 50 % 이상). 그리고 일련의 플래시를 설명하려면 비트 수를 줄이십시오. 각 플래시가 독립적 (문맥이없는) 인 경우에도 동일하게 적용되지만 녹색 플래시가 빨간색보다 더 일반적입니다. 완전 녹색, 전구 소손 제한.

다른 심볼의 확률에 따라 신호의 정보량을 측정하는 방법이 있습니다. 심볼을 수신 할 확률은 X 경우 피의이다 후 양을 고려

-log p i

작은 쪽의 I , 더 큰 값이. x i 가 거의 두 배가되지 않으면 이 값은 고정 된 양만큼 증가합니다 (log (2)). 이것은 메시지에 1 비트를 추가한다는 것을 상기시켜 줄 것입니다.

기호가 무엇인지 알지 못하지만 (확률은 알고 있음) 다른 가능성을 합산하여이 값의 평균을 계산할 수 있습니다.

I = -Σ p i log (p i )

이것은 한 번의 플래시 정보 정보입니다.

빨간색 전구가 타 버림 : p 빨간색 = 0, p 녹색 = 1, I =-(0 + 0) = 0
빨간색과 초록색 같음 : p 빨간색 = 1/2, p 녹색 = 1/2 , I =-(2 * 1/2 * log (1/2)) = log (2)
가능한 세 가지 색상 : p i = 1/3, I =-(3 * 1/3 * log (1/3)) = log (3)
녹색과 적색, 녹색, 두 배 가능성 : p 적색 = 1/3, p 녹색 = 2 / 3, I =-(1/3 log (1/3) + 2/3 log (2/3)) = log ( 3)-2/3 로그 (2)

이것은 메시지의 정보 내용 또는 엔트로피입니다. 다른 기호가 평등 할 때 최대입니다. 당신이 물리학 자라면 자연 로그를 사용하고, 컴퓨터 과학자라면 로그 2 를 사용 하고 비트를 얻습니다.


10

정보 이론, 베이지안 방법 및 MaxEnt에 대해 읽어보십시오. 시작하는 곳은 David Mackay의 (무료 온라인) 책입니다.

http://www.inference.phy.cam.ac.uk/mackay/itila/

이러한 추론 방법은 단순히 텍스트 마이닝보다 훨씬 일반적이며이 책에 포함 된 일반적인 기본 사항이나 머신 러닝 및 MaxEnt 베이지안에 대한 다른 입문서를 배우지 않고 어떻게 NLP에 적용하는 방법을 배울 수 있을지 모릅니다. 행동 양식.

엔트로피와 확률 이론과 정보 처리 및 저장 사이의 연결은 실제로 매우 깊습니다. 그것의 맛을 내기 위해, 잡음이 많은 통신 채널을 통해 오류없이 통과 할 수있는 최대 정보량은 노이즈 프로세스의 엔트로피와 같다고 말하는 Shannon의 정리가 있습니다. 또한 컴퓨터에서 가능한 최소 메모리를 차지하기 위해 데이터를 압축 할 수있는 양을 데이터를 생성 한 프로세스의 엔트로피에 연결하는 정리도 있습니다.

커뮤니케이션 이론에 관한 모든 이론에 대해 배우는 것이 실제로 필요하다고는 생각하지 않지만 엔트로피, 계산 방법, 정보 및 추론과의 관계에 대한 기본 사항을 배우지 않으면 이것을 배울 수는 없습니다. ...


라파엘도 같은 생각을했습니다. 스택 오버플로에서 양자 물리학이 무엇인지 묻는 것과 같습니다. 단일 답변으로 잘 증류되지 않는 매우 넓은 영역입니다.
Mark Essel

5

이미지의 엔트로피를 계산하는 알고리즘을 구현할 때 이러한 링크를 찾았습니다 ( 여기여기 참조) .

이것은 내가 사용한 의사 코드이므로 이미지가 아닌 텍스트로 작업하도록 수정해야하지만 원칙은 동일해야합니다.

//Loop over image array elements and count occurrences of each possible
//pixel to pixel difference value. Store these values in prob_array
for j = 0, ysize-1 do $
    for i = 0, xsize-2 do begin
       diff = array(i+1,j) - array(i,j)
       if diff lt (array_size+1)/2 and diff gt -(array_size+1)/2 then begin
            prob_array(diff+(array_size-1)/2) = prob_array(diff+(array_size-1)/2) + 1
       endif
     endfor

//Convert values in prob_array to probabilities and compute entropy
n = total(prob_array)

entrop = 0
for i = 0, array_size-1 do begin
    prob_array(i) = prob_array(i)/n

    //Base 2 log of x is Ln(x)/Ln(2). Take Ln of array element
    //here and divide final sum by Ln(2)
    if prob_array(i) ne 0 then begin
        entrop = entrop - prob_array(i)*alog(prob_array(i))
    endif
endfor

entrop = entrop/alog(2)

이 코드를 어딘가에서 얻었지만 링크를 찾을 수 없습니다.


이미지에 대해 많은 다른 entropy () 함수가 있지만 미리보기가 좋지 않습니까? 코드를 Matlab의 자체 엔트로피 () 및 여기의 코드와 비교하는 방법 mathworks.com/matlabcentral/fileexchange/28692- 엔트로피 후자는 개발자가 1D 신호용이지만 사용자는 계속 2D로 확장한다고 말합니다. --엔트로피 기능은 원래 신호가 2 비트이고 다소 단순하다고 가정합니다. 그것이 MIT-BIH arrythmia ECG 신호 (11 비트)이지만 2D 이미지 용으로 생성되었다고 가정합니다. 나는 여기서 당신이 간단한 2 비트베이스를 사용할 수 없다고 생각합니다.
Léo Léopold Hertz 준영

5

비공식적으로

엔트로피 는 정보 또는 지식의 가용성이며, 정보의 부족은 미래 엔트로피가 높은 미래 예측에 어려움을 초래하고 (텍스트 마이닝에서 다음 단어 예측), 정보 / 지식의 가용성은 미래에 대한보다 현실적인 예측 (낮은 엔트로피)에 도움이 될 것입니다.

모든 유형의 관련 정보는 엔트로피를 줄이고보다 현실적인 미래를 예측하는 데 도움이됩니다. 정보는 단어 "고기"가 문장에 있거나 단어 "고기"가 존재하지 않을 수 있습니다. 이것을 정보 획득 이라고합니다


공식적으로

엔트로피 는 예측 가능성이 부족하다


0

NLTK에 관한 책을 읽으면서 MaxEnt Classifier Module http://www.nltk.org/api/nltk.classify.html#module-nltk.classify.maxent에 대해 읽는 것이 흥미로울 것입니다 .

텍스트 마이닝 분류의 경우 단계는 사전 처리 (토큰 화, 스팀, 정보 게인을 사용한 기능 선택 ...), 숫자로 변환 (빈도 또는 TF-IDF) (사용할 때 이해하는 핵심 단계라고 생각합니다) 숫자 만 허용하는 알고리즘에 대한 입력으로 텍스트)를 입력 한 다음 MaxEnt로 분류하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.