Что такое энтропия и получение информации?

Я читаю эту книгу (NLTK), и она сбивает с толку. Энтропия определяется как :

Энтропия - это сумма вероятности каждой метки, умноженная на логарифмическую вероятность той же самой метки.

Как я могу применить энтропию и максимальную энтропию с точки зрения интеллектуального анализа текста? Может ли кто-нибудь дать мне простой и простой пример (наглядный)?


person TIMEX    schedule 07.12.2009    source источник
comment
Красивое и интуитивно понятное решение math.stackexchange.com/questions/331103 /   -  person Ravi    schedule 10.09.2018
comment
хороший и интуитивно понятный ответ на этот вопрос math.stackexchange.com/questions / 331103 /   -  person Ravi    schedule 10.09.2018
comment
видео для хорошего и простого объяснения   -  person Grijesh Chauhan    schedule 01.03.2020
comment
для простого нематематического объяснения обратитесь к первой части todatascience.com/   -  person Allohvk    schedule 17.03.2021


Ответы (7)


Я предполагаю, что энтропия упоминалась в контексте построения деревьев решений.

Для иллюстрации представьте себе задачу обучения классифицирует имена по мужским / женским группам. Дан список имен, каждое из которых помечено 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 the length‹ 7? »и ответим да, Итак, мы идем по той ветке. После ветки следующий тест «количество гласных‹ 3? »снова дает результат true. Это приводит к конечному узлу, помеченному m, и, таким образом, прогноз будет мужской (которым я и оказался, поэтому дерево предсказало результат правильно).

Дерево решений построено сверху вниз, но вопрос в том, как выбрать, какой атрибут для разделения на каждом узле? Ответ заключается в том, чтобы найти функцию, которая наилучшим образом разделяет целевой класс на максимально чистые дочерние узлы (то есть узлы, которые не содержат смесь мужских и женских узлов, скорее чистые узлы только с одним классом).

Этот показатель чистоты называется информацией . Он представляет собой ожидаемую сумму информация, которая потребуется для определения того, следует ли классифицировать новый экземпляр (имя) как мужской или женский, учитывая пример, который достиг узла. Мы рассчитываем его исходя из количества мужских и женских классов в узле.

Энтропия, с другой стороны, является мерой нечистоты < / em> (наоборот). Он определен для двоичного класса со значениями _9 _ / _ 10_ как:

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

Эта двоичная функция энтропии изображена на рисунке ниже (случайная величина может принимать одно из двух значений). Он достигает своего максимума, когда вероятность равна p=1/2, что означает, что p(X=a)=0.5 или аналогичныйp(X=b)=0.5 имеет 50% / 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

Конечно, определение энтропии можно обобщить для дискретной случайной величины X с N исходами (а не только двумя):

энтропия

(log в формуле обычно принимается как логарифм с основанием 2) < / em>


