Última atualização em 10 de dezembro de 2020
O ganho de informação calcula a redução na entropia ou surpresa de transformar um conjunto de dados de alguma forma.
É comumente usado na construção de árvores de decisão a partir de um conjunto de dados de treinamento, avaliando o ganho de informação para cada variável e selecionando a variável que maximiza o ganho de informação, o que, por sua vez, minimiza a entropia e melhor divide o conjunto de dados em grupos para classificação efetiva.
Ganho de informação também pode ser usado para seleção de características, avaliando o ganho de cada variável no contexto da variável alvo. Neste uso ligeiramente diferente, o cálculo é referido como informação mútua entre as duas variáveis aleatórias.
Neste post, você irá descobrir o ganho de informação e informação mútua na aprendizagem da máquina.
Após ler este post, você saberá:
- O ganho de informação é a redução da entropia ou surpresa pela transformação de um conjunto de dados e é freqüentemente usado em árvores de decisão de treinamento.
- O ganho de informação é calculado pela comparação da entropia do conjunto de dados antes e depois de uma transformação.
- Informação mutual calcula a dependência estatística entre duas variáveis e é o nome dado ao ganho de informação quando aplicado à seleção de variáveis.
Pick start your project with my new book Probability for Machine Learning, incluindo tutoriais passo-a-passo e os arquivos de código fonte Python para todos os exemplos.
Let’s get started.
- Atualização Nov/2019: Melhorou a descrição do básico de info/entropy (obrigado HR).
- Atualização Ago/2020: Adicionado parênteses ausentes à equação (obrigado David)
O que é Ganho de Informação e Informação Mútua para Aprendizagem de Máquinas
Foto por Giuseppe Milo, alguns direitos reservados.
- Visão Geral
- O que é ganho de informação?
- Quer aprender Probabilidade para Aprendizagem de Máquina
- Exemplo trabalhado de cálculo do ganho de informação
- Exemplos de Ganho de Informação na Aprendizagem de Máquinas
- O que é informação mútua?
- Como a Informação é Ganhada e a Informação Mútua Relacionada?
- Outras leituras
- Livros
- API
- Artigos
- Resumo
- Confirme com a Probabilidade para Aprendizagem de Máquinas!
- Desenvolva a sua compreensão da Probabilidade
- Finally Harness Uncertainty in Your Projects
Visão Geral
Este tutorial está dividido em cinco partes; elas são:
- O que é Ganho de Informação?
- Exemplo de Cálculo do Ganho de Informação
- Exemplos de Ganho de Informação no Aprendizado Mecânico
- O que é Informação Mútua?
- Como estão relacionados o ganho de informação e a informação mútua?
O que é ganho de informação?
Ganho de informação, ou IG para abreviar, mede a redução da entropia ou surpresa pela divisão de um conjunto de dados de acordo com um determinado valor de uma variável aleatória.
Um maior ganho de informação sugere um grupo ou grupos de amostras com entropia menor e, portanto, menos surpresa.
Você pode se lembrar que a informação quantifica o quão surpreendente é um evento em bits. Eventos de menor probabilidade têm mais informação, eventos de maior probabilidade têm menos informação. A entropia quantifica quanta informação existe em uma variável aleatória, ou mais especificamente sua distribuição de probabilidade. Uma distribuição distorcida tem uma entropia baixa, enquanto uma distribuição onde os eventos têm probabilidade igual tem uma entropia maior.
Na teoria da informação, gostamos de descrever a “surpresa” de um evento. Eventos de baixa probabilidade são mais surpreendentes, portanto, têm uma quantidade maior de informação. Enquanto as distribuições de probabilidade onde os eventos são igualmente prováveis são mais surpreendentes e têm uma entropia maior.
- Distribuição de Probabilidade distorcida (sem surpresas): Baixa entropia.
- Distribuição balanceada de probabilidade (surpreendente): Alta entropia.
Para saber mais sobre os conceitos básicos de informação e entropia, veja o tutorial:
- A Gentle Introduction to Information Entropy
Agora, vamos considerar a entropia de um conjunto de dados.
Podemos pensar sobre a entropia de um conjunto de dados em termos da distribuição de probabilidade de observações no conjunto de dados pertencentes a uma classe ou outra, por exemplo, duas classes no caso de um conjunto de dados de classificação binária.
Uma interpretação da entropia da teoria da informação é que ela especifica o número mínimo de bits de informação necessários para codificar a classificação de um membro arbitrário de S (ou seja um membro de S desenhado aleatoriamente com probabilidade uniforme).
– Página 58, Machine Learning, 1997.
Por exemplo, em um problema de classificação binária (duas classes), podemos calcular a entropia da amostra de dados da seguinte forma:
- Entropia = -(p(0) * log(P(0)) + p(1) * log(P(1)))
Um conjunto de dados com uma divisão 50/50 de amostras para as duas classes teria uma entropia máxima (surpresa máxima) de 1 bit, enquanto um conjunto de dados desequilibrado com uma divisão de 10/90 teria uma entropia menor, pois haveria menos surpresa para um exemplo aleatório do conjunto de dados.
Podemos demonstrar isto com um exemplo de cálculo da entropia para este conjunto de dados desequilibrado em Python. O exemplo completo está listado abaixo.
Executando o exemplo, podemos ver que a entropia do conjunto de dados para a classificação binária é inferior a 1 bit. Ou seja, menos de um bit de informação é necessário para codificar a etiqueta de classe para um exemplo arbitrário do conjunto de dados.
1
|
entropia: 0.469 bits
|
Desta forma, a entropia pode ser usada como um cálculo da pureza de um conjunto de dados, e.Por exemplo, quão equilibrada é a distribuição das classes.
Uma entropia de 0 bits indica um conjunto de dados contendo uma classe; uma entropia de 1 ou mais bits sugere entropia máxima para um conjunto de dados equilibrado (dependendo do número de classes), com valores entre os níveis indicados entre esses extremos.
O ganho de informação fornece uma maneira de usar a entropia para calcular como uma mudança no conjunto de dados afeta a pureza do conjunto de dados, por exemplo, a distribuição das classes. Uma entropia menor sugere mais pureza ou menos surpresa.
… ganho de informação, é simplesmente a redução esperada na entropia causada pela divisão dos exemplos de acordo com esse atributo.
– Página 57, Machine Learning, 1997.
Por exemplo, podemos querer avaliar o impacto na pureza dividindo um conjunto de dados S por uma variável aleatória com um intervalo de valores.
Isso pode ser calculado da seguinte forma:
- IG(S, a) = H(S) – H(S | a)
Onde IG(S, a) é a informação para o conjunto de dados S para a variável a para uma variável aleatória, H(S) é a entropia para o conjunto de dados antes de qualquer mudança (descrita acima) e H(S | a) é a entropia condicional para o conjunto de dados dado a variável a.
Este cálculo descreve o ganho no conjunto de dados S para a variável a. É o número de bits salvos ao transformar o conjunto de dados.
A entropia condicional pode ser calculada dividindo o conjunto de dados em grupos para cada valor observado de a e calculando a soma da razão de exemplos em cada grupo do conjunto de dados inteiro multiplicado pela entropia de cada grupo.
- H(S | a) = soma v em um Sa(v)/S * H(Sa(v))
Onde Sa(v)/S é a razão do número de exemplos no conjunto de dados com a variável a tem o valor v, e H(Sa(v)) é a entropia do grupo de amostras onde a variável a tem o valor v.
Isso pode soar um pouco confuso.
Podemos fazer o cálculo das informações ganhar concretas com um exemplo trabalhado.
Quer aprender Probabilidade para Aprendizagem de Máquina
Tirar meu curso de 7 dias grátis por email crash agora (com código de amostra).
>
Clique para se inscrever e também obter uma versão PDF Ebook grátis do curso.
>
Download Your FREE Mini-Course
Exemplo trabalhado de cálculo do ganho de informação
Nesta seção, vamos fazer o cálculo do ganho de informação concreta com um exemplo trabalhado.
Podemos definir uma função para calcular a entropia de um grupo de amostras com base na proporção de amostras que pertencem à classe 0 e classe 1.
Agora, considere um conjunto de dados com 20 exemplos, 13 para a classe 0 e 7 para a classe 1. Podemos calcular a entropia para este conjunto de dados, que terá menos de 1 bit.
Agora, considere que uma das variáveis do conjunto de dados tem dois valores únicos, digamos “valor1” e “valor2”. Estamos interessados em calcular o ganho de informação desta variável.
Somos supostos que se dividirmos o conjunto de dados por valor1, teremos um grupo de oito amostras, sete para a classe 0 e uma para a classe 1. Podemos então calcular a entropia desse grupo de amostras.
Agora, vamos supor que dividimos o conjunto de dados pelo valor2; temos um grupo de 12 amostras com seis em cada grupo. Esperávamos que esse grupo tivesse uma entropia de 1,
Finalmente, podemos calcular o ganho de informação para essa variável com base nos grupos criados para cada valor da variável e a entropia calculada.
A primeira variável resultou em um grupo de oito exemplos do conjunto de dados, e o segundo grupo tinha as 12 amostras restantes no conjunto de dados. Portanto, nós temos tudo o que precisamos para calcular o ganho de informação.
- Entropia(Conjunto de dados) – (Count(Group1) / Count(Dataset) * Entropia(Group1) + Count(Group2) / Count(Dataset) * Entropia(Group2))
Or:
- Entropia(13/20, 7/20) – (8/20 * Entropia(7/8, 1/8) + 12/20 * Entropia(6/12, 6/12))
Or em código:
1
2
3
4
|
…
# calcular o ganho de informação
ganho = s_entropy – (8/20 * s1_entropy + 12/20 * s2_entropy)
print(‘Information Gain: %.3f bits’ % ganho)
|
Aplicando tudo isto, o exemplo completo é listado abaixo.
Primeiro, a entropia do conjunto de dados é calculada a pouco menos de 1 bit. Então a entropia para o primeiro e segundo grupos é calculada em cerca de 0,5 e 1 bits respectivamente.
Finalmente, o ganho de informação para a variável é calculado como 0,117 bits. Ou seja, o ganho para o conjunto de dados dividindo-o através da variável escolhida é de 0,117 bits.
1
2
3
4
|
Dataset Entropia: 0.934 bits
Grupo1 Entropia: 0,544 bits
Grupo2 Entropia: 1.000 bits
Ganho de informação: 0.117 bits
|
Exemplos de Ganho de Informação na Aprendizagem de Máquinas
Talvez o uso mais popular do ganho de informação na aprendizagem de máquinas esteja em árvores de decisão.
Um exemplo é o algoritmo Iterative Dichotomiser 3, ou ID3 para abreviar, usado para construir uma árvore de decisão.
O ganho de informação é precisamente a medida usada pelo ID3 para selecionar o melhor atributo em cada etapa do crescimento da árvore.
– Página 58, Machine Learning, 1997.
O ganho de informação é calculado para cada variável do conjunto de dados. A variável que tem o maior ganho de informação é selecionada para dividir o conjunto de dados. Geralmente, um ganho maior indica uma entropia menor ou menos surpresa.
Nota que minimizar a entropia é equivalente a maximizar o ganho de informação …
– Página 547, Machine Learning: A Probabilistic Perspective, 2012.
O processo é então repetido em cada grupo criado, excluindo a variável que já foi escolhida. Isto pára quando uma profundidade desejada para a árvore de decisão é atingida ou não são mais possíveis partições.
O processo de seleção de um novo atributo e particionamento dos exemplos de treinamento é agora repetido para cada nó descendente não terminal, desta vez usando apenas os exemplos de treinamento associados a esse nó. Atributos que foram incorporados mais alto na árvore são excluídos, de modo que qualquer atributo dado pode aparecer no máximo uma vez ao longo de qualquer caminho através da árvore.
– Página 60, Machine Learning, 1997.
Ganho de informação pode ser usado como critério de divisão na maioria das implementações modernas de árvores de decisão, como a implementação do algoritmo de Classificação e Regressão (CART) na biblioteca de aprendizagem de máquinas scikit-learn Python na classe DecisionTreeClassifier para classificação.
Isto pode ser alcançado definindo o argumento critério como “entropia” ao configurar o modelo; por exemplo:
1
2
3
4
|
# exemplo de uma árvore de decisão treinada com ganho de informação
de sklearn.tree import DecisionTreeClassifier
modelo = sklearn.tree.DecisionTreeClassifier(criterion=’entropy’)
…
|
O ganho de informação também pode ser usado para a seleção de características antes da modelagem.
Envolve o cálculo do ganho de informação entre a variável alvo e cada variável de entrada no conjunto de dados de treinamento. O Weka machine learning workbench fornece uma implementação de ganho de informação para a seleção de características através da classe InfoGainAttributeEval.
Neste contexto de seleção de características, o ganho de informação pode ser referido como “informação mútua” e calcular a dependência estatística entre duas variáveis. Um exemplo de uso do ganho de informação (informação mútua) para a seleção de características é a função scikit-learn_info_classif() mutual_info_classif().
O que é informação mútua?
A informação mútua é calculada entre duas variáveis e mede a redução na incerteza para uma variável dado um valor conhecido da outra variável.
Uma quantidade chamada informação mútua mede a quantidade de informação que se pode obter de uma variável aleatória dada outra.
– Página 310, Data Mining: Practical Machine Learning Tools and Techniques, 4ª edição, 2016.
A informação mútua entre duas variáveis aleatórias X e Y pode ser declarada formalmente da seguinte forma:
- I(X ; Y) = H(X) – H(X | Y)
Onde I(X ; Y) é a informação mútua para X e Y, H(X) é a entropia para X e H(X | Y) é a entropia condicional para X dado Y. O resultado tem as unidades de bits.
A informação mútua é uma medida de dependência ou “dependência mútua” entre duas variáveis aleatórias. Como tal, a medida é simétrica, significando que I(X ; Y) = I(Y ; X).
Mede a redução média da incerteza sobre x que resulta do aprendizado do valor de y; ou vice-versa, a quantidade média de informação que x transmite sobre y.
– Página 139, Information Theory, Inference, and Learning Algorithms, 2003.
Kullback-Leibler, ou KL, a divergência é uma medida que calcula a diferença entre duas distribuições de probabilidade.
A informação mútua também pode ser calculada como a divergência KL entre a distribuição de probabilidade conjunta e o produto das probabilidades marginais para cada variável.
Se as variáveis não são independentes, podemos ter alguma idéia se elas estão ‘próximas’ de serem independentes, considerando a divergência Kullback-Leibler entre a distribuição conjunta e o produto dos marginais, que é chamada de informação mútua entre as variáveis
– Página 57, Pattern Recognition and Machine Learning, 2006.
Isso pode ser dito formalmente da seguinte forma:
- I(X ; Y) = KL(p(X, Y) || p(X) * p(Y))
Informação mutua é sempre maior ou igual a zero, onde quanto maior o valor, maior a relação entre as duas variáveis. Se o resultado calculado for zero, então as variáveis são independentes.
Informação manual é freqüentemente usada como uma forma geral de coeficiente de correlação, por exemplo, uma medida da dependência entre variáveis aleatórias.
Também é usada como um aspecto em alguns algoritmos de aprendizagem de máquina. Um exemplo comum é a Análise de Componentes Independentes, ou ICA para abreviar, que fornece uma projeção de componentes estatisticamente independentes de um conjunto de dados.
Como a Informação é Ganhada e a Informação Mútua Relacionada?
A Informação Mútua e o Ganho de Informação são a mesma coisa, embora o contexto ou uso da medida freqüentemente dê origem a nomes diferentes.
Por exemplo:
- Efeito das Transformações para um Conjunto de Dados (árvores de decisão): Ganho de Informação.
- Dependência entre Variáveis (seleção de características): Informações mútuas.
Notem a semelhança na forma como a informação mútua é calculada e a forma como o ganho de informação é calculado; elas são equivalentes:
- I(X ; Y) = H(X) – H(X | Y)
e
- IG(S, a) = H(S) – H(S | a)
Como tal, a informação mútua é por vezes usada como sinónimo de ganho de informação. Tecnicamente, eles calculam a mesma quantidade se aplicados aos mesmos dados.
Nós podemos entender a relação entre os dois como quanto mais a diferença nas distribuições de probabilidade conjunta e marginal (informação mútua), maior o ganho em informação (ganho em informação).
Outras leituras
Esta seção fornece mais recursos sobre o tópico se você estiver procurando ir mais fundo.
Livros
- Teoria da Informação, Inferência e Algoritmos de Aprendizagem, 2003.
- Aprendizagem Mecânica: A Probabilistic Perspective, 2012.
- Pattern Recognition and Machine Learning, 2006.
- Machine Learning, 1997.
- Data Mining: Ferramentas e Técnicas Práticas de Machine Learning, 4ª edição, 2016.
API
- cipy.stats.entropy API
Artigos
- Entropia (teoria da informação), Wikipedia.
- Ganho de informação em árvores de decisão, Wikipedia.
- Algoritmo ID3, Wikipedia.
- Razão de ganho de informação, Wikipedia.
- Informação mútua, Wikipedia.
Resumo
Neste post, você descobriu o ganho de informação e informação mútua na aprendizagem de máquinas.
Especificamente, você aprendeu:
- O ganho de informação é a redução da entropia ou surpresa pela transformação de um conjunto de dados e é frequentemente usado em árvores de decisão de treinamento.
- O ganho de informação é calculado pela comparação da entropia do conjunto de dados antes e depois de uma transformação.
- Informação contínua calcula a dependência estatística entre duas variáveis e é o nome dado ao ganho de informação quando aplicado à seleção da variável.
Você tem alguma pergunta?
Ponha as suas questões nos comentários abaixo e farei o meu melhor para responder.
Confirme com a Probabilidade para Aprendizagem de Máquinas!
Desenvolva a sua compreensão da Probabilidade
…com apenas algumas linhas de código python
Descubra como no meu novo Ebook:
Probabilidade para Aprendizagem de Máquinas
>
Proporciona tutoriais de auto-estudo e projetos ponta a ponta em:
Teoria Bayesiana, Otimização Bayesiana, Distribuições, Máxima Probabilidade, Cross-Entropy, Modelos de Calibração
e muito mais…
Finally Harness Uncertainty in Your Projects
Skip the Academics. Just Results.See What’s Inside