Slide 1

Slide 1 text

Case Recommender Fazendo Recomendação em Python

Slide 2

Slide 2 text

Arthur Fortes ✘ Bacharel (Estácio CEUT) e Mestre (ICMC-USP) em Ciência da Computação e Doutorando (ICMC - USP) - Desenvolvedor Backend (2009) - Python (2010) - Sistemas de Recomendação (2013) - IA e Análise de Dados (2016)

Slide 3

Slide 3 text

Sistemas de Recomendação Surgiu em resposta à dificuldade das pessoas em escolher entre uma grande variedade de produtos e serviços e entre as várias alternativas que lhe são apresentadas (Sobrecarga de informação) Combina várias técnicas computacionais para selecionar itens personalizados com base nos interesses dos usuários e conforme o contexto no qual estão inseridos. Algoritmos de recomendação tentam achar a similaridade/relação entre conteúdos, amigos e interações para gerar uma lista de itens (rankings) e/ou predição de notas para determinado(s) item(s) baseado no comportamento dos usuários. Geralmente os sistemas de recomendação são baseados em filtragem colaborativa ou baseada em conteúdo. Existem também abordagens baseadas em demografia, localização, etc. Recomendação está presente no dia-a-dia das pessoas: além de evitar a perda de milhares de usuários, aumenta o consumo de conteúdo.

Slide 4

Slide 4 text

“A recomendação tenta auxiliar o usuário a encontrar algo de que gostaria mas que não sabe, exatamente, como achar”

Slide 5

Slide 5 text

“A lot of times, people don't know what they want until you show it to them.” -Steve jobs

Slide 6

Slide 6 text

Problemas Excesso de Informação Com a quantidade de informações e com a disponibilidade facilitada das mesmas pelo uso da Internet, as pessoas se deparam com uma diversidade muito grande de opções e informações. (A maldição da dimensionalidade/ esparsidade) Solução: O uso de sistemas de recomendação adotam técnicas de modelagem de perfis diferentes para coletar informações tanto dos usuários, como itens para retornar aos usuários conteúdo relevante de acordo com suas preferências.

Slide 7

Slide 7 text

Problemas Integração do Usuário Novas funcionalidades e tendências nas aplicações tecnológicas encorajaram uma crescente mudança no papel do usuário, de um mero consumidor de informações para um ativo produtor de conhecimento e dados. Solução: Algoritmos de recomendação que integrem diferentes tipos de feedback para considerar o máximo de tipos de informação do usuário. (Mestrado - Ensemble)

Slide 8

Slide 8 text

Problemas Abrangência Com o avanço das tecnologias surgiram diferentes maneiras para que os usuários conseguissem expressar de maneira mais eficiente suas preferências. No entanto, a maioria das ferramentas existentes não conseguiram acompanhar essas mudanças e avanços ou não possuem um arcabouço abrangente de vários recomendadores. Solução: Case Recommender

Slide 9

Slide 9 text

Inovações ✘ O desenvolvimento de um framework capaz de retornar conteúdo personalizado para seus usuários com diferentes técnicas e visão dos dados. ✘ Além de técnicas de validação e avaliação dos resultados em cenários de predição de notas e rankings. ✘ Oferecer ao desenvolver um ambiente dinâmico, no qual ele possa não somente utilizar os algoritmos, mas também interagir e desenvolver seus modelos.

Slide 10

Slide 10 text

O Framework Case Recommender

Slide 11

Slide 11 text

Linguagens de Programação O framework é desenvolvido em Python 3.6 com algumas bibliotecas. Exemplos: - Numpy - Scipy - Scikit-learn Adicionais : Matplotlib, Pandas Tecnologias Técnicas e Áreas Relacionadas Utiliza-se diversas técnicas de inteligência artificial e recuperação de informação para o desenvolvimento do projeto, entre elas: - Mineração de dados - Análise de Sentimento - Classificação - Algortimos de Recomendação - Agrupamento de dados

Slide 12

Slide 12 text

Predição de Notas ✘ Matrix Factorization ✘ SVD ++ ✘ Item KNN ✘ Item Attribute KNN ✘ User KNN ✘ User Attribute KNN ✘ Item NSVD1 (with and without Batch) ✘ User NSVD1 (with and without Batch) Algoritmos Ranking ✘ BPR MF ✘ Item KNN ✘ Item Attribute KNN ✘ User KNN ✘ User Attribute KNN ✘ Ensemble BPR Learning ✘ Most Popular ✘ Random

Slide 13

Slide 13 text

“Em meio a tudo isso, o que devo escolher?”

Slide 14

Slide 14 text

Validação e Análise Estatístico ✘ All-but-one Protocol ✘ Cross-fold-validation ✘ Bootstrapping ✘ T-test and Wilcoxon Avaliação Métricas de Avaliação ✘ Rankings: Precision, Recall, NDCG e Map ✘ Predição de notas: RMSE e MAE Requisitos ✘ Python 3 ✘ scipy ✘ numpy

Slide 15

Slide 15 text

Por que Python? Representação dos Dados Fácil manipulação de matrizes e dicionários, principalmente aliado as bibliotecas pandas e numpy. Manipulação de arquivo e dados Capacidade de guardar e manipular informações, além de eficientes métodos de leitura e escrita em arquivos. Bibliotecas Disponibilidade de bibliotecas matemáticas, com funções e tarefas otimizadas tanto para processamento como visualização de dados.

Slide 16

Slide 16 text

Uso Divide datasets (Cross Fold Validation) >> from caserec.utils.cross-fold-validation import CrossFoldValidation >> CrossFoldValidation(input-file=dataset, dir_ folds=dir-path, n-folds=10).execute() Run Item Recommendation Algorithm (E.g: ItemKNN) >> from caserec.recommenders.item_ recommendation.itemknn import ItemKNN >> ItemKNN(train-file, test-file).execute()

Slide 17

Slide 17 text

Uso Run Rating Prediction Algorithm (E.g: ItemKNN) >> from caserec.recommenders.rating-prediction.itemknn import ItemKNN >> ItemKNN(train-file, test-file).execute() Evaluate Ranking (Prec@N, Recall@N, NDCG@, Map@N and Map Total) >> from caserec.evaluation.item-recommendation import ItemRecommendationEvaluation >> ItemRecommendationEvaluation().simple-evaluation(ranking_ file, test_ file) Evaluate Ranking (MAE and RMSE) >> from caserec.evaluation.rating-prediction import RatingPredictionEvaluation >> RatingPredictionEvaluation().simple_ evaluation(predictions-file, test-file)

Slide 18

Slide 18 text

Público Alvo Pesquisador Desenvolvedor Especialistas de Dados O Case Recommender propõe um ambiente de desenvolvimento personalizado com vários algoritmos, técnicas e métricas de recomendação, destinado a desenvolvedores e pesquisadores. Além de fornecer algoritmos prontos de recomendação para uso comercial e acadêmico.

Slide 19

Slide 19 text

Considerações Finais O Framework é open source e está em fase alpha (Existe algo antes disso?) [Porém funciona!!!!] Tem como diferencial técnicas de ensemble e de filtragem baseada em conteúdo Está disponível no pypi (pip install caserecommender) Contribuições e críticas para o desenvolvimento são sempre bem vindas!

Slide 20

Slide 20 text

Obrigado! [email protected] [email protected] Linkedin: linkedin.com/in/arthurfortes/ Github: https://github.com/ArthurFortes/