case recommender: fazendo recomendação em python

20
Case Recommender Fazendo Recomendação em Python

Upload: arthur-fortes

Post on 16-Mar-2018

49 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Case Recommender: Fazendo recomendação em Python

Case Recommender Fazendo

Recomendação em

Python

Page 2: Case Recommender: Fazendo recomendação em Python

Arthur Fortes

✘ Bacharel (Estácio CEUT) e Mestre (ICMC-USP) em Ciência da Computação

✘ Doutorando (ICMC - USP) / Freelancer

- Desenvolvedor Backend (2009)- Python (2010)- Sistemas de Recomendação (2013)- IA e Análise de Dados (2016)

Page 3: Case Recommender: Fazendo recomendação em Python

Sistemas de Recomendação

Surgiu em resposta à dificuldade das pessoas em escolher entre uma grande variedade deprodutos e serviços e entre as várias alternativas que lhe são apresentadas (Sobrecarga deinformação)

Combina várias técnicas computacionais para selecionar itens personalizados com base nosinteresses 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.

Page 4: Case Recommender: Fazendo recomendação em Python

“A recomendação

tenta auxiliar o

usuário a encontrar

algo de que gostaria

mas que não sabe,

exatamente, como

achar”

Page 5: Case Recommender: Fazendo recomendação em Python

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

-Steve jobs

Page 6: Case Recommender: Fazendo recomendação em Python

Problemas

Excesso de Informação

Com a quantidade de informações e com a disponibilidade facilitada das mesmas pelo usoda Internet, as pessoas se deparam com uma diversidade muito grande de opções einformações. (A maldição da dimensionalidade/ esparsidade)

Solução: O uso de sistemas de recomendação adotam técnicas de modelagem de perfisdiferentes para coletar informações tanto dos usuários, como itens para retornaraos usuários conteúdo relevante de acordo com suas preferências.

Page 7: Case Recommender: Fazendo recomendação em Python

Problemas

Integração do Usuário

Novas funcionalidades e tendências nas aplicações tecnológicas encorajaram umacrescente mudança no papel do usuário, de um mero consumidor de informações paraum ativo produtor de conhecimento e dados.

Solução: Algoritmos de recomendação que integrem diferentes tipos de feedback paraconsiderar o máximo de tipos de informação do usuário. (Mestrado - Ensemble)

Page 8: Case Recommender: Fazendo recomendação em Python

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

Page 9: Case Recommender: Fazendo recomendação em Python

Inovações

✘ O desenvolvimento de um framework capaz de retornar conteúdopersonalizado 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 depredição de notas e rankings.

✘ Oferecer ao desenvolver um ambiente dinâmico, no qual ele possa nãosomente utilizar os algoritmos, mas também interagir e desenvolver seusmodelos.

Page 10: Case Recommender: Fazendo recomendação em Python

O Framework

CaseRecommender

Page 11: Case Recommender: Fazendo recomendação em Python

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

Page 12: Case Recommender: Fazendo recomendação em Python

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

Page 13: Case Recommender: Fazendo recomendação em Python

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

Page 14: Case Recommender: Fazendo recomendação em Python

“Em meio a tudo isso,

o que devo escolher?”

Page 15: Case Recommender: Fazendo recomendação em Python

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.

Page 16: Case Recommender: Fazendo recomendação em Python

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()

Page 17: Case Recommender: Fazendo recomendação em Python

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)

Page 18: Case Recommender: Fazendo recomendação em Python

Público Alvo

PesquisadorDesenvolvedor 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.

Page 19: Case Recommender: Fazendo recomendação em Python

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!

Page 20: Case Recommender: Fazendo recomendação em Python

Obrigado!

[email protected]

[email protected]

Linkedin: linkedin.com/in/arthurfortes/

Github: https://github.com/ArthurFortes/