Estou lendo este livro ( NLTK ) e é confuso. Entropia é definida como :
Entropia é a soma da probabilidade de cada rótulo vezes a probabilidade de log desse mesmo rótulo
Como posso aplicar entropia e entropia máxima em termos de mineração de texto? Alguém pode me dar um exemplo fácil e simples (visual)?
math
text
computer-science
nltk
text-mining
TIMEX
fonte
fonte
Respostas:
Suponho que a entropia foi mencionada no contexto da construção de árvores de decisão .
Para ilustrar, imagine a tarefa de aprender a classificar os nomes em grupos de homens / mulheres. É fornecida uma lista de nomes, cada um com um
m
ou outrof
, queremos aprender um modelo que se ajuste aos dados e possa ser usado para prever o sexo de um novo nome invisível.O primeiro passo é decidir quais recursos dos dados são relevantes para a classe de destino que queremos prever. Alguns exemplos de recursos incluem: primeira / última letra, comprimento, número de vogais, termina com uma vogal, etc. Então, após a extração do recurso, nossos dados se parecem com:
O objetivo é construir uma árvore de decisão . Um exemplo de uma árvore seria:
basicamente, cada nó representa um teste realizado em um único atributo e vamos para a esquerda ou direita, dependendo do resultado do teste. Continuamos percorrendo a árvore até chegarmos a um nó folha que contém a previsão de classe (
m
ouf
)Portanto, se rodarmos o nome Amro nessa árvore, começamos testando " é o comprimento <7? " E a resposta é sim , então seguimos pelo ramo. Após a ramificação, o próximo teste " é o número de vogais <3? " Novamente avaliado como verdadeiro . Isso leva a um nó de folha rotulado
m
e, portanto, a previsão é masculina (o que acontece, a árvore previu o resultado corretamente ).A árvore de decisão é construída de forma descendente , mas a questão é como você escolhe qual atributo dividir em cada nó? A resposta é encontrar o recurso que melhor divide a classe de destino nos nós filhos mais puros possíveis (ou seja: nós que não contêm uma mistura de ambos, masculino e feminino, nós bastante puros, com apenas uma classe).
Essa medida de pureza é chamada de informação . Representa a quantidade esperada de informações que seriam necessárias para especificar se uma nova instância (primeiro nome) deve ser classificada como masculino ou feminino, dado o exemplo que atingiu o nó. Nós o calculamos com base no número de classes masculinas e femininas no nó.
Entropia, por outro lado, é uma medida de impureza (o oposto). É definido para uma classe binária com valores
a
/b
como:Esta função de entropia binária está representada na figura abaixo (a variável aleatória pode assumir um dos dois valores). Atinge seu máximo quando a probabilidade é
p=1/2
, o que significa que,p(X=a)=0.5
ou similarmente,p(X=b)=0.5
tem 50% / 50% de chance de ser uma
ou outrob
(a incerteza é máxima). A função de entropia é no mínimo zero quando a probabilidade ép=1
oup=0
com total certeza (p(X=a)=1
oup(X=a)=0
, respectivamente, o último implicap(X=b)=1
).Obviamente, a definição de entropia pode ser generalizada para uma variável aleatória discreta X com N resultados (não apenas dois):
(o
log
na fórmula geralmente é considerado o logaritmo da base 2 )De volta à nossa tarefa de classificação de nomes, vamos ver um exemplo. Imagine que em algum momento do processo de construção da árvore, estávamos considerando a seguinte divisão:
Como você pode ver, antes da divisão, tínhamos 9 machos e 5 fêmeas, ou seja,
P(m)=9/14
eP(f)=5/14
. De acordo com a definição de entropia:Em seguida, comparamos com a entropia calculada após considerar a divisão observando dois ramos filhos. No ramo esquerdo de
ends-vowel=1
, temos:e o ramo direito de
ends-vowel=0
, temos:Combinamos as entropias esquerda / direita usando o número de instâncias em cada ramificação como fator de peso (7 instâncias foram para a esquerda e 7 instâncias foram para a direita) e obtemos a entropia final após a divisão:
Agora, comparando a entropia antes e depois da divisão, obtemos uma medida do ganho de informações ou quanta informação obtivemos ao fazer a divisão usando esse recurso específico:
Você pode interpretar o cálculo acima da seguinte maneira: ao fazer a divisão com o
end-vowels
recurso, conseguimos reduzir a incerteza no resultado da previsão de subárvore em uma pequena quantidade de 0,1518 (medida em bits como unidades de informação ).Em cada nó da árvore, esse cálculo é realizado para cada recurso, e o recurso com maior ganho de informação é escolhido para a divisão de maneira gananciosa (favorecendo recursos que produzem divisões puras com baixa incerteza / entropia). Esse processo é aplicado recursivamente do nó raiz para baixo e para quando um nó folha contém instâncias todas com a mesma classe (não é necessário dividi-lo mais).
Observe que pulei alguns detalhes que estão além do escopo deste post, incluindo como lidar com recursos numéricos , valores ausentes , árvores de sobreajuste e poda , etc.
fonte
Para começar, seria melhor entender
the measure of information
.Como fazemos
measure
a informação?Quando algo improvável acontece, dizemos que é uma grande notícia. Além disso, quando dizemos algo previsível, não é realmente interessante. Então, para quantificar isso
interesting-ness
, a função deve satisfazerone bit
informações.Uma medida natural que satisfaz as restrições é
onde p é a probabilidade do evento
X
. E a unidade está dentrobit
, o mesmo bit que o computador usa. 0 ou 1.Exemplo 1
Moeda justa:
Quanta informação podemos obter de uma moeda?
Responda :
-log(p) = -log(1/2) = 1 (bit)
Exemplo 2
Se um meteoro
p=2^{-22}
atingir a Terra amanhã, podemos obter 22 bits de informação.Se o sol nascer amanhã,
p ~ 1
será 0 bit de informação.Entropia
Portanto, se considerarmos a expectativa
interesting-ness
de um eventoY
, é a entropia. isto é, entropia é um valor esperado da interessanteidade de um evento.Mais formalmente, a entropia é o número esperado de bits de um evento.
Exemplo
Y = 1: um evento X ocorre com probabilidade p
Y = 0: um evento X não ocorre com probabilidade 1-p
Base de log 2 para todo o log.
fonte
Não posso fornecer gráficos, mas talvez eu possa dar uma explicação clara.
Suponha que tenhamos um canal de informações, como uma luz que pisca uma vez por dia, vermelha ou verde. Quanta informação ela transmite? O primeiro palpite pode ser um pouco por dia. Mas e se adicionarmos azul, para que o remetente tenha três opções? Gostaríamos de ter uma medida de informação que possa lidar com outras coisas além das potências de dois, mas ainda assim seja aditiva (a maneira como multiplicar o número de mensagens possíveis por dois adiciona um bit). Poderíamos fazer isso usando o log 2 (número de mensagens possíveis), mas acontece que há uma maneira mais geral.
Suponha que voltemos ao vermelho / verde, mas a lâmpada vermelha queimou (isso é de conhecimento geral), de modo que a lâmpada sempre deve piscar em verde. O canal agora é inútil, sabemos qual será o próximo flashentão os flashes não transmitem informações, nem notícias. Agora, reparamos a lâmpada, mas impomos uma regra de que a lâmpada vermelha pode não piscar duas vezes seguidas. Quando a lâmpada pisca em vermelho, sabemos qual será o próximo flash. Se você tentar enviar um fluxo de bits por esse canal, descobrirá que deve codificá-lo com mais flashes do que com bits (50% a mais, na verdade). E se você quiser descrever uma sequência de flashes, poderá fazê-lo com menos bits. O mesmo se aplica se cada flash for independente (sem contexto), mas os flashes verdes forem mais comuns que o vermelho: quanto mais inclinada for a probabilidade, menos bits serão necessários para descrever a sequência e menos informações serão exibidas até o limite totalmente verde, queimado por lâmpada.
Acontece que há uma maneira de medir a quantidade de informação em um sinal, com base nas probabilidades dos diferentes símbolos. Se a probabilidade de receber o símbolo x i for p i , considere a quantidade
Quanto menor p i , maior esse valor. Se x i torna-se duas vezes mais provável, este valor aumenta por um montante fixo (log (2)). Isso deve lembrá-lo de adicionar um bit a uma mensagem.
Se não sabemos qual será o símbolo (mas sabemos as probabilidades), podemos calcular a média desse valor, quanto obteremos, somando as diferentes possibilidades:
Este é o conteúdo da informação em um flash.
Este é o conteúdo da informação, ou entropia, da mensagem. É máximo quando os diferentes símbolos são equivalentes. Se você é físico, usa o log natural, se é um cientista da computação, usa o log 2 e obtém bits.
fonte
Eu realmente recomendo que você leia sobre Teoria da Informação, métodos bayesianos e MaxEnt. O ponto de partida é este livro (disponível gratuitamente on-line) de David Mackay:
http://www.inference.phy.cam.ac.uk/mackay/itila/
Esses métodos de inferência são realmente muito mais gerais do que apenas a mineração de texto e não posso imaginar como alguém aprenderia como aplicar isso à PNL sem aprender alguns dos princípios gerais contidos neste livro ou em outros livros introdutórios sobre Machine Learning e MaxEnt bayesian métodos.
A conexão entre entropia e teoria das probabilidades com o processamento e armazenamento de informações é muito, muito profunda. Para provar, há um teorema devido a Shannon que afirma que a quantidade máxima de informações que você pode passar sem erros por um canal de comunicação barulhento é igual à entropia do processo de ruído. Há também um teorema que conecta o quanto você pode compactar um dado para ocupar o mínimo de memória possível em seu computador à entropia do processo que gerou os dados.
Não acho que seja realmente necessário que você aprenda todos esses teoremas da teoria da comunicação, mas não é possível aprender isso sem aprender o básico sobre o que é entropia, como é calculado, qual é o seu relacionamento com informações e inferência, etc. ...
fonte
Quando eu estava implementando um algoritmo para calcular a entropia de uma imagem, encontrei esses links, veja aqui e aqui .
Este é o pseudo-código que eu usei, você precisará adaptá-lo para trabalhar com texto em vez de imagens, mas os princípios devem ser os mesmos.
Eu recebi esse código de algum lugar, mas não consigo extrair o link.
fonte
Informalmente
entropia é disponibilidade de informação ou conhecimento, a falta de informação leva a dificuldades na previsão do futuro, que é alta entropia (previsão da próxima palavra na mineração de texto) e a disponibilidade da informação / conhecimento nos ajudará a uma previsão mais realista do futuro (baixa entropia).
Informações relevantes de qualquer tipo reduzirão a entropia e nos ajudarão a prever um futuro mais realista; essas informações podem estar presentes na palavra "carne" na frase ou na palavra "carne". Isso é chamado de ganho de informação
Formalmente
entropia é falta de ordem de previsibilidade
fonte
Enquanto você lê um livro sobre NLTK, seria interessante ler sobre o MaxEnt Classifier Module http://www.nltk.org/api/nltk.classify.html#module-nltk.classify.maxent
Para a classificação de mineração de texto, as etapas podem ser: pré-processamento (tokenização, vapor, seleção de recursos com ganho de informação ...), transformação em numérico (frequência ou TF-IDF) (acho que este é o passo principal a ser entendido ao usar texto como entrada para um algoritmo que aceita apenas numérico) e, em seguida, classifique-o com MaxEnt, com certeza este é apenas um exemplo.
fonte