Вернемся к нашей задаче классификации имен, давайте рассмотрим пример. Представьте, что в какой-то момент в процессе построения дерева мы рассматривали следующее разбиение:

     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/14 и P(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 (измеряется в биты как единиц информации).

В каждом узле дерева этот расчет выполняется для каждого объекта, и для разделения в жадный способ (таким образом, отдавая предпочтение функциям, которые производят чистые разбиения с низкой неопределенностью / энтропией). Этот процесс применяется рекурсивно от корневого узла вниз и останавливается, когда листовой узел содержит экземпляры, имеющие один и тот же класс (нет необходимости разделять его дальше).

Обратите внимание, что я пропустил некоторые подробности, которые выходят за рамки этой публикации, в том числе о том, как обрабатывать числовые функции, отсутствующие значения, переоснащение и обрезка деревьев и т. д.

person Amro    schedule 07.12.2009
comment
Амро, не могли бы вы дать объяснение Adaboost, если вы что-нибудь об этом знаете? Я не могу найти более подробного объяснения, чем то, которое вы показали выше - person godzilla; 26.10.2012
comment
Что происходит с логикой ветвления дерева, когда в одном из Entropy_left или Entropy_right имеется нулевой счетчик? Это заставляет логарифм уходить в бесконечность ... - person alisianoi; 23.03.2015
comment
@ all3fox: это объясняется в последнем абзаце, процесс должен останавливаться для этой конкретной ветви, если он попадает в чистый узел (конечный узел, все экземпляры которого принадлежат одному классу, поэтому он не может быть разделенным дальше). Таким образом, узел предсказывает единственный класс, который он содержит. - person Amro; 24.03.2015
comment
@ all3fox: на практике, переход к чистым узлам дает довольно глубокие деревья решений, которые страдают от переобучения (т. е. деревья, которые слишком хорошо подходят для обучающих данных, но плохо обобщаются на другие данные, не представленные в обучающий набор). Следовательно, мы обычно останавливаемся, когда достигаем определенного минимального количества экземпляров в конечных узлах (и просто прогнозируем класс большинства) и / или выполняем некоторую обрезку (см. Приведенные выше ссылки на Википедию, чтобы узнать больше). - person Amro; 24.03.2015
comment
Почему мы умножаем на «журнал»? Зачем это регистрировать? - person Jas; 30.03.2015
comment
@Jas: это хорошо объяснено здесь: en.wikipedia.org/wiki/ < / а> - person Amro; 30.03.2015
comment
+1 за признание того, что вы замалчиваете, как обращаться с числовыми атрибутами. Дискретизация - это отдельная область исследований, и есть несколько исследовательских работ, описывающих, как это сделать. У дискретизации пакетов R есть несколько способов сделать это за вас. - person hlin117; 05.04.2015
comment
Спасибо @Amro за отличный ответ. У меня вопрос: почему нам нужно выбирать функцию, которая наилучшим образом разделяет целевой класс на максимально чистые дочерние узлы? Моя интуиция подсказывает мне, что мы делаем это, чтобы как можно быстрее достичь стадии, на которой мы действительно разбиваем данные на 100% чистые дочерние узлы. На этом этапе мы можем остановиться, а остальные функции будут проигнорированы? - person Rami; 29.05.2015
comment
@Rami: Верно, чтобы избежать таких проблем, как переоснащение, деревья меньшего размера предпочтительнее больших (т. Е. принятие решений с меньшим количеством тестов). Обратите внимание, что эвристика, с помощью которой выбираются признаки разделения, является жадным алгоритмом поиска, поэтому не гарантируется, что сгенерированное дерево будет наименьшим из возможных в пространстве всех возможных деревьев (и не гарантируется, что оно будет глобально оптимальным в отношении ошибки классификации. ). На самом деле это проблема NP-complete ... - person Amro; 29.05.2015
comment
@Rami: Интересно, что существуют методы ансамблевого обучения, использующие другой подход. Одна из идей состоит в том, чтобы рандомизировать алгоритм обучения, выбирая случайное подмножество функций в каждой группе кандидатов, и построение группы этих случайных деревьев и усреднение их результатов. Также стоит попробовать такие алгоритмы, как Случайные леса. - person Amro; 29.05.2015
comment
@Amro .: Я немного сбит с толку .... В книгах по теории информации эта часть также не упоминается четко ... если я спрошу ---- _1 _ .. какой термин для этого ... H(Y) [здесь X = источник Y = получатель] или H(Y)-H(X) или I(X,y) [взаимная информация]? Я не знаю почему, но эта часть пропускается почти в каждой книге .... Кстати, это из Information theory .. Я видел твой ответ и спросил тебя.? - person user2736738; 30.11.2015
comment
Используете ли вы функцию Entropy () Matlab или функцию entropy () Dwinnel ... или здесь просто свою формулу? - - Как это расширить до 2D корпуса? Предположим, что сигнал 1D имеет 11 бит, распределенных по спектрограмме в 2D. Игнорируйте призраков локализации, создаваемых раздачей. - person Léo Léopold Hertz 준영; 09.08.2016
comment
Я просто хотел сказать Шапо, но мне нужно написать 15 символов - person Engine; 22.12.2017
comment
Отличный пост, спасибо. Одно (незначительное и придирчивое) исправление: Эшли не оканчивается на гласную, может быть, использовать другое женское имя, которое подходит? - person P B; 31.08.2018
comment
@PB Буква Y может считаться согласной или гласной. Говоря о звуке, я бы сказал, что здесь гласная: en.oxford dictionaries.com/explore/ - person Amro; 31.08.2018
comment
Неужели эта length>=7 | length=5: male часть дерева решений не имеет смысла? Если длина ›= 7, как она должна быть = 5? - person Aran-Fey; 31.05.2019
comment
@ Aran-Fey Я, наверное, хотел сказать length>=7 && num-vowels==2: male, но это был просто выдуманный пример, я на самом деле не строил дерево из этого образца данных, это было только для иллюстрации. - person Amro; 31.05.2019

Для начала лучше разобраться 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 ~ 1, то это 0 бит информации.

Энтропия

Итак, если мы ожидаем interesting-ness события Y, то это энтропия. то есть энтропия - это ожидаемое значение интересности события.

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

Более формально энтропия - это ожидаемое количество бит события.

Пример

Y = 1: событие X происходит с вероятностью p

Y = 0: событие X не происходит с вероятностью 1-p

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

База журнала 2 для всего журнала.

person VforVitamin    schedule 04.07.2014

Я не могу дать вам графику, но, возможно, я смогу дать четкое объяснение.

Предположим, у нас есть информационный канал, например, индикатор, который мигает один раз в день красным или зеленым светом. Сколько информации он передает? Первое предположение может быть один бит в день. Но что, если мы добавим синий цвет, чтобы у отправителя было три варианта? Мы хотели бы иметь некоторую информацию, которая могла бы обрабатывать вещи, отличные от степени двойки, но при этом быть аддитивной (способ, которым умножение количества возможных сообщений на два добавляет один бит). Мы могли бы сделать это, взяв log 2 (количество возможных сообщений), но оказывается, что есть более общий способ.

Предположим, мы вернулись к красному / зеленому цвету, но красная лампочка перегорела (это общеизвестно), поэтому лампа всегда должна мигать зеленым. Канал сейчас бесполезен, мы знаем, какой будет следующая вспышка, поэтому вспышки не несут ни информации, ни новостей. Сейчас мы ремонтируем лампочку, но вводим правило, что красная лампочка не должна мигать два раза подряд. Когда лампа мигает красным, мы знаем, какая будет следующая вспышка. Если вы попытаетесь отправить битовый поток по этому каналу, вы обнаружите, что должны кодировать его с большим количеством вспышек, чем у вас есть бит (на самом деле на 50% больше). А если вы хотите описать последовательность вспышек, вы можете сделать это с меньшим количеством бит. То же самое применимо, если каждая вспышка является независимой (контекстно-независимой), но зеленые вспышки более распространены, чем красные: чем больше искажена вероятность, тем меньше битов вам нужно для описания последовательности и тем меньше информации она содержит, вплоть до полностью зеленый, предел перегоревшей лампочки.

Оказывается, есть способ измерить количество информации в сигнале на основе вероятностей различных символов. Если вероятность получения символа x i равна p i, тогда рассмотрите количество

-log pi

Чем меньше p i, тем больше это значение. Если x i становится вдвое менее вероятным, это значение увеличивается на фиксированную величину (log (2)). Это должно напоминать вам о добавлении одного бита к сообщению.

Если мы не знаем, каким будет символ (но знаем вероятности), то мы можем вычислить среднее значение этого значения, сколько мы получим, суммируя различные возможности:

I = -Σ pi log(pi)

Это информационное наполнение в одной вспышке.

Red bulb burnt out: pred = 0, pgreen=1, I = -(0 + 0)  = 0
Red and green equiprobable: pred = 1/2, pgreen = 1/2, I = -(2 * 1/2 * log(1/2)) = log(2)
Three colors, equiprobable: pi=1/3, I = -(3 * 1/3 * log(1/3)) = log(3)
Green and red, green twice as likely: pred=1/3, pgreen=2/3, I = -(1/3 log(1/3) + 2/3 log(2/3)) = log(3) - 2/3 log(2)

Это информационное содержание или энтропия сообщения. Максимально, когда разные символы равновероятны. Если вы физик, вы используете естественный журнал, если вы компьютерный ученый, вы используете log 2 и получаете биты.

person Beta    schedule 07.12.2009

Я очень рекомендую вам прочитать о теории информации, байесовских методах и MaxEnt. Начнем с этой (бесплатно доступной в Интернете) книги Дэвида Маккея:

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

Эти методы вывода на самом деле гораздо более общие, чем просто интеллектуальный анализ текста, и я не могу придумать, как можно было бы научиться применять это к НЛП, не изучая некоторые общие основы, содержащиеся в этой книге или других вводных книгах по машинному обучению и байесовскому анализу MaxEnt. методы.

Связь между энтропией и теорией вероятностей с обработкой и хранением информации действительно очень глубокая. Чтобы почувствовать это, есть теорема Шеннона, которая гласит, что максимальный объем информации, который вы можете передать без ошибок через зашумленный канал связи, равен энтропии шумового процесса. Также существует теорема, которая связывает степень сжатия фрагмента данных, чтобы он занимал минимально возможную память на вашем компьютере, с энтропией процесса, который сгенерировал данные.

Я не думаю, что вам действительно необходимо изучать все теоремы теории коммуникации, но невозможно изучить это, не изучив основы того, что такое энтропия, как она рассчитывается, какова ее связь с информацией и выводами и т. Д. ...

person Rafael S. Calsaverini    schedule 14.12.2009
comment
такие же мысли были у Рафаэля. Это все равно, что спрашивать, что такое квантовая физика при переполнении стека - очень обширная область, которая не сводится к единому ответу. - person Mark Essel; 10.04.2011

Неформально

энтропия - это доступность информации или знаний. Отсутствие информации приводит к трудностям в предсказании будущего, которое является высокой энтропией (предсказание следующего слова при интеллектуальном анализе текста), а наличие информации / знаний поможет нам более реалистично предсказывать будущего (низкая энтропия).

Соответствующая информация любого типа снизит энтропию и поможет нам предсказать более реалистичное будущее, эта информация может состоять в том, что слово «мясо» присутствует в предложении или слово «мясо» отсутствует. Это называется сбор информации.


Формально

энтропия - это отсутствие порядка предсказуемости

person Waseem Ahmad Naeem    schedule 01.08.2018

Когда я реализовывал алгоритм для вычисления энтропии изображения, я нашел эти ссылки, см. здесь и здесь.

Это псевдокод, который я использовал, вам нужно адаптировать его для работы с текстом, а не изображениями, но принципы должны быть такими же.

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

Я откуда-то получил этот код, но ссылку не могу раскопать.

person Matt Warren    schedule 07.12.2009
comment
Существует так много разных функций entropy () для изображений, но без хороших превью? Как вы можете сравнить свой код с собственной энтропией Matlab () и кодом здесь mathworks.com / matlabcentral / fileexchange / 28692-entropy В последнем случае разработчик говорит, что он предназначен для одномерных сигналов, но пользователи продолжают расширять его до 2D. - - Ваша энтропийная функция предполагает, что исходный сигнал 2-битный, и это довольно упрощенно. Предположим, что это сигнал ЭКГ при аритмии MIT-BIH (11 бит), но сгенерированный для 2D-изображений. Думаю, здесь нельзя использовать простую 2-битную базу. - person Léo Léopold Hertz 준영; 09.08.2016

Когда вы читаете книгу о NLTK, было бы интересно прочитать о модуле классификатора MaxEnt http://www.nltk.org/api/nltk.classify.html#module-nltk.classify.maxent

Для классификации интеллектуального анализа текста этапы могут быть следующими: предварительная обработка (токенизация, обработка паром, выбор функции с использованием информации ...), преобразование в числовое (частота или TF-IDF) (я думаю, что это ключевой шаг, который нужно понять при использовании текст в качестве входных данных для алгоритма, который принимает только числа), а затем классифицируйте с помощью MaxEnt, убедитесь, что это всего лишь пример.

person Paulo    schedule 26.03.2015