“Entropi ve bilgi kazancı” nedir?


338

Bu kitabı ( NLTK ) okuyorum ve kafa karıştırıcı. Entropi şu şekilde tanımlanır :

Entropi, her etiketin olasılığının, aynı etiketin günlük olasılığının çarpımının toplamıdır

Metin madenciliği açısından entropi ve maksimum entropiyi nasıl uygulayabilirim ? Birisi bana kolay ve basit bir örnek verebilir mi (görsel)?


1
Güzel ve sezgisel bir çözüm math.stackexchange.com/questions/331103/…
Ravi G

Bu soru için hoş ve sezgisel bir cevap math.stackexchange.com/questions/331103/…
Ravi G

Bir Video iyi ve basit bir açıklama için
Grijesh Chauhan

Yanıtlar:


1048

Karar ağaçlarının oluşturulması bağlamında entropiden bahsedildiğini düşünüyorum .

Göstermek için, görevini hayal öğrenme için sınıflandırmak erkek / kadın gruba ilk isimler. Buna her biri ile etiketlenmiş isimlerin bir listesi verilir mveya verilere uyan ve görünmeyen yeni bir adın cinsiyetini tahmin etmek için kullanılabilecek fbir model öğrenmek istiyoruz .

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

İlk adım, verilerin hangi özelliklerinin tahmin etmek istediğimiz hedef sınıfla alakalı olduğuna karar vermektir . Bazı örnek özellikler şunlardır: ilk / son harf, uzunluk, sesli harf sayısı, bir sesli harfle biter, vb. Yani özellik çıkarıldıktan sonra verilerimiz şöyle görünür:

# 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

Amaç bir karar ağacı oluşturmaktır . Bir ağaca örnek olarak şunlar verilebilir:

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

temel olarak her düğüm tek bir öznitelik üzerinde yapılan bir testi temsil eder ve testin sonucuna bağlı olarak sola veya sağa gideriz. Sınıf tahminini içeren bir yaprak düğümüne ulaşıncaya kadar ağacı hareket ettirmeye devam ediyoruz ( mveya f)

Bu yüzden Amro ismini bu ağaçta çalıştırırsak, " uzunluk <7? " Yi test ederek başlıyoruz ve cevap evet , bu yüzden o daldan aşağı gidiyoruz. Daldan sonra, bir sonraki test " sesli harf sayısı <3? " Olarak tekrar doğru olarak değerlendirilir . Bu, etiketli bir yaprak düğümüne yol açar mve bu nedenle tahmin erkektir (ki ben öyle olurum, böylece ağaç sonucu doğru şekilde tahmin etti ).

Karar ağacı yukarıdan aşağıya bir şekilde oluşturulmuştur , ancak soru, her bir düğümde hangi özniteliğin bölüneceğini nasıl seçeceğinizdir? Yanıt, hedef sınıfı mümkün olan en saf çocuk düğümlerine en iyi şekilde ayıran özelliği bulmaktır (yani: hem erkek hem de kadın, daha ziyade sadece bir sınıfla saf düğümlerin bir karışımını içermeyen düğümler).

Bu saflık ölçüsüne bilgi denir . Bu temsil beklenen miktarını bilgi düğümünü ulaştı örnek verilen yeni bir örneği (ilk ad) erkek veya kadın sınıflandırılmalıdır belirtmek için gerekli olacaktır. Düğümdeki erkek ve kadın sınıflarının sayısına göre hesaplıyoruz.

Öte yandan entropi , safsızlığın bir ölçüsüdür(tam tersi). Bu bir için tanımlanan ikili sınıfın değerlerlea/bgibidir:

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

Bu ikili entropi fonksiyonu aşağıdaki şekilde gösterilmiştir (rastgele değişken iki değerden birini alabilir). Olasılık, maksimuma ulaşır p=1/2, yani p(X=a)=0.5ya da benzer p(X=b)=0.5şekilde ya ada % 50 /% 50 olma şansına sahip olmak ya da b(belirsizlik maksimumdur). Olasılık fonksiyonu, olasılık olduğunda p=1veya p=0tam bir kesinlik ile ( p(X=a)=1veya p(X=a)=0sırasıyla, ikinci ima p(X=b)=1) sıfırdır .

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

Tabii ki entropinin tanımı, N sonucu olan ayrı bir rastgele değişken X için genelleştirilebilir (sadece iki değil):

entropi

( logformüldeki in genellikle tabana 2 logaritması olarak alınır )


İsim sınıflandırma görevimize geri dönelim, bir örneğe bakalım. Ağacı inşa etme sürecinde bir noktada hayal edin, aşağıdaki ayrımı düşünüyoruz:

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

