Code Monkey home page Code Monkey logo

movie-recommendation's Issues

Análise de APIs públicas

Precisamos obter uma lista de filmes que o usuário assistiu com indicação de se o usuário gostou do filme. Uma vez que não desejamos que o usuário preencha uma lista quando for utilizar o programa, pretendemos obter estas informações a partir de um provedor externo, a princípio optamos pelo TMDb, mas uma análise de sua API é necessária.

Análise dos resultados

Com base na matriz construída, devemos avaliar métricas da clusterização, podendo se valer das categorias dos filmes e outras informações disponíveis para verificar precisão, acurácia e demais valores que venham a caber em uma análise dos resultados. Ainda, cabe aqui a análise de tais métricas de modo a comparar as diferentes metodologias e algoritmos citados nas etapas anteriores.

Clusterização baseada na matriz de distância

A abordagem de construção dos clusters foi baseada em: https://gmarti.gitlab.io/ml/2017/09/07/how-to-sort-distance-matrix.html
Os métodos disponíveis a principio são são: ward, single, average, complete; Porém o método single não consegue ser executado, uma vez que atinge o limite de recursão. Para solucionar, a construção de uma abordagem iterativa seria o mais recomendado, porém também pode-se aumentar o limite de recursão do python (sys.setrecursionlimit(10000)), considerando que o tamanho do dataset não irá aumentar.

Tratamento dos dados do Dataset

Utilizaremos o Dataset considerando título do filme, sumário e gêneros. O título do filme será utilizado para referência posterior no momento de recomendação de filmes e análise dos resultados. O gênero do filme será considerado para verificação da precisão dos resultados, esperamos que filmes do mesmo cluster possuam gêneros semelhantes. Por fim, o sumário será utilizado para a construção da matriz de distância, para tal, removeremos stop words e tomaremos os bigramas.

Obtenção de dados do cliente com a API

A partir da escolha da API, devemos construir uma listagem de filmes que o usuário assistiu e que estão presentes em nossa base de dados, mantendo a informação de se o usuário gostou ou não do filme.

Construção da Matriz de distância

A matriz de distância está sendo construída utilizando a distância de Jaccard, porém outros métodos podem ser utilizados, e podem ser comparados para verificar eficiência (métodos já prontos no algoritmo: binary jaccard, masi, edit). Além disso, não se espera que os filmes possuam grande semelhança, na verdade, espera-se que poucos pares de palavras sejam coincidentes nos sumários, de forma que o escalonamento dos valores pode ajudar na clusterização. Para tal, pode-se utilizar uma função de escalonamento que mantenha os valores entre 0 e 1 (-x²+2x; 1/(1+e^(-10x+5)); e^(-3(x-1)²) ). Os dados da matriz estão sendo salvos em um arquivo .txt para referência e um .npy para uso nas etapas posteriores.

Recomendação de filmes

Com base nos clusters e nos filmes assistidos pelo usuário, devemos recomendar novos filmes para ele. Para tal, consideraremos os clusters de forma isolada, e então aplicaremos um método similar ao k-neighboors, se aproximando de filmes que o usuário gostou e distanciando de filmes que não gostou, e então recomendado um filme que ele ainda não assistiu com base na proximidade ao resultado obtido.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.