Aprendizado de Máquina: Recomendação de Restaurantes com o Apache Mahout

O Apache Mahout nasceu como um subprojeto do Apache Lucene em 2008, onde possuía algoritmos de clustering, já em 2010 tornou-se um projeto onde incorporou o projeto Taste de filtragem colaborativa. O HDInsight, solução de Hadoop como serviço do Azure, facilita o uso do Mahout na infraestrutura da nuvem. O Mahout é uma implementação de aprendizado de máquina escalável. No entanto, não está restrito a escalabilidade, mas ele também executa algoritmos em modo autônomo. A empresa Foursquare utiliza o Apache Mahout para fazer a recomendação de lugares ao seus usuários, já o Twitter utiliza os algoritmos do Mahout para modelagem de “interesses” de usuários, na empresa Adobe usa o Mahout dentro de seu produto Adobe Media Player para gerar recomendações de vídeos para seus usuários.

Segundo Renata Ghisloti em 2014, “Sistemas de Recomendação podem ser vistos ao realizar buscas em sites de pesquisa da internet, em compras online, ou até mesmo ao visualizamos nossos emails. São o mecanismo por trás da propaganda personalizada que recebemos na web, com indicações de sites para visitarmos ou produtos para compramos.

Com o advento do consumo em dispositivos móveis e a propagação o e-commerce, sistemas de recomendação tornaram-se um tema extremamente atrativo. Através de algoritmos simples e facilmente integráveis a aplicações web, eles agregam valor ao negócio online, promovendo itens de consumo direcionados a um público alvo”.

O Apache Mahout foi desenvolvido para auxiliar nos volumosos processamento de dados para descoberta da informação, fazendo com que as máquinas se tornem capazes de aprender sem a interação humana para ajudar em decisões estratégicas ou simplesmente para auxiliar o cliente na escolha de um produto e seus semelhantes.

Dentro do Apache Mahout encontramos implementações de algoritmos para filtragem colaborativa, armazenamento em cluster e classificação. Além destas implementações o Mahout também oferece bibliotecas em Java para operações matemáticas comuns, tais como: álgebra linear e estatística. Com o Mahout é possível construir um ambiente para criação rápida de aplicativos de aprendizagem de máquina escaláveis de elevada performance. Na Figura 1 temos exemplificado os projetos ao qual se tornaram o projeto Apache Mahout.

Figura 1. Apache Mahout e projetos relacionados (2014)

Algumas das técnicas desenvolvidas são: armazenagem em cluster, filtragem colaborativa e categorização. Estas técnicas possibilitam localizar aspectos em comum entre grandes grupos de pessoas ou rotular automaticamente grandes volumes de conteúdo de web.

Neste artigo iremos abordar implementações de aprendizagem por máquina utilizando filtragem colaborativa (CF) e categorização, logo na filtragem colaborativa, existem duas variações principais da forma de se gerar a recomendação. Uma delas consiste em se recomendar comparando as preferências de um usuário com um grupo de outros usuários, para se recomendar os itens bem avaliados por pessoas semelhantes ao usuário ao qual a recomendação se destina. Esse modelo de filtragem colaborativa é chamado de baseado em usuário. O outro tipo de filtragem colaborativa busca filtrar os itens que o usuário demonstrou interesse anteriormente, para então identificar no sistema itens similares a esses, que então serão recomendados. Esse conceito de filtragem colaborativa é chamado de baseado em itens. O Slop-One é uma abordagem de recomendação baseada em item muito rápida e simples aplicável quando usuários possuem determinadas classificações (e não apenas preferências de variáveis booleanas).

No baseado em modelos fornece recomendações com base no desenvolvimento de um modelo de usuários e suas classificações.

Figura 2. Exemplo do processo de Filtragem Colaborativa (Fabiola, 2013)

Segundo Grant Ingersoll em 2009, filtragem colaborativa (CF) é uma técnica popularizada pela Amazon e outras, que utiliza informações de usuário, como por exemplo, classificações, cliques e compras para fornecer recomendações a outros usuários do site. Na Figura 1, vemos como ocorre o processo de recomendação sendo usado as informações do usuário em conjunto com as informações já armazenadas de outros usuários que buscaram por itens semelhantes. A CF geralmente é utilizada para recomendar ao cliente itens como livros, música e filmes, porém também é utilizada em outras aplicações onde agentes múltiplos precisam colaborar para restringir dados.