Gördüğünüz gibi, ayrılmadan önce 9 erkek ve 5 kadın vardı, yani P(m)=9/14ve P(f)=5/14. Entropinin tanımına göre:

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

Sonra, iki çocuk koluna bakarak bölünmeyi düşündükten sonra hesaplanan entropi ile karşılaştırıyoruz. Sol dalında ends-vowel=1:

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

ve doğru şubesi ends-vowel=0var:

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

Sol / sağ entropileri her faktörün altındaki örnek sayısını ağırlık faktörü olarak birleştiriyoruz (7 örnek sola gitti ve 7 örnek sağa gitti) ve bölünmeden sonra son entropiyi elde ettik:

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

Şimdi, bölünmeden önce ve sonra entropiyi karşılaştırarak, belirli bir özelliği kullanarak bölünmeyi yaparak bir miktar bilgi kazanımı veya ne kadar bilgi elde ettiğimizi elde ederiz:

Information_Gain = Entropy_before - Entropy_after = 0.1518

Yukarıdaki hesaplamayı aşağıdaki gibi yorumlayabilirsiniz: end-vowelsözellik ile bölünmeyi yaparak, alt ağaç tahmin sonucundaki belirsizliği az miktarda 0.1518 ( bit olarak bilgi birimi olarak ölçülür) azaltabiliyoruz .

Ağacın her bir düğümünde, bu hesaplama her özellik için gerçekleştirilir ve en büyük bilgi kazanımına sahip özellik, açgözlü bir şekilde bölünme için seçilir (böylece düşük belirsizlik / entropi ile saf bölünmeler üreten özellikleri tercih eder ). Bu işlem kök düğümden aşağıya yinelemeli olarak uygulanır ve bir yaprak düğümü hepsi aynı sınıfa sahip örnekler içerdiğinde durur (daha fazla bölmeye gerek yoktur).

Sayısal özelliklerin , eksik değerlerin , overfit ve budama ağaçlarının vb. Nasıl ele alınacağı da dahil olmak üzere bu yazının kapsamı dışında kalan bazı ayrıntıları atladığımı unutmayın .


1
@ all3fox: Bu, son paragrafta açıklanmıştır, saf bir düğüme (tüm örneklerin aynı sınıfa ait olduğu bir yaprak düğüm, yani daha fazla bölünemez), bu dal için işlem durmalıdır . Düğüm böylece içerdiği tek sınıfı tahmin eder ..
Amro

3
@ all3fox: pratikte, saf düğümlere kadar gitmek , aşırı uyumdan muzdarip oldukça derin karar ağaçları üretir (yani, eğitim verilerine çok iyi uyan, ancak eğitim setinde temsil edilmeyen diğer verilere zayıf genelleme yapan ağaçlar). Bu nedenle, genellikle yaprak düğümlerinde minimum sayıda örneğe ulaştığımızda (ve sadece çoğunluk sınıfını tahmin ettiğimizde) dururuz ve / veya bir tür budama yaparız (daha fazla bilgi için yukarıdaki Wikipedia bağlantılarına bakın).
Amro

3
@Jas: burada iyi açıklanmıştır: en.wikipedia.org/wiki/…
Amro

1
@Rami: Doğru, aşırı takma gibi problemlerden kaçınmak için , daha büyük ağaçlara göre daha küçük ağaçlar tercih edilir (yani daha az testle kararlara ulaşmak). Bölme özelliklerinin seçildiği buluşsal yöntem, açgözlü bir arama algoritmasıdır, bu nedenle üretilen ağacın olası tüm ağaçların uzayda mümkün olan en küçük ağaç olduğu garanti edilmez (ne de küresel olarak optimal bir wrt sınıflandırma hatası olduğu garanti edilmez) ). Bu aslında bir NP-tam problem ...
Amro

1
@Rami: İlginç bir şekilde, farklı bir yaklaşım benimseyen topluluk öğrenme yöntemleri var. Bir fikir, her aday bölünmesinde rastgele bir özellik alt kümesi seçerek ve bu rastgele ağaçların bir demetini yapıp sonuçlarının ortalamasını alarak öğrenme algoritmasını rastgele hale getirmektir . Ayrıca Random Forests gibi algoritmaları kontrol etmeye değer .
Amro

45

Başlangıç ​​olarak, anlamak en iyisidir the measure of information.

Bilgileri nasıl yapıyoruz measure?

Beklenmedik bir şey olduğunda, bunun büyük bir haber olduğunu söylüyoruz. Ayrıca, öngörülebilir bir şey söylediğimizde, bu gerçekten ilginç değil. Bunu ölçmek için interesting-ness, işlev

  • olayın olasılığı 1 ise (öngörülebilir), fonksiyon 0 verir
  • olayın olasılığı 0'a yakınsa, işlev yüksek sayı vermelidir
  • olasılık 0.5 olayı meydana gelirse one bitbilgi verir.

