Giter VIP home page Giter VIP logo

product_recommender's People

Watchers

 avatar

product_recommender's Issues

Ajustes na documentação do projeto

Objetivos

Ajustar toda a documentação do projeto. Revisando todas as descrições e análises e corrigindo sempre que necessário. As documentações das funções também precisam ser realizadas. E por fim, caso venha a melhorar a organização do projeto, as funções devem ser removidas do main.

Etapas

  • revisão dos notebooks
    • notebook 0
    • notebook 1
    • notebook 2
    • notebook 3
    • notebook 4
  • revisão do código main
  • revisão do readme

Análise descritiva dos dados

Objetivos

Essa deve ser uma primeira análise descritiva com base nos dados. Ela deve ser uma primeira etapa para a formulação de hipóteses e identificação de novas análises que podem ser realizadas.

Etapas

  • análise da distribuição de cada variável de produto
  • análise da relação das variáveis de produto e as categorias
  • será que alguma variável consegue dividir bem as categorias?

Descrição dos resultados da análise de produtos

Objetivo

Apesar do código já estar pronto falta ainda escrever a análise dos resultados finais.

Etapas

  • introdução
  • análise descritiva geral
  • metodologia de tópicos
  • análise do resultado dos tópicos

Refactor da recomendação de produtos

Objetivos

Apesar de funcional a recomendação de produtos não está otimizada. Nesse caso, devemos otimizar essa funcionalidade. Utilizando mais os métodos do pandas, principalmente os de vetorização de função e os de ordenamento de dataframes.

Etapas

  • modificar a função para receber um dataframe com os títulos e os títulos limpos
  • criar uma nova coluna com as distâncias utilizando apply
  • ordenar e selecionar os primeiros (head)
  • if else com título ou index

Desenvolver uma métrica de avaliação do ranqueamento

Objetivos

Uma vez desenvolvida uma forma de se ranquear termos a partir de uma query, agora é necessário poder avaliar a técnica desenvolvida. Para tal é necessário desenvolver uma função que irá comparar os itens ranqueados pelo sistema de ranqueamento desenvolvido com
a lista de resultados obtida pela query nos dados.

Etapas

  • desenvolver a métrica
  • aplicar a métrica
  • avaliar os resultados

Adicionar funções aos módulos para facilitar sua reutilização

Objetivos

Algumas funções são utilizadas mais de uma vez, nesses casos seria mais adequado move-las para um modelo no src de modo que possam ser reutilizadas sem a necessidade de reescrevê-las novamente no código.

Etapas

  • distribuir as funções dos notebooks que podem ser reutilizadas para módulos
    • notebook 0
    • notebook 1
    • notebook 2
    • notebook 3
    • notebook 4

Prototipar um novo sistema de recomendação

Objetivos

Dado o baixo desempenho do sistema de recomendação atual, deve ser desenvolvido um classificador alternativo. Esse novo classificador deverá ter uma estratégia distinta. Ao invés de testar a interseção dos top previstos com os top reais, devemos prever as posições dos produtos para dada uma query. Uma vez que já possuímos uma estrutura para fazer previsões com base na distância de edição, devemos continuar utilizando esse atributo, mas também utilizando outros, como: distância de cosseno da query em relação aos títulos, alguma métrica de distância ou similaridade em relação às tags, proporção de tokens da query que estão presentes no dicionário...

Etapas

  • Análise sobre os dados de posição
  • Extração de features
    • distância de cosseno
    • diferença da quantidade de tokens
  • Teste da modelagem

Ranqueamento por distância de edição

Objetivos

Tendo em vista que precisamos de uma ferramenta de ranqueamento dos produtos com base em uma query geral. A forma mais genérica que consigo pensar em conseguir isso é por meio de distância de edição. Outras técnicas que dependem da vetorização de textos como word embbeding e tf-idf requer que ambos os textos a serem comparados precisem de vocabulários em comum. A distância de edição, apesar de não ser a forma mais sofisticada é a que melhor se adaptar a termos inesperados.

Etapas:

  • encontrar/desenvolver uma forma de criar distância entre dois termos
  • aplicar ela para a lista de documentos
  • ranquear e obter os de menor distância de edição

Validação dos dados

Objetivos

Análise da consistência dos dados, verificando se existem dados faltantes, se os dados categóricos estão padronizados em torno de uma quantidade limitada de categorias. Quais são os registros que são únicos. Se os dados estão em formato correto ou se necessitam ser reformatados.

Etapas

  • verificar dados faltantes
  • verificar tipo de dados de todas as variáveis
  • verificar categorias de tag - transformar para listas
  • verificar categoria express_delivery
  • verificar unicidade dos product_id (se a unicidade do product_id é por seller_id ou pervasiva aos vendedores)

Aplicação de modelagem de tópicos para variáveis textuais

Objetivo

Aplicara a modelagem de tópicos para as duas variáveis textuais em separado title e concatenated_tags. Em seguida devemos compreender melhor quais foram os tópicos gerados e, por fim, correlacionar os tópicos gerados com as categorias rotuladas.

Etapas

  • title
    • aplicar a modelagem
    • identificar os tópicos
    • relacionamento com categorias
  • concatenated_tags
    • aplicar a modelagem
    • identificar os tópicos
    • relacionamento com categorias

Ajuste na etapa de preparação dos dados

Objetivos

Com a utilização dos dados de produto nas etapas de modelagem e análise descritiva foi identificada a necessidade de adicionar novas etapas de pré-processamento mais gerais. Dessa forma, esses passos precisam ser adicionados no notebook 0 e os dados vão precisar ser gerados novamente. Os passos a serem adicionados, são a remoção de missing (o que foi escolhido tendo em vista a quantidade desprezível de dados faltantes) e no caso dos dados de produto e utilização de product_id como index do DataFrame.