Segundo Grant Ingersoll em 2009, o objetivo da categorização (frequentemente também chamada classificação) é rotular documentos não visualizados, desse modo, reunindo-os. As abordagens de classificação em aprendizagem por máquina calculam uma gama de dados estatísticos que associam as características de um documento ao rótulo especificado, criando, assim, um modelo que pode ser usado mais tarde para classificar documentos não visualizados. Por exemplo, uma abordagem simples à classificação pode acompanhar as palavras associadas ao rótulo, bem como o número de vezes que essas palavras são visualizadas para um determinado rótulo. Então, quando um novo documento é classificado, as palavras no documento são visualizadas no modelo, as probabilidades são calculadas, e o melhor resultado é a saída, normalmente junto com uma pontuação indicando a certeza de que o resultado está correto.

Figura 3. Exemplo do processo de Categorização (Fabiola, 2013)

Experimentos

Nesta seção, são apresentados dois ensaios distintos que foram realizados para demonstrar o uso das técnicas anteriormente abordadas.

Ensaio 1 – Recomendação de Restaurantes com Filtro colaborativo

Neste ensaio utilizamos a técnica de filtro colaborativo pelo algoritmo do coeficiente de correlação de Pearson aplicado sobre a base de dados de avaliações de restaurantes disponível em: http://archive.ics.uci.edu/ml/datasets/Restaurant+%26+consumer+data.

Metodologia

O Apache Mahout contempla o algoritmo do coeficiente de correlação de Pearson através da implementação do método PearsonCorrelationSimilarity disponível na biblioteca Apache Maven. Aplicamos a base de dados neste método para analisar as avaliações de restaurantes e a mesma criar uma máquina de recomendações para os restaurantes listados em nossa base.
Este coeficiente permite medir o grau de correlação entre duas variáveis, resultando em valores entre [-1;+1], onde o valor -1 representa ausência total de correlação entre as variáveis, e o valor +1 representa forte correlação entre as mesmas.
O coeficiente de correlação é definido pela seguinte fórmula:

Figura 4. Fórmula do coeficiente de correlação (Ícaro, 2015)

Os dados que compõem a base não estão dentro do padrão estabelecido pelo método aqui em questão, por isso, efetuamos uma transformação nos dados para que o algoritmo possa interpretar os dados contidos no arquivo de entrada. Conforme exemplificado na figura 5 tem-se três variáveis para mensuração da avaliação do restaurante, porém este algoritmo somente permite uma variável para indicar o rating do restaurante.

Figura 5. Amostra da base de dados utilizada nos ensaios

Por haver a necessidade de diminuir a quantidade de variáveis optou-se por fazer uma média dos ratings já que os algoritmos para máquina de recomendações somente trabalham com uma coluna para avaliação e o resultado obtido pode ser demonstrado na figura 6:

Figura 6. Amostra da base de dados após a diminuição das variáveis

O arquivo completo possui um total de 1.161 registros.
Neste ensaio fez-se o uso da metodologia de User-based que é uma recomendação baseada na experiência do usuário referente a um produto ou serviço.

Ensaios

Neste ensaio utilizamos o algoritmo IREvaluatorIntro que usa a função PearsonCorrelationSimilarity para determinar o coeficiente de correlação entre as opiniões dos usuários perante aos restaurantes avaliados.
Para o parâmetro Neighborhood size que diz ao algoritmo o número máximo de vizinhos mais próximos foi utilizado o parâmetro 2, para indicar que somente deve ser considerado os 2 vizinhos mais próximos para que não haja uma sobrecarga no processamento.
Nos experimentos realizados dizemos ao algoritmo para que utilize 70% do total de registros da base para treinamento da máquina e os outros 30% para usar como testes para realmente validar se o aprendizado obteve ou não sucesso.

Resultados

Figura 7. Código-fonte do algoritmo IREvaluatorIntro

Figura 8. Resultado do processamento do algoritmo IREvaluatorIntro

