Entropy và thông tin đạt được là gì?


338

Tôi đang đọc cuốn sách này ( NLTK ) và nó thật khó hiểu. Entropy được định nghĩa là :

Entropy là tổng xác suất của mỗi nhãn nhân với xác suất ghi nhật ký của cùng nhãn đó

Làm cách nào tôi có thể áp dụng entropyentropy tối đa về mặt khai thác văn bản? Ai đó có thể cho tôi một ví dụ dễ dàng, đơn giản (trực quan)?


1
Một giải pháp hay và trực quan math.stackexchange.com/questions/331103/iêu
Ravi G

câu trả lời hay và trực quan cho câu hỏi thsi math.stackexchange.com/questions/331103/ory
Ravi G

một video để giải thích tốt và đơn giản
Grijesh Chauhan

Câu trả lời:


1048

Tôi giả sử entropy đã được đề cập trong bối cảnh xây dựng cây quyết định .

Để minh họa, hãy tưởng tượng nhiệm vụ học cách phân loại tên đầu tiên thành các nhóm nam / nữ. Điều đó được đưa ra một danh sách các tên được gắn nhãn mhoặc f, chúng tôi muốn tìm hiểu một mô hình phù hợp với dữ liệu và có thể được sử dụng để dự đoán giới tính của tên mới chưa thấy.

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

Bước đầu tiên là quyết định những gì các tính năng của các dữ liệu có liên quan đến lớp mục tiêu chúng ta muốn dự đoán. Một số tính năng ví dụ bao gồm: chữ cái đầu tiên / cuối cùng, độ dài, số nguyên âm, kết thúc bằng nguyên âm, v.v. Vì vậy, sau khi trích xuất tính năng, dữ liệu của chúng tôi trông như sau:

# 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

Mục tiêu là xây dựng một cây quyết định . Một ví dụ về cây sẽ là:

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

về cơ bản mỗi nút đại diện cho một thử nghiệm được thực hiện trên một thuộc tính duy nhất và chúng tôi đi sang trái hoặc phải tùy thuộc vào kết quả của thử nghiệm. Chúng ta tiếp tục đi ngang qua cây cho đến khi chúng ta đạt được một nút lá chứa dự đoán lớp ( mhoặc f)

Vì vậy, nếu chúng ta chạy tên Amro xuống cây này, chúng ta bắt đầu bằng cách kiểm tra " độ dài <7? " Và câu trả lời là , vì vậy chúng ta đi xuống nhánh đó. Theo nhánh, bài kiểm tra tiếp theo " là số nguyên âm <3? " Một lần nữa đánh giá là đúng . Điều này dẫn đến một nút lá được dán nhãn m, và do đó dự đoán là nam (mà tôi tình cờ là, vì vậy cây dự đoán kết quả chính xác ).

Cây quyết định được xây dựng theo kiểu từ trên xuống , nhưng câu hỏi là làm thế nào để bạn chọn thuộc tính nào để phân chia tại mỗi nút? Câu trả lời là tìm ra tính năng phân tách tốt nhất lớp mục tiêu thành các nút con thuần nhất có thể (nghĩa là: các nút không chứa hỗn hợp cả nam và nữ, thay vì các nút thuần túy chỉ có một lớp).

Thước đo độ tinh khiết này được gọi là thông tin . Nó đại diện cho lượng thông tin dự kiến sẽ cần để xác định liệu một trường hợp mới (tên đầu tiên) nên được phân loại nam hay nữ, đưa ra ví dụ đạt đến nút. Chúng tôi tính toán nó dựa trên số lượng các lớp nam và nữ tại nút.

Mặt khác, Entropy là thước đo tạp chất (ngược lại). Nó được định nghĩa cho một lớp nhị phân có giá trịa/blà:

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