Identificação o grupo das previsões de resultados de queries

Objetivo

A última etapa do projeto envolve a identificação das categorias associadas à query realizada. Para tal, vamos utilizar o modelo de classificação desenvolvido anteriormente. Esse modelo vai ser aplicado a cada item retornado pelo sistema de recomendação e a classificação escolhida será por decisão majoritária.

Etapas

  • aplicar a recomendação
  • selecionar os dados
  • aplicar o modelo de classificação
  • escolher a categoria mais frequente

Retrabalho dos dados

Objetivo

Retrabalhar o pré-processamento dos dados. Esse retrabalho é necessário pois a remoção de registros duplicados foi insuficiente do ponto de vista do produto e foi necessário durante a análise descritiva dos dados de produto fazer mais uma remoção de dados duplicados. Dessa forma, serão separados dois tipos de dados, de queries e de produto. Os dados de queries a princípio serão mantidos sem eliminação de dados duplicados. Já os dados de produto serão unificados por id de produto (não é preciso considerar id de vendedor porque cada id de produto possui apenas um vendedor).

Etapas

  • refazer a análise de registros duplicados por produto
  • refazer a análise de variabilidade entre os registros duplicados de produto
  • fazer a unificação dos dados de produto
  • aplicar o train_test_split para dados de produto e queries
  • salvar os dados de treinamento e teste para produto e queries

Montar um pipeline de modelagem de tópicos

Objetivo

Montar um pipeline que faz a tokenização de uma variável textual, aplica técnica de redução de dimensionalidade (tópicos NMF) e em seguida extrai as variáveis de tópicos como novas features para análise cruzada com os dados de categorias.

Etaspas:

  • limpeza dos textos
  • tokenização
  • vetorização
  • modelagem de tópicos

Produtização do classificador

Objetivos

Transformar o que foi desenvolvido no notebook de desenvolvimento do modelo de classificação em um script py que possa ser
utilizado na linha de comando.

Etapas

  • criar scripts de pré-processamento
  • criar os scripts de modelagem
  • criar as configurações
  • criar o arquivo main
  • testar a aplicação

Criar um pipeline de classificação e otimizar os hiperparâmetros

Objetivos

Essa é a etapa final da classificação de produtos. Nela, devemos criar um pipeline que irá reunir todas as etapas de pré-processamento e com a de modelagem. Em seguida devemos criar um dicionário com os parâmetros a serem combinados e testados por um grid search. Após treinado e obtido o melhor modelo, este deve ser avaliado utilizando os dados de teste e, por fim, salvo para execução em "produção".

Etapas

  • criar o pipeline
  • criar o paramgrid
  • utilizar gridsearch
  • obter o melhor modelo
  • testar o melhor modelo
  • salvar os resultado

Simplificar a função de remoção de dados duplicados

Objetivo

Foram identificados passos desnecessários na função de remoção de duplicados. Talvez seja mais simples apenas fazer um groupby com o agg com as variáveis especificasdas.

Etapas

  • criar uma nova versão da função
  • aplicar a nova função e comparar com a antiga
  • caso o resultado seja o mesmo, realizar a substituição da função

Separar dados em teste e treinamento

Objetivos

Para que seja possível validar a capacidade de generalização dos sistemas de classificação e recomendação devemos segmentar os dados em dados de teste e treinamento. Assim, após o treinamento dos sistemas será possível verificar o desempenho de ambos os sistemas em dados que não foram utilizados para o treinamento, o que de certa forma replicaria uma aplicação real do sistema.

Para garantir a representatividade das categorias em ambos os datasets (treino e teste), pode ser que seja necessário utilizar a segmentação dos dados estratificando pela variável categórica.

Etapas

  • analisar a distribuição da variável category
  • aplicar o train_test_split nos dados já validados na issue #1
  • salvar os dados de teste e treinamento em arquivos distintos

Prunar o requirements.txt removendo o que não foi utilizado

Objetivos

Verificar todos os requirements e remover aqueles que não são mais necessários. Em seguida, gerar novamente o arquivo requirements.txt

Etapas

  • remover o pipenv
  • criar um novo pipenv
  • reinstalar os pacotes necessários
  • criar um novo requirements.txt

Modelagem de categoria de produto

Objetivos

Testar diversos modelo de árvore para avaliar se a inclusão dos tópicos melhora a qualidade
dos modelos. Para tal será necessário avaliar, as métricas de desempenho de treino e teste a partir de validação cruzada e da importância de cada um dos atributos para o modelo. Essa ainda é uma etapa exploratória de modo que não tem necessidade de otimizar os hiperparâmetros.

Etapas:

  • adicionar funcionalidades de tópicos desenvolvidas no notebook de análise
  • criar diversos datasets cada um com variações quanto a geração dos tópicos
  • criar funcionalidades de avaliação da modelagem.
  • aplicar o teste para cada um dos dados
  • analisar os resultados

Aplicar o sistema de recomendação ao main

Objetivo

incorporar as funcionalidades de ranqueamento e classificação de ranqueamento ao script main.py.

Etapas

  • adicionar as funções
  • modificar os argumntos
  • adicionar as etapas ao main
  • testar a aplicaçao

Análise descritiva dos dados de queries

Objetivo

Para preparar para a elaboração solução de classificação devemos antes fazer uma análise descritiva dos dados. Como isso já foi realizado em parte para a classificação dos produtos nesse caso, a classificação deve ser apenas complementar, considerando
variáveis que ainda não foram utilizadas.

Etapas

  • avaliar a quantidade de resultados por query
  • avaliar a distribuição de posições por query
  • avaliar o tamanho das querys

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.