Kısıtlamaları karşılayan doğal bir önlem

I(X) = -log_2(p)

burada p olayın olasılığıdır X. Ve birim içeride, bitaynı bit bilgisayar kullanıyor. 0 veya 1.

örnek 1

Adil para çevirme:

Bir bozuk parayla ne kadar bilgi alabiliriz?

Cevap : -log(p) = -log(1/2) = 1 (bit)

ÖRNEK 2

Bir meteor yarın Dünyaya çarparsa, p=2^{-22}22 bit bilgi alabiliriz.

Güneş yarın doğarsa, p ~ 1o zaman 0 bit bilgi olur.

Entropi

Yani interesting-nessbir olayın beklentisini alırsak Y, o zaman entropi olur. yani entropi, bir olayın ilginçliğinin beklenen bir değeridir.

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

Daha resmi olarak, entropi bir olayın beklenen bit sayısıdır.

Misal

Y = 1: p olayı ile X olayı meydana gelir

Y = 0: 1-p olasılığı ile X olayı gerçekleşmiyor

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

Tüm günlük için günlük tabanı 2.


22

Size grafik veremem, ama belki net bir açıklama yapabilirim.

Her gün kırmızı veya yeşil yanıp sönen ışık gibi bir bilgi kanalımız olduğunu varsayalım. Ne kadar bilgi aktarıyor? İlk tahmin günde bir bit olabilir. Ancak mavi gönderirsek, gönderenin üç seçeneği olur mu? İki güçten başka şeyleri idare edebilecek, ancak yine de toplanabilir (olası mesaj sayısını ikiyle çarpma biçimi bir bit ekler) bir bilgi ölçümüze sahip olmak istiyoruz. Bunu log 2 (olası mesaj sayısı) alarak yapabiliriz , ancak daha genel bir yol olduğu ortaya çıkıyor.

Kırmızı / yeşile geri döndüğümüzü, ancak kırmızı ampulün yandığını (bu yaygın bir bilgidir), böylece lambanın daima yeşil renkte yanıp sönmesi gerektiğini varsayalım. Kanal artık işe yaramaz, bir sonraki flaşın ne olacağını biliyoruzböylece flaşlar hiçbir bilgi, haber aktarmaz. Şimdi ampulü onarıyoruz, ancak kırmızı ampulün arka arkaya iki kez yanıp sönmeyebileceği kuralını getiriyoruz. Lamba kırmızı yanıp söndüğünde, bir sonraki flaşın ne olacağını biliyoruz. Bu kanal tarafından bir bit akışı göndermeye çalışırsanız, onu bitlerinizden daha fazla flaşla kodlamanız gerektiğini göreceksiniz (aslında% 50 daha fazla). Ve bir dizi flaşı tanımlamak istiyorsanız, bunu daha az bitle yapabilirsiniz. Aynı durum, her flaş bağımsızsa (bağlamsız), ancak yeşil flaşlar kırmızıdan daha yaygın ise geçerlidir: olasılığı ne kadar çarpıksa, diziyi tanımlamak için ne kadar az bit ve daha az bilgi içerirse, tamamen yeşil, ampul yanmış limit.

Farklı sembollerin olasılıklarına bağlı olarak, bir sinyaldeki bilgi miktarını ölçmenin bir yolu olduğu ortaya çıkıyor. X i sembolünü alma olasılığı p i ise , miktarı göz önünde bulundurun

-log p i

Daha küçük p i , daha büyük bu değer. Eğer x i beklenmedik iki katına çıkarsa , bu değer sabit bir miktar artar (log (2)). Bu, mesaja bir bit eklemenizi hatırlatmalıdır.

Eğer sembolün ne olacağını bilmiyorsak (ama olasılıkları biliyoruz), o zaman bu değerin ortalamasını, ne kadar alacağımızı, farklı olasılıkları toplayarak hesaplayabiliriz:

I = -Σ p i günlüğü (p i )

Bu, bir flaştaki bilgi içeriğidir.

Kırmızı ampul yanmış: p kırmızı = 0, p yeşil = 1, I = - (0 + 0) = 0
Kırmızı ve yeşil eşlenebilir: p kırmızı = 1/2, p yeşil = 1/2 , I = - (2 * 1/2 * log (1/2)) = log (2)
Üç renk, eşlenebilir: p i = 1/3, I = - (3 * 1/3 * log (1/3)) = log (3)
Yeşil ve kırmızı, iki kez yeşil: p kırmızı = 1/3 , p yeşil = 2/3, I = - (1/3 günlük (1/3) + 2/3 günlük (2/3)) = günlük ( 3) - 2/3 günlüğü (2)

