Skip to content

Guia Completo para Construir Sistemas de Recomendação com Python e o Pacote Surprise

    recomendacao

    Os sistemas de recomendação são ferramentas essenciais para orientar os usuários a produtos, músicas, filmes e muito mais, alinhados com suas preferências e histórico. Neste guia abrangente, mergulharemos fundo na construção de sistemas de recomendação utilizando o pacote Surprise em Python. Exploraremos técnicas avançadas de filtragem colaborativa, amplamente aplicadas para a criação desses sistemas inteligentes.

    Desvendando a Filtragem Colaborativa

    A filtragem colaborativa representa uma abordagem líder em sistemas de recomendação. Sua base está na premissa de que usuários com comportamentos passados semelhantes tendem a compartilhar gostos e preferências futuras. No cerne dessa abordagem, encontramos o pacote Surprise, uma biblioteca de código aberto dedicada à construção de sistemas de recomendação.

    Carregando Dados e Configurando Algoritmos

    Nossa jornada começa com a aquisição e formatação dos dados. Vamos considerar o cenário de avaliações de filmes por diversos usuários, empregando o conjunto de dados clássico MovieLens 100k como nosso ponto de partida.

    import pandas as pd
    from surprise import Dataset, Reader
    
    # Dados de avaliação
    dados_avaliacao = {
        "item": [1, 2, 1, 2, 1, 2, 1, 2, 1],
        "usuário": ['A', 'A', 'B', 'B', 'C', 'C', 'D', 'D', 'E'],
        "avaliação": [1, 2, 2, 4, 2.5, 4, 4.5, 5, 3],
    }
    
    # Criando um DataFrame Pandas
    df = pd.DataFrame(dados_avaliacao)
    
    # Configurando o leitor
    leitor = Reader(scale=(1, 5))
    
    # Carregando os dados
    dados = Dataset.load_from_df(df[["usuário", "item", "avaliação"]], leitor)
    
    # Carregando o conjunto de dados MovieLens-100k
    movielens = Dataset.load_builtin('ml-100k')

    Algoritmos de Vizinhos Mais Próximos (k-NN)

    A seleção de algoritmos dependerá da estratégia escolhida. A otimização da precisão pode ser alcançada ajustando os parâmetros dos algoritmos, uma tarefa simplificada com a classe GridSearchCV disponível no Surprise, semelhante à abordagem do GridSearchCV no scikit-learn.

    Por exemplo, a busca da melhor métrica de similaridade para abordagens baseadas em memória é realizada da seguinte forma:

    from surprise import KNNWithMeans
    from surprise.model_selection import GridSearchCV
    
    # Carregando o conjunto de dados
    dados = Dataset.load_builtin("ml-100k")
    
    # Configurando as opções de similaridade
    opções_similaridade = {
        "nome": ["msd", "cosine"],
        "suporte_mínimo": [3, 4, 5],
        "baseado_em_usuário": [False, True],
    }
    
    grade_parâmetros = {"opções_similaridade": opções_similaridade}
    
    # Executando a busca em grade
    gs = GridSearchCV(KNNWithMeans, grade_parâmetros, medidas=["rmse", "mae"], cv=3)
    gs.fit(dados)
    
    # Exibindo os resultados
    print(gs.best_score["rmse"])
    print(gs.best_params["rmse"])

    Algoritmo SVD para Decomposição de Matrizes

    O algoritmo de Decomposição em Valores Singulares (SVD) é uma escolha popular para a fatoração de matrizes em sistemas de recomendação. Mais uma vez, utilizamos o GridSearchCV para encontrar os melhores valores de hiperparâmetros para o algoritmo SVD:

    from surprise import SVD
    from surprise.model_selection import GridSearchCV
    
    # Carregando o conjunto de dados
    dados = Dataset.load_builtin("ml-100k")
    
    # Definindo os valores de hiperparâmetros
    grade_parâmetros = {
        "n_épocas": [5, 10],
        "lr_todos": [0.002, 0.005],
        "reg_todos": [0.4, 0.6],
    }
    
    # Realizando a busca em grade
    gs = GridSearchCV(SVD, grade_parâmetros, medidas=["rmse", "mae"], cv=3)
    gs.fit(dados)
    
    # Exibindo os resultados
    print(gs.best_score["rm
    
    se"])
    print(gs.best_params["rmse"])

    Conclusão

    A construção de sistemas de recomendação é um desafio empolgante e significativo. Neste guia, exploramos profundamente as técnicas de filtragem colaborativa e sua implementação prática usando o pacote Surprise em Python. Através de exemplos detalhados, você aprendeu a preparar seus dados, configurar algoritmos e ajustar hiperparâmetros para oferecer as melhores recomendações possíveis.

    Se você deseja aprofundar ainda mais seu conhecimento, existem diversos recursos à sua disposição, incluindo bibliotecas como LightFM e Python-recsys, bem como livros e pesquisas acadêmicas abordando o tema.

    Lembre-se de que os sistemas de recomendação impactam diversas áreas, desde serviços de streaming até comércio eletrônico. Ao dominar essas técnicas, você estará preparado para criar sistemas inteligentes que proporcionem experiências personalizadas e envolventes aos usuários.

    Referências Adicionais

    Link para a biblioteca Surprise: https://pypi.org/project/scikit-surprise/

    Leave a Reply

    Your email address will not be published. Required fields are marked *