Segundo Cazella and Correa and Reategui em 2008, “No contexto de sistemas de recomendação, diz-se que a precisão é a relação entre a nota dada pelo usuário a um conteúdo que lhe foi recomendado e a nota da predição do sistema”

Figura 9. Precision x Recall

Revocação é a fração dos documentos relevantes para que a consulta seja recuperada com sucesso. Em classificação binária, revocação é frequentemente chamada de sensibilidade. Então isto pode ser visto como a probabilidade de que um documento relevante seja recuperado pela consulta.
A precisão alcançada pelo algoritmo com esta base de dados foi de 19,23% e a revocação de 5,32%.

Ensaio #2 – Recomendação de Restaurantes com Logistic Regression

Breve resumo sobre o algoritmo utilizado e sobre os dados utilizados neste ensaio. No máximo 2 linhas.
Neste ensaio utilizamos o algoritmo Stochastic Gradiente Descent que é implementado dentro do projeto Apache Mahout e este algoritmo tem a técnica estatística de regressão linear embutida ao qual iremos utilizar neste ensaio.

Metodologia

Stochastic Gradiente Descente (CGD) é uma abordagem simples e muito eficiente para o aprendizado discriminativo de classificadores lineares sob funções de perda convexas, como Linear Support Vector Machines e Regressão Logística.
A regressão logística é uma técnica estatística que tem como objetivo produzir, a partir de um conjunto de observações, um modelo que permita a predição de valores tomados por uma variável categórica, frequentemente binária, a partir de uma série de variáveis explicativas contínuas e/ou binárias.
O modelo de regressão logística é semelhante ao modelo de regressão linear. No entanto, no modelo logístico a variável resposta é binária. Uma variável binária assume dois valores, como por exemplo, e denominados “fracasso” e “sucesso”, respectivamente.
Abaixo temos a função da regressão linear:

Figura 10. Fórmula da função da regressão linear

Para a realização deste ensaio utilizou-se a mesma base do ensaio 1, porém este algoritmo nos exige que tenhamos dois conjuntos de dados como arquivos de entrada, sendo um conjunto de treinamento que é utilizado para construir o classificador e o outro conjunto de testes para avaliar o modelo construído e então utilizar para prever o valor da variável alvo. Em ambos os arquivos foi necessário adicionar uma linha com o cabeçalho das colunas para que o algoritmo consiga reconhecer qual é o dado presente nas mesmas.

Ensaios

Neste ensaio foi utilizado a regressão logística para processar o arquivo de entrada com as avaliações dos clientes nos diferentes restaurantes contidos na base de dados.
Para este ensaio aplicou-se os métodos de Logistic e AdaptiveLogistic contidos no framework do Apache Mahout, para ambos os algoritmos foi necessário separar os dados em dois arquivos sendo um de treinamento e outro para testes. A separação dos dados para o arquivo de treinamento é representada por 70% da base total e outros 30% foram colocados no arquivo de teste.
A configuração de alguns parâmetros passados para o Mahout fez-se necessária para a execução dos algoritmos para que o mesmo pudesse ler o arquivo com os dados e gerar a saída. Os parâmetros de target, predictors, passes e rate foram alterados para a execução.
O parâmetro target é o qual queremos obter como resultado deste processo. No parâmetro predictors refere-se as colunas do arquivo de entrada ao qual o algoritmo irá ler para o processamento. Já o parâmetro passes é a quantidade de vezes que o algoritmo irá repetir antes de gerar o resultado. O parâmetro rate é a taxa de aprendizado que será usada, este parâmetro somente é usado no algoritmo Logistic.
No parâmetro target foi utilizado o rating como input do algoritmo, no parâmetro passes foi utilizado o valor de 100 com o rate em 50.
No algoritmo Logistic a saída gerada é um resultado com o percentual de acerto em relação ao conjunto de treinamento e teste em conjunto com a matriz de Confusão e a entropia (forma de medir a quantidade de informação). Já no algoritmo Adaptive Logistic o resultado é um arquivo onde cada linha representa o percentual de recomendação referente ao objetivo alvo dado no arquivo de entrada.

Resultados

