Ir para conteúdo principal Pular para conteúdo complementar

Transformando tipos de dados

Ao treinar um modelo de aprendizado de máquina, é importante que o conjunto de dados represente com exatidão todos os tipos de dados. Se uma variável tiver uma representação imprecisa, pode levar a um modelo com baixa exatidão ou a um modelo que parece bom, mas não prevê bem quando aplicado a dados do mundo real. Você precisa ser capaz de discernir o que cada recurso mede e como atribuir uma representação adequada para esse recurso.

Em geral, o aprendizado de máquina consideraria qualquer coisa que seja um tipo de dados float ou double como um valor numérico e qualquer coisa que seja uma string como categórica. No entanto, nem sempre essa pode ser a interpretação correta, como veremos nos exemplos a seguir.

Os exemplos são baseados em um conjunto de dados que foi agregado para responder à pergunta: "Um usuário recomprará qualquer produto dentro de 30 dias a partir da data da primeira compra?" O conjunto de dados contém colunas de diferentes tipos de dados, como string, double, integer, boolean e date.

Colunas e tipos de dados

Tabela com nomes de colunas e tipos de dados.

Sequências de caracteres

A tabela abaixo mostra duas das colunas em nosso conjunto de dados que possuem o tipo de dados string. A coluna MarketingSource não possui uma diferença mensurável entre os valores, por exemplo, entre "Facebook" e "Referência do cliente". Não há relação numérica ou escalar e, portanto, a coluna deve ser considerada categórica.

Por outro lado, os valores da coluna SourceCostPerAcquisition variam de "Low" a "High" e possuem uma diferença mais mensurável entre eles. Não é tão exato quanto ter o custo médio por aquisição de fonte em dólares, mas há uma ordem de grandeza distinta entre os valores. Nesse caso, pode-se discutir se SourceCostPerAcquisition deve ser considerado categórico ou numérico.

Dados de amostra para as colunas PersonID, MarketingSource e SourceCostPerAquisition

Tabela com dados de amostra.

Uma prática recomendada nessas situações é criar duas configurações separadas, cada uma com uma classificação possível diferente dos recursos. Esses experimentos seriam realizados separadamente. A primeira configuração seria para a representação da string original. Na segunda configuração, você daria um mapeamento numérico para os diferentes valores, convertendo a coluna para o tipo de dados double. Por exemplo, "Baixo" = 1,0, "Médio" = 2,0 e "Alto" = 3,0. Depois de executar cada configuração, você poderá entender melhor qual configuração funciona melhor para aquele caso de uso específico. Em alguns casos, faz sentido usar uma representação de string e, em outros, uma representação numérica pode fazer mais sentido.

Números

Quando há uma diferença mensurável do que os dados em uma coluna descrevem, ela deve ser representada como valores numéricos. Exemplos disso são custo, receita, lucro, contagens, somas e médias.

Às vezes, o conjunto de dados pode ter um valor numérico que não é mensurável porque é um dicionário ou valor incremental como um ID. Em nosso exemplo, os valores na coluna PersonID podem ter sido confundidos com um valor numérico se não tivessem começado com "Person_". Tratar os IDs como valores numéricos teria sido uma representação imprecisa da diferença entre essas linhas. A melhor prática nesses casos é representar o ID como uma string. Antes de usar um conjunto de dados, pode ser necessário determinar se alguma das colunas numéricas deve ser convertida em valores categóricos.

Datas

No contexto do aprendizado de máquina, os tipos de campo de data são variáveis categóricas. Embora as datas e carimbos de data/hora possam ser subtraídos uns dos outros, existem vários componentes para uma data. A questão é qual desses componentes considerar e como: O valor deve ser o ano, mês, dia do mês ou ano ou a hora do dia? Talvez você queira a diferença de horário em minutos? Para obter o maior poder preditivo, a data deve ser analisada em pelo menos alguns de seus componentes. Alguns desses componentes podem ser categóricos e alguns podem ser numéricos.

Por exemplo, uma data pode ser analisada no dia da semana. Isso pode ser representado como um valor numérico (1 a 7) ou um valor de string ("domingo" a "sábado").

Dias da semana como números e strings

Tabela com dias da semana representados como números e strings.

Existem alguns problemas em representar o dia da semana como um valor numérico. Quando é o começo da semana, é segunda ou domingo? Além disso, mesmo que o dia da semana seja importante, pode estar oculto em uma tendência cíclica.

Em alguns casos, a tendência pode ser muito reveladora, como no Gráfico 1, em que a semana começa na segunda-feira.

Gráfico 1: Média de vendas por dia da semana em que a semana começa na segunda-feira

Gráfico das vendas por dia da semana com uma linha de tendência clara.

O gráfico 2 tem os mesmos dados do gráfico 1, mas foi deslocado um dia para que a semana comece no domingo. Aqui a significância dos dados é muito menor.

Gráfico 2: Média de vendas por dia da semana em que a semana começa no domingo

Gráfico das vendas por dia da semana sem uma linha de tendência clara.

O gráfico 3 ilustra outro problema com o uso do componente analisado de uma data como um valor numérico. Pode haver um padrão significativo presente, mas, se não for linear, será perdido. Devido a isso e às tendências cíclicas (por exemplo, sazonalidade diária ou trimestral) que muitas vezes estão presentes nos componentes de data, é recomendável usar esses componentes como valores categóricos e não como valores numéricos.

Gráfico 3: Média de vendas por dia da semana mostrando uma alta no meio da semana

Gráfico das vendas por dia da semana com uma tendência cíclica com pico no meio da semana.

Qlik O AutoML usa engenharia automática de recursos para separar os componentes de datas e carimbos de data/hora em suas próprias colunas distintas. Isso ajuda a melhorar a capacidade preditiva dos modelos criados. Os recursos de engenharia automática derivados de um recurso de data pai são classificados como recursos numéricos. Se necessário, você pode substituir essa funcionalidade para que as colunas de data sejam tratadas como categóricas. Para obter mais informações, consulte Engenharia de recursos de data.

Diferenças de data

As diferenças de data podem ser usadas como um substituto melhor para IDs incrementais porque um ID incremental é apenas descritivo da ordem em que os registros foram adicionados à tabela. Os IDs incrementais podem ser facilmente distorcidos pela mudança no volume (clientes por dia em muitos exemplos), enquanto uma diferença de data é independente dessa velocidade.

A diferença de data pode ser uma das várias medidas — segundos, horas, dias, meses ou trimestres. Escolha aquela que for mais relevante para a granularidade dos dados que você possui. Por exemplo, ao olhar para dados mensais, não haverá nenhum valor real em uma diferença de datas de dias. Nesse caso, uma diferença de data de meses seria mais relevante.

Esta página ajudou?

Se você encontrar algum problema com esta página ou seu conteúdo - um erro de digitação, uma etapa ausente ou um erro técnico - informe-nos como podemos melhorar!