One-hot - One-hot

Binário Código cinza One-hot
000 000 00000001
001 001 00000010
010 011 00000100
011 010 00001000
100 110 00010000
101 111 00100000
110 101 01000000
111 100 10000000

Em circuitos digitais e aprendizado de máquina , um one-hot é um grupo de bits entre os quais as combinações legais de valores são apenas aquelas com um único bit alto (1) e todos os outros baixo (0). Uma implementação semelhante em que todos os bits são '1', exceto um '0', às vezes é chamada de one-cold . Em estatística , as variáveis ​​dummy representam uma técnica semelhante para representar dados categóricos .

Formulários

Circuito digital

A codificação one-hot é freqüentemente usada para indicar o estado de uma máquina de estado . Ao usar o código binário ou Gray , um decodificador é necessário para determinar o estado. Uma máquina de estado de um-quente, no entanto, não necessita de um descodificador como a máquina de estado está no n th estado, se e apenas se o N -ésimo bit é alta.

Um contador de anéis com 15 estados ordenados sequencialmente é um exemplo de máquina de estados. Uma implementação 'one-hot' teria 15 flip-flops encadeados em série com a saída Q de cada flip-flop conectada à entrada D do próximo e a entrada D do primeiro flip-flop conectada à saída Q do 15º flip-flop . O primeiro flip-flop na cadeia representa o primeiro estado, o segundo representa o segundo estado e assim por diante até o 15º flip-flop que representa o último estado. Após a reinicialização da máquina de estado, todos os flip-flops são redefinidos para '0', exceto o primeiro na cadeia, que é definido como '1'. A próxima transição do clock chegando aos flip-flops avança o bit 'ativo' para o segundo flip-flop. O bit 'quente' avança dessa maneira até o 15º estado, após o qual a máquina de estado retorna ao primeiro estado.

Um decodificador de endereço converte de código binário ou Gray em representação one-hot. Um codificador de prioridade converte de representação one-hot em código binário ou Gray.

Comparação com outros métodos de codificação

Vantagens
  • Determinar o estado tem um custo baixo e constante de acesso a um flip-flop
  • Mudar o estado tem o custo constante de acessar dois flip-flops
  • Fácil de projetar e modificar
  • Fácil de detectar estados ilegais
  • Aproveita os abundantes flip-flops de um FPGA

Usar uma implementação one-hot normalmente permite que uma máquina de estado seja executada em uma taxa de clock mais rápida do que qualquer outra codificação dessa máquina de estado.

Desvantagens
  • Requer mais flip-flops do que outras codificações, o que o torna impraticável para dispositivos PAL
  • Muitos dos estados são ilegais

Processamento de linguagem natural

No processamento de linguagem natural , um vetor one-hot é uma matriz 1 ×  N (vetor) usada para distinguir cada palavra em um vocabulário de todas as outras palavras no vocabulário. O vetor consiste em 0s em todas as células, com exceção de um único 1 em uma célula usado exclusivamente para identificar a palavra. A codificação one-hot garante que o aprendizado de máquina não presuma que números maiores são mais importantes. Por exemplo, o valor '8' é maior do que o valor '1', mas isso não torna '8' mais importante do que '1'. O mesmo vale para as palavras: o valor 'riso' não é mais importante do que 'riso'.

Aprendizado de máquina e estatísticas

No aprendizado de máquina, a codificação one-hot é um método frequentemente usado para lidar com dados categóricos. Como muitos modelos de aprendizado de máquina precisam que suas variáveis ​​de entrada sejam numéricas, as variáveis ​​categóricas precisam ser transformadas na parte de pré-processamento.

Codificação de rótulo
Nome do Alimento # Categórico Calorias
maçã 1 95
Frango 2 231
Brócolis 3 50
One Hot Encoding
maçã Frango Brócolis Calorias
1 0 0 95
0 1 0 231
0 0 1 50

Os dados categóricos podem ser nominais ou ordinais. Os dados ordinais têm uma ordem de classificação para seus valores e, portanto, podem ser convertidos em dados numéricos por meio da codificação ordinal. Um exemplo de dados ordinais seriam as classificações em um teste variando de A a F, que poderia ser classificado usando números de 6 a 1. Uma vez que não há relação quantitativa entre os valores individuais das variáveis ​​nominais, o uso da codificação ordinal pode potencialmente criar uma relação ordinal nos dados. Portanto, a codificação one-hot é frequentemente aplicada a variáveis ​​nominais, a fim de melhorar o desempenho do algoritmo.

Para cada valor exclusivo na coluna categórica original, uma nova coluna é criada neste método. Essas variáveis ​​fictícias são então preenchidas com zeros e uns (1 significa VERDADEIRO, 0 significa FALSO).

Como esse processo cria várias novas variáveis, é provável que crie um grande problema p (muitos preditores) se houver muitos valores exclusivos na coluna original. Outra desvantagem da codificação one-hot é que ela causa multicolinearidade entre as variáveis ​​individuais, o que potencialmente reduz a precisão do modelo.

Além disso, se a variável categórica for uma variável de saída, convém converter os valores de volta em uma forma categórica para apresentá-los em seu aplicativo.

Na prática, essa transformação é frequentemente realizada diretamente por uma função que pega dados categóricos como entrada e produz as variáveis ​​dummy correspondentes. Um exemplo seria a função dummyVars da biblioteca Caret em R.


Veja também

Referências