No algoritmo Logistic houve um problemas quando o parâmetro categories foi alterado de 2 para 3, sendo que a avaliação dos restaurantes tem um range de 0 à 2, sendo representado por 3 categorias, porém o algoritmo não permite mais de 2 categorias para execução, este problema não ocorreu no algoritmo Adaptive Logistic, porém neste algoritmo é necessário indicar um arquivo de saída onde cada linha representa a linha do arquivo de entrada, sendo necessário fazer um agrupamento de informações para obter-se um resultado final.

Resultado do processamento do algoritmo Logistic:

Figura 11. Resultado do processamento do algoritmo AdaptiveLogistic

Após diversos testes com os algoritmos utilizados neste ensaio, o algoritmo Logistic se mostrou mais satisfatório devido ao seu tipo de saída, pois o mesmo já gera um resultado final na sua execução ao contrário do algoritmo AdaptiveLogistic que para cada linha lida do arquivo de entrada é gerada uma linha de saída com o score alcançado através do target.

Figura 12. Exemplo do arquivo de saída do algoritmo AdaptiveLogistic

Conclusão

Demonstrando a aplicação dos algoritmos de recomendação do Apache Mahout em uma base de dados de qualificação de restaurantes para recomendação automática, no artigo foram feitos dois ensaios utilizando diferentes métodos de recomendação, onde a filtragem colaborativa não se mostrou interessante neste projeto, já o método de recomendação utilizando o algoritmo de regressão logística se mostrou interessante devido ao resultado gerado pelo algoritmo.

Podemos realizar a implementação destas soluções de ciência de dados como esta solução de classificação baseada em aprendizado de máquina, para todos os seus sistemas de back-end. Aproveitando o valor de dados corporativos com técnicas de Big Data como Serviço no HD Insights.

 

 

Referências

Pereira, F. S. F. (2013) “Mineração de Dados com Apache Mahout”, http://pt.slideshare.net/fabs177/minerao-de-dados-com-apache-mahout, Dezembro.
Ingersoll, G. (2009) “Introdução ao Apache Mahout”, https://www.ibm.com/developerworks/br/java/library/j-mahout/#ibm-pcon. Dezembro.
Oliveira, Í. O., “Mahout”, 2015.
Cazella, S. C. e Reategui, E. D. e Machado, M. e Barbosa, J. L. V. (2009) “Recomendação de Objetos de Aprendizagem Empregando Filtragem Colaborativa e Competências”, http://www.niee.ufrgs.br/eventos/SBIE/2009/conteudo/artigos/completos/61791_1.pdf, Dezembro.
Cazella, S.C. and Corrêa, I. and Reategui, E. (2008) “Um modelo para recomendação de conteúdos baseado em filtragem Colaborativa para dispositivos móveis”. Revista Novas Tecnologias na Educação, v. 7, pages 12-22.

Jader Fabiano, Jeferson Braga & Juliano Direne.

Jeferson Braga é Cientista de Dados da Pragmatismo.

oportunidades

Cortana Intelligence Suite e suas aplicações

Dados + Inteligência = Ações

O nome Cortana Intelligence Suite (CIS) é elaborado, e exemplifica bem o aparato tecnológico por trás desta solução de AI e Big Data como Serviço (BDaaS) da Microsoft. Não importando o volume ou formato, o CIS permite utilizar conceitos de ciência de dados forma de tão prática, que a construção de soluções inteligentes se torna uma tarefa simples e entregue em tempo recorde.

Dashboards inteligentes, agentes de conversação autônomos (bots), assistentes virtuais que entendem e respondem insights sobre o seu negócio, além de notificações preditivas com algoritmos de aprendizado de máquina, são alguns dos exemplos de soluções que podem ser construídas com o CIS. Fazendo uso de recursos de inteligência artificial como nos serviços cognitivos, as aplicações passam a usufruir de algumas características humanas, inacessíveis na era pré-nuvem para a maioria das corporações.

Os assistentes virtuais, Chatbots e Insights

Para quem já usou algum assistente virtual em seus dispositivos pessoais, seja agendando compromissos, tocando músicas ou mesmo pesquisando na Internet, sabe como as interfaces gráficas de usuário(a) (GUI) já podem ser dispensadas em vários casos de uso. Dentro da elaboração de projeto de experiência de usuária(o) (UX) conversacional, como o Cortana, Siri ou Google Now por exemplo, muitas interações com toques ou cliques em telas dão lugar a um simples diálogo.

