Utilizando informações contextuais na geração de recomendações

Anteriormente publicamos aqui no blog do Catholabs um post contando um pouco sobre um dos algoritmos de recomendação que utilizamos no Sugestão de Vagas, o filtro colaborativo. Agora vamos falar de outro algoritmo bastante utilizado em nossas inteligências: o classificador contextual.

Classificar e organizar objetos é um ato corriqueiro para a maioria das pessoas. Imagine que temos uma cesta cheia de frutas e queremos separar as maçãs das laranjas. Para isto, utilizamos algumas características como cor, textura e formato da fruta para identificar se temos uma maçã ou uma laranja, baseados no que já aprendemos sobre essas frutas. Organizamos também nossas peças de roupas, guardando as calças em uma gaveta e as blusas em outra. Até as malditas contas, as quais separamos as pagas das que ainda temos que pagar, não é mesmo?

Nossa tarefa de classificação aqui na Catho é um pouco mais complicada: temos que identificar se determinada vaga é boa ou ruim para determinado usuário, dentre os milhares de anúncios de vagas e currículos cadastrados na nossa base de dados. Resumindo, temos um problema de classificação com duas possíveis classes: (1) a vaga é boa para o usuário, ou (2) vaga não é boa para o usuário. Para resolver este problema, implementamos um classificador contextual como uma das de nossas opções de inteligência, usando informações de contexto tanto das vagas quanto dos currículos dos usuários para identificar as melhores vagas para cada candidato.

Alguns exemplos de informações de contexto podem ser o local de trabalho de cada vaga, ou a pretensão salarial de cada candidato, ou até mesmo a união das informações dos dois lados, como a distância entre o local de trabalho de cada vaga em relação ao local que cada candidato mora.

Para facilitar, criamos a ilustração que mostra uma visão geral do nosso classificador contextual:

Para gerar uma recomendação de vaga para um determinado assinante, o primeiro passo será selecionar, na base de dados, vagas que sejam potencialmente boas ele. Esta fase, chamada de retrieval, impõe diversos filtros inteligentes na base de dados, sendo bastante importante por questões de desempenho, e, também, para evitar o desperdício de recursos computacionais nas etapas seguintes.

O próximo passo consistirá na extração das características contextuais (feature extraction) dos objetos do problema. No nosso caso, serão extraídas características (features) tanto das vagas quanto dos currículo, formando um vetor que será utilizado como entrada para o algoritmo de classificação.

Existe uma grande variedade de algoritmos de classificação disponíveis para usarmos na etapa de classificação (classification), como neural networks, Random Forest e logistic regressors. Tais algoritmos geram uma pontuação (score) representando a probabilidade do objeto analisado pertencer a uma determinada classe. Modelamos nosso problema como um problema binário, onde a classe positiva indica que um currículo é bom para uma certa vaga, e a classe negativa representa que o match entre eles não é bom. Ordenamos então as vagas selecionadas no retrieval por esse score, recomendando sempre as melhores vagas para os nossos assinantes.

Classificadores precisam ser treinados. Felizmente essa etapa de treinamento pode ser feita offline. Nela, devemos mostrar exemplos de todas as classes para que o algoritmo “aprenda” com os dados, e gere um modelo para utilizarmos na geração das recomendações em produção. Nesta etapa de geração do modelo, utilizamos osfeedbacks explícitos do site da Catho para formar os exemplos positivos e negativos. Ao observar uma manifestação de interesse tanto do usuário quanto do recrutador, como por exemplo, quando o assinante envia seu currículo para determinada vaga e recebe um contato do recrutador, formamos um exemplo positivo. Já para os casos negativos utilizamos casos em que o assinante descartou o anúncio de uma vaga, ou enviou seu currículo mas não recebeu um contato.

Algoritmos de aprendizagem de máquina são bastante utilizados para resolver problemas de classificação. O artigo A Visual Introduction to Machine Learning, apresenta uma boa introdução visual sobre o tema. Indicamos a leitura!

Se você já tem alguma experiência com este assunto, deve ter notado que há muito mais detalhes para que o classificador contextual gere recomendações com qualidade. Por exemplo, na etapa de geração do modelo temos que avaliar se determinado modelo é bom o suficiente para ser utilizado. A escolha dos parâmetros do algoritmo de classificação também pode influenciar muito nos resultados, assim como a escolha adequada do conjunto de features. Vamos contar mais sobre esses e outros assuntos em futuros posts aqui no blog.

 

Autor: Tiago Magalhães

 

Leave a Reply

Your email address will not be published. Required fields are marked *