Hàm entropy nhị phân này được mô tả trong hình bên dưới (biến ngẫu nhiên có thể lấy một trong hai giá trị). Nó đạt đến mức tối đa khi xác suất là p=1/2, có nghĩa là p(X=a)=0.5hoặc tương tự p(X=b)=0.5có 50% / 50% cơ hội trở thành ahoặc b(không chắc chắn là tối đa). Hàm entropy ở mức tối thiểu bằng 0 khi xác suất là p=1hoặc p=0hoàn toàn chắc chắn ( p(X=a)=1hoặc p(X=a)=0tương ứng, hàm ý sau p(X=b)=1).

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

Tất nhiên, định nghĩa của entropy có thể được khái quát cho một biến ngẫu nhiên X rời rạc với kết quả N (không chỉ hai):

Sự hỗn loạn

( logtrong công thức thường được lấy làm logarit cho cơ sở 2 )


Quay lại nhiệm vụ phân loại tên của chúng tôi, hãy xem xét một ví dụ. Hãy tưởng tượng tại một số điểm trong quá trình xây dựng cây, chúng tôi đã xem xét phân chia sau:

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

Như bạn có thể thấy, trước khi chia tay, chúng tôi có 9 nam và 5 nữ, tức là P(m)=9/14P(f)=5/14. Theo định nghĩa của entropy:

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

Tiếp theo, chúng tôi so sánh nó với entropy được tính toán sau khi xem xét sự phân chia bằng cách nhìn vào hai nhánh con. Ở nhánh bên trái của ends-vowel=1, chúng ta có:

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

và nhánh bên phải của ends-vowel=0, chúng ta có:

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

Chúng tôi kết hợp các entropy trái / phải bằng cách sử dụng số lượng phiên bản xuống mỗi nhánh làm hệ số trọng số (7 trường hợp đi bên trái và 7 trường hợp đi bên phải) và nhận được entropy cuối cùng sau khi chia:

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

Bây giờ bằng cách so sánh entropy trước và sau khi phân tách, chúng ta có được thước đo mức tăng thông tin hoặc lượng thông tin chúng ta thu được bằng cách thực hiện phân tách bằng tính năng cụ thể đó:

Information_Gain = Entropy_before - Entropy_after = 0.1518

Bạn có thể diễn giải phép tính ở trên như sau: bằng cách phân tách với end-vowelstính năng, chúng tôi có thể giảm độ không chắc chắn trong kết quả dự đoán của cây con bằng một lượng nhỏ 0,1518 (được đo bằng bit dưới dạng đơn vị thông tin ).

Tại mỗi nút của cây, phép tính này được thực hiện cho mọi tính năng và tính năng có mức tăng thông tin lớn nhất được chọn để phân chia theo cách tham lam (do đó ưu tiên các tính năng tạo ra sự phân tách thuần túy với độ không chắc chắn / entropy thấp). Quá trình này được áp dụng đệ quy từ nút gốc trở xuống và dừng lại khi một nút lá chứa các cá thể có cùng một lớp (không cần phải phân tách thêm).

Lưu ý rằng tôi đã bỏ qua một số chi tiết nằm ngoài phạm vi của bài đăng này, bao gồm cách xử lý các tính năng số , giá trị bị thiếu , quá mứccắt tỉa cây, v.v.


1
@ all3fox: điều này được giải thích trong đoạn cuối, quá trình sẽ dừng lại cho nhánh cụ thể đó nếu nó đến một nút thuần (một nút lá nơi tất cả các thể hiện thuộc về cùng một lớp, vì vậy nó không thể được phân tách thêm nữa). Do đó, nút dự đoán lớp duy nhất mà nó chứa ..
Amro

3
@ all3fox: trong thực tế, tất cả các cách để các nút thuần tạo ra các cây quyết định khá sâu, bị ảnh hưởng quá mức (nghĩa là các cây phù hợp với dữ liệu huấn luyện quá tốt, nhưng lại khái quát kém với các dữ liệu khác không được trình bày trong tập huấn luyện). Do đó, chúng tôi thường dừng lại khi chúng tôi nhận được một số lượng cá thể tối thiểu nhất định trong các nút lá (và chỉ dự đoán lớp đa số) và / hoặc thực hiện một số cách cắt tỉa (xem các liên kết Wikipedia được cung cấp ở trên để tìm hiểu thêm).
Amro