Situação similar ocorre quando serviços são utilizados através de ChatBots, agentes autônomos presentes na sua lista de contatos, que podem executar tarefas equivalentes às das aplicações de negócio, diretamente com diálogos no Skype, Telegram ou Facebook Messenger, dispensando Apps. Estes cenários estarão cada vez mais presentes no mundo corporativo uma vez que os volume de dados produzidos pelas corporações se tornam mais atrativos. Deste modo, o poder de realizar Insights é elevado a um nível sem precedentes, permitindo a bem sucedida implantação de qualquer assistente pessoal, robô ou ferramenta de inteligência de negócio moderna.

 Microsoft e open-source

A gigante da indústria vem investindo em versões reformuladas de seus produtos com o paradigma da nuvem e democratizando o acesso aos consagrados conceitos de Big Data e abraçando também o melhor do open-source Apache. Este é o caso do HDInsight, onde a oferta deixa claro que o Azure é uma verdadeira democracia em termos de software e serviços, não importando sua origem (procure saber sobre o movimento Microsoft ama o Linux). Esta combinação de ferramentas ajuda a compor o Cortana Intelligence Suite em forma de componentes já testados na indústria e que agregam valor incremental às soluções híbridas ou 100% baseadas no Azure.

O HDInsight é baseado na plataforma de Big Data Apache Hadoop ®, da Apache Foundation. Todo o núcleo e suas tecnologias associadas como Spark ou Kafka estão empacotados e gerenciados como serviço na Azure sob a bandeira do HDInsight. Além disso, o sistema de arquivos do Apache Hadoop ®, o HDFS (Hadoop File System), é a base para o Azure Data Lake, o serviço da Azure de armazenamento estruturado e não estruturado de Big Data, com expansão virtualmente infinita. Soluções proprietárias da Microsoft também compõe a oferta e vêm recebendo atualizações para se alinharem com às expectativas de escalabilidade de soluções em nuvem.

Capacitação de equipe e retorno de investimento

O SQL Server Data Warehouse com seu alto poder de paralelismo e manipulação de dados não estruturados, algumas das características de soluções Big Data (saiba mais sobre os três V’s do Big Data), proporciona um ambiente familiar para analistas e desenvolvedoras, diminuindo a curva de aprendizado na qualificação da equipe em soluções de alta performance. Ou mesmo com o Azure Data Factory, que pode ser visto como uma evolução do SQL Server Integration Services (SSIS) na nuvem, permitindo a aquisição das mais diversas fontes de dados e preparando o volume de dados no Azure Data Lake com conceitos familiares.

O nome Cortana Intelligence Suite sela um conjunto de ferramentas acessíveis e pronto para uso, provendo um retorno de investimento muito acelerado, característica padrão na adoção de soluções de Plataforma como Serviço (PaaS). Ainda, apoiado com Frameworks e Bibliotecas como o Cognitive Services é possível construir aplicações sob medida, utilizando recursos sem precedentes como: interpretação de imagens, reconhecimento de voz, linguagem natural e fala.

Seja entregando relatórios com abrangência e sumarização diferenciadas para membros do C-level, usando algoritmos preditivos, melhorando a eficiência operacional, ou mesmo estendendo os diálogos com o Cortana Skills Kit, o Azure reúne um universo de ferramentas. Isso sem falar em seu Marketplace com ainda mais serviços. Um projeto pode ser facilmente construído num mix ideal composto de soluções proprietárias e software open-source, com suporte diferenciado. Dispensando horas de preparação de uma arquitetura base e preparação de servidores.

De um modo geral o Azure vem facilitando cada vez mais a introdução na nuvem por uma gama de analistas, desenvolvedores e estatísticos, dentre outros perfis de TI que esperavam a resposta da Microsoft de Big Data e AI em relação aos outros provedores de nuvem como AWS e Google.

Prova de Conceito e aplicações práticas

