ÍNDICE DE CONTEÚDO
- Introdução ao Machine Learning: Conceitos Básicos
- Tarefas do Aprendizado de Máquina
- Datasets: O que são e para que servem no Aprendizado de Máquina
- Explorando os Datasets — Parte 1
- Estatística Descritiva — Parte 1
- Estatística Descritiva – Parte 2
- Pré-Processamento Dos Dados
- Limpeza Dos Dados
- Transformação De Dados
- Classificação X Regressão
- O Algoritmo Dos K Vizinhos Mais Próximos
- Regressão Linear – Parte 1
Vamos continuar hoje a nossa jornada no universo do aprendizado de máquina. Em artigos anteriores já aprendemos sobre os dados, como eles são formatados, o que são atributos, instâncias, etc. Vimos um pouco de estatística descritiva para nos ajudar a entender melhor os dados, como limpar os dados e, veremos como transformar os dados. Bora lá.
Convertendo Dados Simbólicos para Numéricos
Alguns algoritmos de aprendizado de máquina lidam apenas com dados numéricos, portanto é necessário converter todos os valores que não são numéricos para numéricos. Atributos nominais que assumem dois valores podem ser tratados como binários, isto é, o valor 0 indica a ausência do atributo, e o valor 1 a presença. Se esses atributos são também ordinais (ordenados), então o 0 pode ser considerado o primeiro valor da ordem e 1 o segundo.
Agora, se os atributos nominais não ordenados assumem mais de dois valores, podemos criar novas colunas que assumirão o valor 0 ou 1 para indicar a ausência ou presença do atributo. Por exemplo, uma coluna com gêneros musicais pop, rock, forró, axé. Criamos uma coluna para pop, outra para rock, outra para forró e outra para axé. Se a instância originalmente é associada ao gênero rock, então colocamos 1 ali, caso contrário 0, e assim por diante. Para facilitar o entendimento, visualize essa situação na Figura abaixo:
Importante ressaltar que ao fazer esse tipo de conversão, seu dataset se transforma em um problema multirrótulo e, portanto, algoritmos tradicionais não resolverão o problema. Será preciso induzir algoritmos específicos para o problema multirrótulo. Outra forma é usar valores numéricos de 0 a X ao invés de transformar cada valor do atributo categórico em um novo atributo binário. Veja o exemplo a seguir – neste caso eu não usei o valor zero.
Neste caso temos agora um problema multiclasse já que cada valor nominal corresponde a um valor numérico diferente. A escolha do tipo de transformação vai depender do problema e do domínio de dados. Além disso, também é possível converter os atributos nominais em código 1-de-c, código cinza, código de termômetro, ou numérico (de 0 à n) no caso de também serem ordinais (pop=0, rock=1, axé=2, forró=3). Vejam os exemplos abaixo:
A diferença entre esses tipos de códigos é sutil, mas importante. Código 1-de-c o número 1 muda de posição entre os zeros da sequência. No atributo Pop o 1 está na primeira posição, em Rock na segunda, em Axé na terceira e em Forró na quarta. No código cinza é usado o código binário, onde cada sequência de 0 e 1s corresponde a um número inteiro. Assim Rock é o número inteiro 0 (0000), Rock = 1 (0001), Axé = 3 (0011) e Forró = 4 (0010). Por fim, no código de termômetro o número um vai ocupando mais posições na sequência. Veja que no atributo Forró 0111 é diferente de 0010 e 0001. Interessante não é mesmo!
Conversão Numérico-Simbólico
Alguns algoritmos de classificação e associação são capazes de trabalhar com valores qualitativos. Basicamente aqui fazemos o inverso do que fizemos nas conversões anteriores. Aqui os valores devem ser convertidos em nomes, categorias, etc. Atributos binários são de conversão simples e fácil, por exemplo, 1 é saudável e 0 é doente.
Métodos de discretização também podem ser usados. Geralmente os números são transformados em intervalos onde cada intervalo corresponde a um nome. Também é possível usar métodos de discretização paramétricos, onde os intervalos são definidos pelo usuário. Os intervalos podem ter tamanho fixo ou não, isto é, a mesma quantidade de instâncias em cada intervalo (ou não). Também é possível usar um algoritmo de agrupamento para definir os intervalos.
Conversão Numérico-Numérico
Pode parecer estranho, mas é verdade esse bilhete! Sim, pode ser que seja necessário fazer conversão de atributos numéricos. A depender do problema e algoritmo, talvez números negativos não possam ser utilizados, então todos os valores numéricos devem ser convertidos em números absolutos. Outra situação ocorre quando os limites inferior e superior são muito diferentes, neste caso é necessário fazer a normalização dados. Isso evita que os atributos ganhem mais importância que os outros, tornando justo o aprendizado do modelo. Quatro tipos diferentes de normalização podem ser aplicadas:
1. Normalização por amplitude de reescala (min-max)
Define uma nova escala de valores para todos os atributos e é feita através da aplicação da seguinte equação:
Você também pode forçar o limite inferior = 0 e inferior = 1 fazendo max=1 e min=0.
2. Normalização por amplitude de padronização
Define um valor central comum a todos os atributos e é realizada pela aplicação da seguinte equação:
onde o símbolo micro é a média e sigma a variância, conceitos que já vimos em outro artigo, portanto você já sabe como calcular. Este tipo de normalização lida melhor com outiliers já que muda os limites inferior e superior para cada atributo.
3. Normalização por distribuição
A escala de valores de um atributo é alterada. Um exemplo clássico deste tipo de normalização é a substituição dos valores pela posição que eles ocupam de forma ordenada. Exemplo:
sequencia original: 10, 7, 3, 4, 2
sequencia convertida: 5, 4, 2, 3, 1
Vejam, a ordem é {2,3,4,7, 10}, ou seja, 2 é o primeiro no ranking, 3 o segundo, e assim por diante.
4. Normalização por tradução
Se existe um atributo que é difícil de lidar, você pode tentar usar a forma simplificada dele. Um exemplo clássico é a data de nascimento, que possui 3 informações em uma: dia, mês e ano. Você pode usar a idade ao invés da data, que é um atributo muito mais simples de manipular e não afetará o aprendizado. A menos que você queira usar mês, dia e ano separadamente para algum tipo de análise específica.
Conclusão
Encerramos este artigo por aqui. Espero você no próximo artigo! Se gostou, lembre-se de compartilhar com outras pessoas e deixar seu comentário. Ainda vamos voltar neste assunto de normalização, então não se preocupem se aqui ficou faltando algum deles. Além disso, toda essa teoria depois será feita na prática! É importante entendermos os conceitos e sabermos o que estamos fazendo, antes de colocar isso em um programa! Então, até a próxima.