3
@Jas: điều này cũng được giải thích rõ ở đây: en.wikipedia.org/wiki/ Kẻ
Amro

1
@Rami: Phải, để tránh vấn đề như quá mức , cây nhỏ hơn được ưu tiên hơn cây lớn hơn (tức là đưa ra quyết định với ít bài kiểm tra hơn). Lưu ý rằng heuristic theo đó các tính năng phân tách được chọn là thuật toán tìm kiếm tham lam, do đó, cây được tạo ra không được đảm bảo là cây nhỏ nhất có thể trong không gian của tất cả các cây có thể (cũng không được đảm bảo là lỗi phân loại wrt tối ưu toàn cầu ). Thực tế đây là một vấn đề hoàn chỉnh NP ...
Amro

1
@Rami: Thật thú vị, có những phương pháp học tập theo cách tiếp cận khác nhau. Một ý tưởng là chọn ngẫu nhiên thuật toán học bằng cách chọn một tập hợp con các tính năng ngẫu nhiên ở mỗi phần tách ứng viên và xây dựng một loạt các cây ngẫu nhiên này và lấy trung bình kết quả của chúng. Cũng đáng kiểm tra các thuật toán như Rừng ngẫu nhiên .
Amro

45

Để bắt đầu, nó là tốt nhất để hiểu the measure of information.

Làm thế nào để chúng ta measurethông tin?

Khi điều gì đó không thể xảy ra, chúng tôi nói đó là một tin tức lớn. Ngoài ra, khi chúng ta nói điều gì đó có thể dự đoán được, nó không thực sự thú vị. Vì vậy, để định lượng điều này interesting-ness, hàm phải thỏa mãn

  • nếu xác suất của sự kiện là 1 (có thể dự đoán được), thì hàm cho 0
  • nếu xác suất của sự kiện gần bằng 0, thì hàm sẽ cho số cao
  • nếu xác suất 0,5 sự kiện xảy ra, nó cung cấp one bitthông tin.

Một biện pháp tự nhiên thỏa mãn các hạn chế là

I(X) = -log_2(p)

Trong đó p là xác suất của sự kiện X. Và các đơn vị là trong bit, cùng một máy tính bit sử dụng. 0 hoặc 1.

ví dụ 1

Lật đồng xu:

Chúng ta có thể nhận được bao nhiêu thông tin từ một lần lật?

Câu trả lời : -log(p) = -log(1/2) = 1 (bit)

Ví dụ 2

Nếu một thiên thạch tấn công Trái đất vào ngày mai, p=2^{-22}thì chúng ta có thể nhận được 22 bit thông tin.

Nếu Mặt trời mọc vào ngày mai, p ~ 1thì đó là 0 bit thông tin.

Sự hỗn loạn

Vì vậy, nếu chúng ta kỳ vọng vào interesting-nessmột sự kiện Y, thì đó là entropy. tức là entropy là một giá trị mong đợi của tính thú vị của một sự kiện.

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

Chính thức hơn, entropy là số bit dự kiến ​​của một sự kiện.

Thí dụ

Y = 1: một sự kiện X xảy ra với xác suất p

Y = 0: một sự kiện X không xảy ra với xác suất 1-p

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

Đăng nhập cơ sở 2 cho tất cả các bản ghi.


22

Tôi không thể cung cấp cho bạn đồ họa, nhưng có lẽ tôi có thể đưa ra một lời giải thích rõ ràng.

Giả sử chúng ta có một kênh thông tin, chẳng hạn như đèn nhấp nháy mỗi ngày một lần hoặc đỏ hoặc xanh lục. Nó truyền tải bao nhiêu thông tin? Dự đoán đầu tiên có thể là một bit mỗi ngày. Nhưng nếu chúng ta thêm màu xanh, để người gửi có ba tùy chọn thì sao? Chúng tôi muốn có một thước đo thông tin có thể xử lý những thứ khác ngoài sức mạnh của hai, nhưng vẫn là phụ gia (cách nhân số lượng tin nhắn có thể có với hai thêm một bit). Chúng ta có thể làm điều này bằng cách lấy nhật ký 2 (số lượng tin nhắn có thể), nhưng hóa ra có một cách tổng quát hơn.

