Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

A ciência de dados por traz de sistemas de recomendação

305 views

Published on

Palestra ministrada no evento Data Science for Health organizado pelo DatabootCamp e a fundação Bill e Melinda Gates na UFRJ.

Published in: Engineering
  • Hi there! Essay Help For Students | Discount 10% for your first order! - Check our website! https://vk.cc/80SakO
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

A ciência de dados por traz de sistemas de recomendação

  1. 1. A ciência de dados por trás de sistemas de recomendação
  2. 2. Data Science
  3. 3. Preditiva ● Vai chover ou vai fazer sol? ● Quais ações vão valorizar? ● Quanto tempo vou levar pra chegar em casa?
  4. 4. Preditiva ● Vai chover ou vai fazer sol? ● Quais ações vão valorizar? ● Quanto tempo vou levar pra chegar em casa? Prescritiva ● Você deveria usar esta roupa ● Você deveria comprar estas ações ● Você deveria seguir este trajeto
  5. 5. Preditiva, prescritiva e... Psicologia Semiótica UX +
  6. 6. Machine Learning
  7. 7. Pipeline de Machine Learning
  8. 8. Treino do modelo
  9. 9. Treino do modelo Split aleatório
  10. 10. Treino do modelo Mesma métrica na validação
  11. 11. Resultado do modelo model = [ 0.4, 0.7, 0.2, ….. ] novos exemplos: exemplo1 = [ 0.3, 0.2, 0.8, ….. ] * model.i = score exemplo2 = [ 0.3, 0.2, 0.8, ….. ] * model.i = score exemplo3 = [ 0.3, 0.2, 0.8, ….. ] * model.i = score
  12. 12. voltando pra recomendação sobre os algoritmos
  13. 13. Filtragem e ordenação ● Não personalizada ● Baseada em conteúdo ● Filtragem colaborativa ● Híbrida
  14. 14. Filtragem e ordenação ● Não personalizada ● Baseada em conteúdo ● Filtragem colaborativa ● Híbrida
  15. 15. Filtragem Colaborativa ● Memory based ● Model based
  16. 16. Memory based
  17. 17. Memory based
  18. 18. Model based
  19. 19. Model based
  20. 20. 3.634.0 - Model based
  21. 21. Média de erros quadráticos Model based
  22. 22. Resultado do modelo de algoritmos tradicionais model = [ 0.4, 0.7, 0.2, ….. ] novos exemplo: exemplo1 = [ 0.3, 0.2, 0.8, ….. ] * model.i = score exemplo2 = [ 0.3, 0.2, 0.8, ….. ] * model.i = score exemplo3 = [ 0.3, 0.2, 0.8, ….. ] * model.i = score
  23. 23. Resultado de modelo de filtragem colaborativa user1 = [ 0.2, 0.3, 0.4, ….. ] user2 = [ 0.4, 0.7, 0.2, ….. ] … item1 = [ 0.1, 0.8, 0.2, ….. ] item2 = [ 0.7, 0.7, 0.1, ….. ] …
  24. 24. usuário e item não treinado não participa da brincadeira
  25. 25. Split aleatório inválido Um usuário que está aqui Mas não está aqui
  26. 26. Split correto ● Selecionar usuários com preferência de no mínimo N+1 itens ● Selecionar aleatoriamente X desses usuários ● Selecionar no máximo K itens aleatórios desses usuários desde que na base de treino o usuário continue com N itens
  27. 27. Treino de modelo tradicional Mesma métrica na validação
  28. 28. Não dá pra comparar Se compararmos dois algoritmos ou input de dados diferentes Colaborative Filtering por rating explícito Colaborative Filtering por rating implícito binário Colaborative Filtering por rating implícito de tempo de video visto RMSE=0.7 RMSE=0.1 RMSE=30000
  29. 29. Treino de modelo de recomendação Métrica de cada algoritmo (Exemplo: ALS: RMSE) Métrica de ranking ou de classificação
  30. 30. Sempre alta precisão e recall item preference predicted item1 0.8 0.7 item2 0.7 0.6 Precision@5x5 = 1.0 Recall@5x5 = 1.0 Precision@1x5 = 1.0 Recall@1x5 = 0.5
  31. 31. Inserir itens sem preferência conhecida no split de teste item preference predicted item1 0.8 0.7 item2 0.7 0.6 item3 -- 0.8 item4 0.9 item5 0.95 item6 0.9 Precision@5x5 = 0.2 Recall@5x5 = 0.5 Precision@1x5 = 0.0 Recall@1x5 = 0.0
  32. 32. Resumão pra prova ● No fim das contas é bem parecido ● Split por usuário e itens ● Métrica diferente no treino e na validação ● Complemento de itens desconhecidos pra validação
  33. 33. Evitem essa armadilha val Array(training, test) = ratings.randomSplit(Array(0.8, 0.2)) val als = new ALS() val model = als.fit(training) val predictions = model.transform(test) val evaluator = new RegressionEvaluator().setMetricName("rmse") val rmse = evaluator.evaluate(predictions) println(s"Root-mean-square error = $rmse")
  34. 34. @timotta timotta@gmail.com

×