Case Recommender: Fazendo recomendação em Python
-
Upload
arthur-fortes -
Category
Technology
-
view
49 -
download
1
Transcript of Case Recommender: Fazendo recomendação em Python
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)
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.
“A recomendação
tenta auxiliar o
usuário a encontrar
algo de que gostaria
mas que não sabe,
exatamente, como
achar”
“A lot of times, people don't know what they want until you show it to them.”
-Steve jobs
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.
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)
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
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.
O Framework
CaseRecommender
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
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
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
“Em meio a tudo isso,
o que devo escolher?”
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.
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()
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)
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.
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!
Obrigado!
Linkedin: linkedin.com/in/arthurfortes/
Github: https://github.com/ArthurFortes/