Giả sử chúng ta quay lại màu đỏ / xanh lá cây, nhưng bóng đèn màu đỏ đã bị cháy (đây là kiến ​​thức phổ biến) để đèn phải luôn nhấp nháy màu xanh lá cây. Kênh bây giờ vô dụng, chúng tôi biết đèn flash tiếp theo sẽ là gìVì vậy, các đèn flash truyền tải không có thông tin, không có tin tức. Bây giờ chúng tôi sửa chữa bóng đèn nhưng áp đặt một quy tắc rằng bóng đèn đỏ có thể không nhấp nháy hai lần liên tiếp. Khi đèn nhấp nháy màu đỏ, chúng ta biết đèn flash tiếp theo sẽ là gì. Nếu bạn cố gắng gửi một luồng bit theo kênh này, bạn sẽ thấy rằng bạn phải mã hóa nó với nhiều lần nhấp nháy hơn số bit của bạn (thực tế là nhiều hơn 50%). Và nếu bạn muốn mô tả một chuỗi các chớp sáng, bạn có thể làm như vậy với ít bit hơn. Điều tương tự cũng áp dụng nếu mỗi đèn flash độc lập (không có ngữ cảnh), nhưng đèn flash màu xanh lá cây phổ biến hơn màu đỏ: xác suất càng sai lệch thì bạn càng cần ít bit để mô tả chuỗi và càng ít thông tin chứa nó tất cả các màu xanh lá cây, giới hạn bóng đèn bị cháy.

Hóa ra có một cách để đo lượng thông tin trong tín hiệu, dựa trên xác suất của các ký hiệu khác nhau. Nếu xác suất nhận được ký hiệu x i là p i , thì hãy xem xét số lượng

-log p tôi

P i càng nhỏ , giá trị này càng lớn. Nếu x i trở thành không thể gấp đôi, giá trị này tăng thêm một lượng cố định (log (2)). Điều này sẽ nhắc nhở bạn về việc thêm một bit vào tin nhắn.

Nếu chúng ta không biết biểu tượng sẽ là gì (nhưng chúng ta biết xác suất) thì chúng ta có thể tính trung bình của giá trị này, chúng ta sẽ nhận được bao nhiêu, bằng cách tổng hợp các khả năng khác nhau:

Tôi = -Σ p tôi đăng nhập (p i )

Đây là nội dung thông tin trong một flash.

Bóng đèn đỏ bị cháy: p red = 0, p green = 1, I = - (0 + 0) = 0
Trang bị màu đỏ và màu xanh lá cây: p red = 1/2, p green = 1/2 , I = - (2 * 1/2 * log (1/2)) = log (2)
Ba màu, có thể trang bị: p i = 1/3, I = - (3 * 1/3 * log (1/3)) = log (3)
Màu xanh lá cây và màu đỏ, màu xanh lá cây gấp đôi khả năng: p red = 1/3, p green = 2/3, I = - (1/3 log (1/3) + 2/3 log (2/3)) = log ( 3) - 2/3 nhật ký (2)

Đây là nội dung thông tin, hoặc entropy, của tin nhắn. Nó là tối đa khi các biểu tượng khác nhau được trang bị. Nếu bạn là nhà vật lý, bạn sử dụng nhật ký tự nhiên, nếu bạn là nhà khoa học máy tính, bạn sử dụng nhật ký 2 và nhận bit.


10

Tôi thực sự khuyên bạn nên đọc về Lý thuyết thông tin, phương pháp bayes và MaxEnt. Nơi để bắt đầu là cuốn sách này (có sẵn miễn phí trực tuyến) của David Mackay:

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

Những phương pháp suy luận đó thực sự tổng quát hơn nhiều so với chỉ khai thác văn bản và tôi thực sự không thể nghĩ ra cách người ta học cách áp dụng điều này vào NLP mà không học một số điều cơ bản chung có trong cuốn sách này hoặc các cuốn sách giới thiệu khác về Machine Learning và MaxEnt bayesian phương pháp.

