Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kup pan cegłe... Kup Pan cegłę, czyli wstęp do algorytmów rekomendacyjnych

Kup pan cegłe... Kup Pan cegłę, czyli wstęp do algorytmów rekomendacyjnych

Rekomendacje to już właściwie codzienność wszelkich poważnych systemów e-commerce. To jednocześnie potężny sprzymierzeniec w walce o uwagę i portfele odwiedzających. Oczywiście pod warunkiem ich odpowiedniej implementacji... Wykład będzie podzielony na część teoretyczna oraz praktyczną. Część pierwsza będzie poświęcona na omówienie podstawowych pojęć dotyczących algorytmów rekomendacyjnych, a w części drugiej zostanie przedstawione praktyczne zastosowanie poznanych technik.

Marcin Mierzejewski

October 09, 2010
Tweet

More Decks by Marcin Mierzejewski

Other Decks in Programming

Transcript

  1. Kup pan cegłę... czyli wstęp do algorytmów rekomendacyjnych PyConPL 2010

    Marcin Mierzejewski i Wojciech Wilusz QuantElement.com
  2. Za wszystkim stoją dane Użytkownicy wiek, płeć, miejsce zamieszkania, wykształcenie,

    ... Przedmioty kategoria, etykieta, cena, opis, ... Użytkownik + Przedmiot oceny, zakup, ...
  3. Workflow Dane + Algorytm Rekomendacje → Dane + Algorytm Rekomendacje

    → Dane + Algorytm Rekomendacje → ... Dane + Algorytm Rekomendacje →
  4. Collaborative filtering Przed. 1 Przed. 2 Przed. 3 ... Przed.

    N Adam 1 1 Bartek 5 4 4 ... 1 Zenon 5 3 5
  5. Collaborative filtering Przed. 1 Przed. 2 Przed. 3 ... Przed.

    N Adam 1 1 Bartek 5 4 5 4 ... 1 Zenon 5 3 5 4
  6. Content-based approach A1 = Python, Django, NumPy A2 = Python,

    NumPy, Matplotlib A3 = Google, noSQL, SVN A1 = 1,1,1,0,0,0,0 A2 = 1,0,1,1,0,0,0 A3 = 0,0,0,0,1,1,1 f(atrybuty) = f(1,1,1,0,0,0,0) = ...
  7. Content-based approach vs. Collaborative filtering Użytkownik „Jego” przedmioty Przedmioty oceny

    podobieństwo Użytkownik Użytkownicy Oceny podobieństwo agregacja
  8. SVD w praktyce from scipy import linalg, mat, dot; matrix

    = mat( [[8,8,1], [7,9,0],[1,0,9]] ); U, S, V = linalg.svd(matrix); print U [[-0.70436689, -0.00445823, -0.70982209], [-0.70339599, -0.13001227, 0.69880676], [-0.09540102, 0.99150236, 0.08844044]] print S [ 16.09739367, 9.00031526, 0.93179523] print V [[-0.66185299, -0.74331903, -0.09709498], [ 0.00508323, -0.13397045, 0.99097229], [-0.74961642, 0.65538442, 0.0924472 ]] S[2] = 0; matrixAgain = dot(dot(U,diag(S)),V) print matrixAgain [[ 7.50419707, 8.43347705, 1.0611454 ], [ 7.48810884, 8.57324984, -0.06019651], [ 1.06177467, -0.05400917, 8.99238158]]
  9. iii... Akcja! Ala Ola Ela Python 8 8 1 Matlab

    7 9 0 Java 1 0 9 VT (Fanki) -0,66185 -0,74331903 0,00508323 -0,13397045 -0,74961642 0,65538442 U (Języki) -0,70436689 -0,00445823 -0,70339599 -0,13001227 -0,09540102 0,99150236 -1 -0,8 -0,6 -0,4 -0,2 0 0,2 0,4 0,6 0,8 1 1,2 -0,8 -0,6 -0,4 -0,2 0 0,2 Języki Fanki
  10. t Książka 1 Książka 2 Książka 3 Książka 4 Użytkownik

    1 1 1 Użytkownik 2 1 1 Użytkownik 3 1 1 1 Użytkownik 4 1 1 Książka 1 Książka 2 Książka 3 Książka 4 Książka 1 - 1 2 Książka 2 1 - 1 1 Książka 3 2 1 - 1 Książka 4 1
  11. t Z życia wzięte 100 000 filmów 10 000 000

    użytkowników (1000 GB) 3 000 000 000 ocen (200 ocen per użytkownik) 4 000 000 ocen dziennie 60% użytkowników wybiera w/g rekomendacji
  12. t Konkurs'06 100 milionów ocen 17 770 filmów 480 000

    użytkowników (8 GB) Ewaluacja 3 miliony rekordów
  13. Zdjęcia: - http://www.flickr.com/photos/boltron/3212284622/ - http://www.flickr.com/photos/24443965@N08/4289182422/ - http://www.flickr.com/photos/colodio/4301458933/ - http://www.flickr.com/photos/sreejithk2000/2385193167/ -

    http://www.flickr.com/photos/paul-w-locke/3826994456/ - http://www.flickr.com/photos/tracy_olson/61056391/ - http://www.flickr.com/photos/andrec/3525054487/