Nós estamos prontos para ajudar a sua empresa a obter o melhor dos dados na era cognitiva, podemos realizar uma prova de conceito com alguns cenários práticos, demonstrando valor imediato a stakeholders. Essencial para tomada de decisão em tempo real da corporação, o desenho da solução de inteligência é a diferencial em termos de obter o melhor benefício da nuvem e sua arquitetura distribuída. Algumas verticais como Varejo, Engenharia, Manufatura, Finanças & Saúde podem ser conferidas no nosso site com exemplos práticos de aplicações do Cortana Intelligence Suite no dia a dia e demonstram estes conceitos.

Rodrigo Rodriguez (rodriguez@pragmatismo.io) é CEO da Pragmatismo.

Sobre nós.

O movimento para a nuvem e suas ofertas

A presença na nuvem

O International Data Corporation (IDC) projeta que o gasto com nuvem irá exceder USD 500bi em 2020*. A nuvem hoje é mais que uma realidade para empresas e organizações de todos os tamanhos. As características escaláveis e de onipresença da nuvem no dia a dia das pessoas, através do uso de dispositivos móveis, jogos online e redes sociais, facilitaram a difusão dos conceitos e tipos de arquiteturas modernas de software, algumas delas somente possíveis com o paradigma da nuvem.

Já residem neste novo horizonte empresas born-in-the-cloud, ou seja, empresas que estabeleceram seus negócios modelando-os juntamente com conceitos de nuvem. Estas empresas se tornaram economicamente viáveis de modo sustentável, graças às características de elasticidade, que possibilitam às aplicações crescerem junto com a demanda, ajustando propriedades como número de processadores e memória. Além também, é claro, da escrita de código e arquiteturas escaláveis, que permite que o mesmo código funcione para 10 ou 10.000 usuários, sem alteração.

Ofertas motivadoras

A usabilidade também é um fator que ajuda na decisão de optar por soluções em nuvem. Aplicativos pessoais evoluem numa velocidade tão desproporcional às soluções de negócio ou Line of Business (LOB, em Inglês), que estas últimas acabam por experimentar ciclos mais lentos de atualização, resultando em abordagens ultrapassadas e interfaces não intuitivas.

A nuvem permite o uso de conceitos modernos presentes em Apps como Facebook, Skype ou WhatsApp, que muitas vezes passam despercebidos na utilização, mas estão presentes nos bastidores e podem ser úteis para as LOB. Chat bots, Machine Learning, Serviços Cognitivos, Big Data, Streaming de Áudio e Vídeo, para citar alguns, são exemplos de requisitos que podem ser implementados de modo eficaz em aplicações empresariais, sem o custo elevado do equivalente em uma solução on-premises.

Cloud Consumption (Consumo em nuvem)

Ajudando a constituir grande parte do mercado de nuvem, uma leva de empresas já começa a se beneficiar de serviços como Infraestrutura como Serviço (IaaS) primariamente com máquinas virtuais e alguns serviços de recuperação de desastres. Porém agora, empresas parceiras, responsáveis por implementações de negócio de provedores de nuvem como Microsoft, Amazon, Google e IBM por exemplo, têm a missão de demonstrar o valor da nuvem para seus clientes com base em serviços e arquiteturas modernas, missão dada pelas gigantes do setor.

Tendo um papel fundamental no desenvolvimento de novas aplicações e migração de cargas de trabalho para a nuvem, soluções de grande afinidade com a nuvem como Aprendizado de Máquina, Inteligência Artificial, Big Data e, no caso da Microsoft, o Cortana Intelligence Suite (CIS) podem influenciar o consumo em nuvem (ou Cloud Consumption, em inglês). Deste modo, gradualmente o grande valor da nuvem passa a ser conhecido através de migrações graduais, ou mesmo na construção de aplicações born-in-the-cloud.

Faça parte desta transformação digital

Se você está pensando em iniciar a transformação digital do seu negócio para obter as vantagens que uma solução na nuvem proporciona ou está procurando investir numa solução de prova de conceito (POC), podemos ajudá-lo. Utilizando a infraestrutura de nuvem e modernas técnicas de engenharia de software, construiremos rapidamente sua solução POC, demonstrando imediatamente seu valor para todos os interessados.

*: Fonte: Microsoft.

Rodrigo Rodriguez é CEO da Pragmatismo.