Fatoração de matrizes com SVD
Matriz usuário-item, decomposição SVD, fatores latentes e implementação com a biblioteca Surprise.
Fatoração de matrizes com SVD é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn AI with Python, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn AI with Python inclui 4 aulas no total.
Por que usar fatoração de matrizes?
A matriz usuário-item é enorme e está quase toda vazia. A fatoração de matrizes a comprime em duas matrizes menores de fatores latentes, uma para usuários e outra para itens, cujo produto reconstrói (e preenche) as avaliações. Isso lida com a esparsidade muito melhor do que os métodos baseados em vizinhos.
Intuição sobre fatores latentes
Cada usuário e item é descrito por um vetor curto de características ocultas (por exemplo, grau de ação ou de comédia no caso de filmes). Uma avaliação prevista é o produto escalar de um vetor de usuário e um vetor de item, aprendidos exclusivamente a partir dos dados.
SVD em recomendações
Modelos no estilo de SVD aprendem esses fatores minimizando o erro de previsão nas avaliações conhecidas, além de aplicar regularização. A biblioteca surprise fornece um SVD pronto para uso e otimizado para recomendações, popularizado pelo Prêmio Netflix.
A biblioteca Surprise
Importe os componentes necessários: o algoritmo, o adaptador do conjunto de dados e o leitor que descreve o formato dos seus dados.
from surprise import SVD, Dataset, Reader
from surprise.model_selection import cross_validateReader e rating_scale
O Reader informa ao Surprise o intervalo válido de avaliações por meio de rating_scale. Ajuste-o aos seus dados (por exemplo, de 1 a 5 estrelas) ou as previsões ficarão descalibradas.
reader = Reader(rating_scale=(1, 5))Carregando um DataFrame
Carregue um DataFrame com exatamente três colunas, nesta ordem: usuário, item, avaliação.
data = Dataset.load_from_df(
df[["user_id", "item_id", "rating"]],
reader
)Validação cruzada
cross_validate avalia o modelo em várias partições, informando métricas de erro para que você possa julgar a precisão com honestidade em dados reservados.
results = cross_validate(
SVD(), data,
measures=["RMSE", "MAE"],
cv=5,
verbose=True
)RMSE e MAE
- RMSE (raiz do erro quadrático médio) penaliza fortemente erros grandes.
- MAE (erro absoluto médio) é o erro absoluto médio, mais fácil de interpretar.
Quanto menores, melhor; RMSE é a principal métrica padrão para a previsão de avaliações.
Treinamento com o conjunto completo
Após a validação, treine com todo o conjunto de dados antes de disponibilizar as previsões.
trainset = data.build_full_trainset()
algo = SVD()
algo.fit(trainset)Fazendo previsões
algo.predict(uid, iid) retorna um objeto de previsão cujo campo .est contém a avaliação estimada para esse par de usuário e item.
pred = algo.predict(uid="user_42", iid="item_99")
print(pred.est) # estimated ratingAjustando hiperparâmetros
Os principais parâmetros ajustáveis do SVD são n_factors (dimensão latente), n_epochs, lr_all (taxa de aprendizado) e reg_all (regularização). Use GridSearchCV para encontrar a melhor combinação segundo o RMSE.
from surprise.model_selection import GridSearchCV
grid = {"n_factors": [50, 100], "reg_all": [0.02, 0.1]}
gs = GridSearchCV(SVD, grid, measures=["rmse"], cv=3)
gs.fit(data)
print(gs.best_params["rmse"])Verificação rápida
Faça um teste dos seus conhecimentos sobre fatoração de matrizes.
Recapitulação
Você aprendeu fatoração de matrizes por meio de SVD: vetores latentes de usuários e itens cujo produto escalar prevê avaliações. Usando surprise, você definiu rating_scale, carregou os dados, executou cross_validate com RMSE/MAE, aplicou fit e chamou algo.predict(uid, iid). Próximo tópico: filtragem baseada em conteúdo.
Perguntas Frequentes
A aula “Fatoração de matrizes com SVD” é grátis?
Sim — o texto completo de “Fatoração de matrizes com SVD” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn AI with Python, atualize para CoddyKit PRO. O curso de Learn AI with Python inclui 4 aulas no total.
O que vou aprender em “Fatoração de matrizes com SVD”?
Matriz usuário-item, decomposição SVD, fatores latentes e implementação com a biblioteca Surprise. Você pratica Learn AI with Python com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Learn AI with Python?
Nenhuma experiência prévia é necessária. Learn AI with Python no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Fatoração de matrizes com SVD”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Learn AI with Python?
Sim. Cada aula de Learn AI with Python inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Filtragem colaborativa: baseada em usuários e itens
- Fatoração de matrizes com SVD
- Filtragem baseada em conteúdo
- Sistemas híbridos e métricas de avaliação