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

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

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

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



답변

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

설명하기 위해하는 작업 상상 학습분류 남성 / 여성 그룹으로 처음 이름을. 여기에는 각각 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 ( 정보 단위로 비트 단위 로 측정)로 줄일 수있었습니다 .

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

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


답변

우선 이해하는 것이 가장 좋습니다 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


답변

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

하루에 한 번 빨간색이나 녹색으로 깜박이는 빛과 같은 정보 채널이 있다고 가정합니다. 얼마나 많은 정보를 전달합니까? 첫 번째 추측은 하루에 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 를 사용 하고 비트를 얻습니다.


답변

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

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

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

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

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


답변

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

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

//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)

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


답변

비공식적으로

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

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


공식적으로

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


답변

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

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