Mối liên hệ giữa entropy và lý thuyết xác suất để xử lý và lưu trữ thông tin thực sự rất sâu sắc. Để cho một hương vị của nó, có một định lý do Shannon nói rằng lượng thông tin tối đa bạn có thể vượt qua mà không có lỗi thông qua kênh liên lạc ồn ào bằng với entropy của quá trình nhiễu. Ngoài ra còn có một định lý kết nối số lượng bạn có thể nén một phần dữ liệu để chiếm bộ nhớ tối thiểu có thể có trong máy tính của bạn với entropy của quá trình tạo ra dữ liệu.

Tôi không nghĩ rằng bạn thực sự cần thiết phải học về tất cả những định lý về lý thuyết giao tiếp, nhưng không thể học điều này mà không học những điều cơ bản về entropy, cách tính toán, mối quan hệ với thông tin và suy luận, v.v. ...


có cùng suy nghĩ Rafael. Nó giống như hỏi vật lý lượng tử trên tràn ngăn xếp, một khu vực rất rộng không thể chắt lọc thành một câu trả lời duy nhất.
Đánh dấu Essel

5

Khi tôi đang thực hiện một thuật toán để tính toán entropy của một hình ảnh tôi đã tìm thấy các liên kết này, xem tại đâyđây .

Đây là mã giả tôi đã sử dụng, bạn sẽ cần điều chỉnh nó để hoạt động với văn bản chứ không phải hình ảnh nhưng các nguyên tắc phải giống nhau.

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

Tôi đã nhận được mã này từ một nơi nào đó, nhưng tôi không thể khai thác liên kết.


Có rất nhiều hàm entropy () khác nhau cho hình ảnh nhưng không có bản xem trước tốt? Làm thế nào bạn có thể so sánh mã của mình với entropy () của Matlab và mã ở đây mathworks.com/matlabcentral/fileexchange/28692-entropy Sau đó, nhà phát triển nói rằng nó dành cho tín hiệu 1D nhưng người dùng tiếp tục mở rộng nó thành 2D. - - Hàm entropy của bạn giả định rằng tín hiệu gốc là 2 bit và nó khá đơn giản. Giả sử đó là tín hiệu ECG của MIT-BIH arry nhịpia (11 bit) nhưng được tạo cho hình ảnh 2D. Tôi nghĩ bạn không thể sử dụng cơ sở 2 bit đơn giản ở đây.
Léo Léopold Hertz

5

Không chính thức

entropy có sẵn thông tin hoặc kiến ​​thức, Thiếu thông tin sẽ dẫn đến khó khăn trong việc dự đoán tương lai là entropy cao (dự đoán từ tiếp theo trong khai thác văn bản) và tính sẵn có của thông tin / kiến ​​thức sẽ giúp chúng ta dự đoán thực tế hơn về tương lai (entropy thấp).

Thông tin liên quan thuộc bất kỳ loại nào sẽ làm giảm entropy và giúp chúng ta dự đoán tương lai thực tế hơn, thông tin đó có thể là từ "thịt" có trong câu hoặc từ "thịt" không có mặt. Đây được gọi là thông tin đạt được


Chính thức

entropy thiếu thứ tự dự đoán


0

Khi bạn đang đọc một cuốn sách về NLTK nó sẽ được thú vị bạn đọc về Maxent Classifier Mô-đun http://www.nltk.org/api/nltk.classify.html#module-nltk.classify.maxent

Để phân loại khai thác văn bản, các bước có thể là: tiền xử lý (mã thông báo, hấp, lựa chọn tính năng với Thông tin thu được ...), chuyển đổi sang số (tần số hoặc TF-IDF) (Tôi nghĩ rằng đây là bước quan trọng để hiểu khi sử dụng văn bản làm đầu vào cho một thuật toán chỉ chấp nhận số) và sau đó phân loại bằng MaxEnt, chắc chắn đây chỉ là một ví dụ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.