Code Monkey home page Code Monkey logo

desafio-data-science-elo7's People

Contributors

brunovilar avatar

Watchers

 avatar  avatar

desafio-data-science-elo7's Issues

Fazer re-treinamento e avaliação final

Apesar de o projeto ter uma versão inical entregável, os modelos criados continuam sendo os criados e avaliados usando cross-validation. É interessante criar a versão final do modelo, criada com os dados completos de treinamento e fazer a avaliação final usando os dados de teste.

Uma possibilidade interessante para melhorar a confiança sobre os resultados é usar o Nested Cross Validatio, conforme:

Analisar perfil de produtos do vendedor como opção de feature para predizer categorias

A identificação do vendedor (seller_id) não é usada atualmente no projeto. Entretando, é possível que alguns vendedores tenham um perfil mais especializado em categorias de produtos, como pessoas que trabalham especificamente com bijuterias ou decoração. Em alguns casos, mesmo que o vendedor trabalhe com múltiplas categorias, é provável que elas sejam relacionadas. Assim, pode compensar utilizar algo como um OHE para as categorias do vendedor. Para os dados completos, a criação de um modelo de embedding poderia ser útil sem aumentar muito a dimensionalidade dos dados.

Adicionar testes unitários

Como o projeto foi criado se aproximando de uma prova de conceito, alguns cuidados relevantes não foram tomados. Testes unitários são um deles. É preciso fazer a criação dos testes, sobretudo para as funções desenvolvidas em pipeline, para garantir o correto funcionamento do código e poder evoluir o projeto garantindo que não ocorram erros não aparentes.

Criar modelo complexo para a predição de categorias

O modelo de classificação de categorias é baseado em dois atributos: título e peso. Isto, para simplificar a criação e permitir o uso para a predição da categoria de busca, como se ela fosse um produto.

Para avaliar se o uso de outros atributos (e.g., preço, tags concatenadas e perfil de vendas do vendedor) trariam contribuições, é interessante fazer novos experimentos. Caso a melhoria seja relevante, é preciso lidar com a necessidade de uso para a classificação de categoria. Algumas possibilidades são:

  • Ter um modelo simples e um complexo para classificar categorias. O simples poderia ser usado para a classificação da busca e, também, ter seu resultado usado como entrada para o modelo complexo, criando um ensemble.
  • Usar uma segmentação maior dos produtos para estabelecer valores médios das características de cada segmento de produto.

Melhorar a eficiência da de busca/recomendação

Ainda que seja uma prova de conceito, é interessante melhorar a capacidade do sistema de realizar uma busca ou recomendação de forma mais eficiente, reduzindo o tempo de resposta. Para isso, é interessante usar algum sistema que permita a comparação de embeddings, como:

També é possível focar apenas na paralelização do processo, seja de modo mais artesanal, como por Joblib, ou automática, como pelo Dask ou Vaex ou similar.

Validar dados de entrada para a CLI

Como a CLI é a representação do uso do modelo em produção, é preciso tomar cuidados adicionais para garantir que os dados de entrada estejam sendo corretamente fornecidos. Para isso, é possível usar uma ou mais técnicas de validação:

  • JSON Validate: estabelecer um esquema e validar a adequação do JSON de entrada a esse esquema;
  • Pydantic/Marshmallow: estabelecer regras de validação (especialmente relacionadas a dataclass) e validá-las ao fazer a conversão de JSON para um objeto Python.

Segmentação de produtos para cálculo de estatísticas usadas para imputação

O projeto usa estatísticas sobre todos os produtos (e.g., média, mediana e desvio padrão) para fazer o preenchimento de atributos não preenchidos. Como não é possível usar a categoria para fazer a segmentação desses produtos, por ser o rótulo do modelo supervisionado, é preciso criar uma segmentação alternativa. Algumas opções para isso:

  • Usar o modelo de agrupamento, criado a partir dos embeddings de títulos de produtos, para fazer a segmentação.
  • Criar um modelo KNN para estimar valores a partir dos produtos mais similares.

Adicionar regisro de log nas funções "produtizadas"

Para aproximar o projeto de uma solução realmente produtizada e final, é importante incorporar um mecanismo de registro de logs, com diferentes níveis de informação, para ajudar a registrar interações com o sistema e, quando necessário, identificar problemas. Por ser uma prova de conceito, o registro dos logs em arquivo deve ser o suficiente.

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.