Bu, mesajın bilgi içeriği veya entropisidir. Farklı semboller eşlenebilir olduğunda maksimumdur. Eğer bir fizikçiyseniz, doğal günlüğü kullanırsanız, bir bilgisayar bilimcisi iseniz, günlük 2'yi kullanır ve bit alırsınız.


10

Bilgi Kuramı, bayes yöntemleri ve MaxEnt hakkında okumanızı tavsiye ederim. Başlamak için David Mackay'ın (ücretsiz çevrimiçi) kitap kitabı:

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

Bu çıkarım yöntemleri sadece metin madenciliğinden çok daha geneldir ve bu kitapta yer alan bazı temel bilgileri veya Machine Learning ve MaxEnt bayesian'ındaki diğer tanıtım kitaplarını öğrenmeden bunu NLP'ye nasıl uygulayacağını gerçekten öğrenemiyorum. yöntemleri.

Entropi ve olasılık teorisi ile bilgi işleme ve depolama arasındaki bağlantı gerçekten, gerçekten derindir. Bir zevk vermek için, Shannon nedeniyle, gürültülü bir iletişim kanalı aracılığıyla hatasız olarak geçebileceğiniz maksimum bilgi miktarının gürültü sürecinin entropisine eşit olduğunu belirten bir teorem vardır. Bilgisayarınızdaki mümkün olan minimum belleği işgal etmek için bir veri parçasını ne kadar sıkıştırabileceğinizi, verileri oluşturan işlemin entropisine bağlayan bir teorem de vardır.

İletişim teorisindeki tüm bu teoremleri öğrenmeye gitmenizin gerçekten gerekli olduğunu düşünmüyorum, ancak entropinin ne olduğu, nasıl hesaplandığı, bilgi ve çıkarımla ilişkisi nedir, vb. Hakkında temel bilgileri öğrenmeden bunu öğrenmek mümkün değildir. ...


aynı düşünceleri vardı Rafael. Yığın taşması üzerinde kuantum fiziğinin ne olduğunu sormak gibi, tek bir cevaba iyi damıtılmayan çok geniş bir alan.
Mark Essel

5

Bir görüntünün entropisini hesaplamak için bir algoritma uygularken bu bağlantıları buldum, buraya ve buraya bakın .

Bu kullandığım sahte kod, resimlerden ziyade metinle çalışacak şekilde uyarlamanız gerekiyor, ancak ilkeler aynı olmalı.

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

Bu kodu bir yerden aldım, ama bağlantıyı kazamıyorum.


Görüntüler için iyi önizleme olmadan çok farklı entropi () işlevleri var mı? Kodunuzu Matlab'ın kendi entropisine () ve buradaki kodla nasıl karşılaştırabilirsiniz? Mathworks.com/matlabcentral/fileexchange/28692-entropy İkincisi, geliştirici bunun 1D sinyalleri için olduğunu söylüyor, ancak kullanıcılar bunu 2D'ye genişletiyor. - - Entropi fonksiyonunuz orijinal sinyalin 2 bit olduğunu ve oldukça basit olduğunu varsayar. Bunun MIT-BIH aritmi EKG sinyali (11 bit) olduğunu, ancak 2D görüntüler için oluşturulduğunu varsayın. Sanırım burada basit 2 bitlik taban kullanamazsınız.
Léo Léopold Hertz 준영

5

gayrı

entropi bilgi veya bilginin mevcudiyeti, bilgi eksikliği geleceğin tahmininde yüksek entropi (metin madenciliğinde bir sonraki kelime tahmini) güçlüklerine yol açacak ve bilgi / bilginin mevcudiyeti bize geleceğin daha gerçekçi tahminini (düşük entropi) sağlayacaktır.

Herhangi bir türdeki ilgili bilgiler entropiyi azaltacaktır ve daha gerçekçi bir geleceği tahmin etmemize yardımcı olacaktır, bilgi cümle içinde "et" kelimesi olabilir veya "et" kelimesi mevcut değildir. Buna Bilgi Kazancı denir


resmen

entropi öngörülebilirlik düzeninin eksikliğidir


0

NLTK hakkında bir kitap okurken MaxEnt Sınıflandırıcı Modülü hakkında okumak ilginç olurdu http://www.nltk.org/api/nltk.classify.html#module-nltk.classify.maxent

Metin madenciliği sınıflandırması için adımlar şunlar olabilir: ön işleme (belirteçleme, buğulama, Bilgi Kazancı ile özellik seçimi ...), sayısalya dönüştürme (frekans veya TF-IDF) (Bunu kullanırken anlaşılması gereken kilit adım olduğunu düşünüyorum) metni yalnızca sayısal olarak kabul eden bir algoritmaya girdi olarak girin) ve ardından MaxEnt ile sınıflandırın, bunun sadece bir örnek olduğundan emin olun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.