Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Case Recommender - A Recommender Framework for Python

Arthur Fortes
February 28, 2018

Case Recommender - A Recommender Framework for Python

Case Recommender is a Python implementation of a number of popular recommendation algorithms for both implicit and explicit feedback. The framework aims to provide a rich set of components from which you can construct a customized recommender system from a set of algorithms. Case Recommender has different types of item recommendation and rating prediction approaches, and different metrics validation and evaluation.

Arthur Fortes

February 28, 2018
Tweet

More Decks by Arthur Fortes

Other Decks in Technology

Transcript

  1. 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)
  2. 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.
  3. “A recomendação tenta auxiliar o usuário a encontrar algo de

    que gostaria mas que não sabe, exatamente, como achar”
  4. “A lot of times, people don't know what they want

    until you show it to them.” -Steve jobs
  5. 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.
  6. 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)
  7. 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
  8. 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.
  9. 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
  10. 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
  11. 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
  12. 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.
  13. 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()
  14. 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)
  15. 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.
  16. 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!