As etapas do algoritmo de recomendação de trilhas

Como base deste experimento de machine learning foi usado o catálogo de trilhas da eTrilhas, empresa de turismo de natureza enm que fizemos o desenvolvimento de um produto digital. A base possui cerca de 500 trilhas e tem uma série de classificações como tempo, distância, dificuldade e atividades existentes.

O objetivo do sistema de recomendação em machine learning neste caso é sugerir uma trilha a partir do input de uma outra trilha, em um modelo “se você fez essa trilha talvez você goste dessa” e o método utilizado foi a classificação por clusterização, um modelo de Aprendizado Não Supervisionado em que vamos agrupar trilhas em grupos na quantidade que definirmos – aqui foram escolhidos 5 clusters, ou grupos.

A primeira etapa consiste no tratamento do banco de dados. Isso envolve algumas etapas, como por exemplo:

  1. Eliminar colunas que não sejam do interesse do objetivo. Como exemplo, campos com url de imagens e e-mails dos gestores.
  2. Converter colunas relevantes mas em forma textual para variáveis numéricas ou “boolean” (verdadeiro / falso). Como exemplo, se um campo tem a informação textual de que “há hidratação”, podemos converter esse campo para o valor 1, enquanto “não há hidratação” para o valor 0. Se a dificuldade da trilha pode ser baixa, média e alta, podemos converter para 0, 1 e 2.
  3. Remoção do conteúdo textual em geral. No escopo deste algoritmo não estamos tratando variáveis textuais, embora isso seja possível.
  4. Remoção de campos em branco e “null” que afetam a classificação como um todo.

A partir daí já é possível fazer uma análise correlacional, ou seja, identificar campos que tem correlação entre si. Campos que tem uma correlação muito grande tendem a ser menos relevantes para o algoritmo por sua redundância.

Matriz de Correlação em Machine Learning
Matriz de correlação em trilhas

Neste gráfico por exemplo vemos campos mais claros como os que tem mais correlação entre si. Além da faixa diagonal com valores 1 em que os dados se cruzam entre si (um dado tem, obviamente, correlação direta com ele mesmo), podemos tirar algumas conclusões em machine learning.

Acima podemos ver que a dificuldade e exposição ao risco estão muito correlacionados. Mas não diretamente, ou seja, ainda assim pode haver uma trilha difícil mas sem exposição ao risco, e vice-versa. No entanto, este é um índice de correlação bem alto, 0,71 (o máximo seria 1).

Matriz de Correlação em Machine Learning
Matriz de correlação em trilhas

Outra correlação direta é do desnível negativo e positivo. Esse dado trata da inclinação para cima ou para baixo de uma trilha (não necessariamente a altitude máxima). E a correlação faz sentido porque as trilhas tendem a iniciar e concluir em uma base. No nosso jargão, “tudo que sobe desce”.

É claro que a correlação em si pode levar a conclusões precipitadas. Existe um site chamado “Spurious Correlations” que mostra exemplos de comparações bem pitorescas mas que, ao olhar matemático, demonstrariam correlação. No exemplo abaixo, a aparição de Nicolas Cage em filmes versus mortes de afogamento em piscinas.

Indice de correlações espúrias.
Site https://www.tylervigen.com/spurious-correlations

O algoritmo vai ganhando (ou perdendo) membros

O passo seguinte é “normalizar” os dados de forma que eles tenham proporções comparáveis. Como exemplo, se temos um campo de altitude que vai de 0 a 4.500 e outro de dificuldade que vai de 0 a 2, eles devem ser convertidos para parâmetros de mesma proporção para não causar distorção.

Matriz de Correlação em Machine Learning
Dados sob PCA

Em seguida, precisamos reduzir a quantidade de colunas para tratamento e aqui usamos o (Principal Component Analysis), um algoritmo utilizado para redução de dimensionalidade e extração de informações relevantes a partir de conjuntos de dados multidimensionais. Ele busca identificar as principais direções (componentes principais) ao longo das quais os dados apresentam maior variabilidade. Veja no exemplo aqui ao lado que as cerca de 60 colunas foram reduzidas para duas, o que facilita em muito o treinamento.

A classificação / clusterização dos dados em machine learning

Nesta etapa vamos classificar os dados de cada trilha em grupamentos específicos a partir das suas características. Pense numa sala de aula em que dividimos a turma do fundão, a turma que senta na frente, a turma das meninas que conversam, os nerds, etc.

Perceba que aqui propositalmente estou usando classificações que são absolutamente estereotipadas. Talvez, com uma base de dados grande da turma, poderíamos perceber que um grupo da turma do fundão na verdade teria uma grande semelhança em liderança e outro grupo uma característica de transgressão e, passado o algoritmo, na verdade teríamos estes dois grupos separados e não juntos como “fundão”.

Portanto, muito do que falamos sobre o juízo de valor dos algoritmos na verdade passa pela característica dos dados que estamos inserindo e a relevância que damos a eles – e aí voltamos à questão de como a inteligência artificial é um espelho cruel.

De volta ao nosso exemplo, escolhemos agrupar as trilhas em 5 clusters. Veja abaixo em qual turma 10 exemplos se agruparam:

No alt text provided for this image

Agora, a partir dos mesmos dados podemos olhar visualmente como as trilhas se agrupam, em uma visão 2D….

No alt text provided for this image

… ou 3D:

No alt text provided for this image

Neste momento boa parte do trabalho está concluída. O que vamos fazer agora é selecionar uma trilha específica, identificar a que cluster pertence, convocar as demais trilhas e usar um algoritmo euclidiano para saber quais destas tem valores mais próximos da trilha selecionada. E voilá :

No alt text provided for this image
Algoritmo de trilhas recomendadas.

Perceba que aqui o campo “distância” está demarcando a diferença entre um ponto e outro, e não a distância física da trilha em si.

Assim, com uso de Machine Learning desenvolvemos um algoritmo de inteligência artificial para recomendação de trilhas com objetivo de aumentar a sustentabilidade.

Categorias: Cases

pt_BRPortuguese