100901556

Page 1


spis treści

przedmowa xv

podziękowania xvii

otej książce xix

oautorze xxii

ookładce xxiii

Część 1 Przygotowanie do systemów rekomendaCji 1

1 Co to jest system rekomendacji? 3

1.1. Rekomendacje z życia wzięte 4

Systemy rekomendacji pasują do Internetu 5 ■ Długi ogon 6 ■ System rekomendacji Netfliksa 6 ■ Definicja systemu rekomendacji 13

1.2. Taksonomia systemów rekomendacji 15

Domena 16 ■ Cel 16 ■ Kontekst 17 ■ Poziom personalizacji 17 ■ Czyje opinie 18 ■ Prywatność i wiarygodność 19 ■ Interfejs 20 ■ Algorytmy 22

1.3. Uczenie maszynowe i nagroda Netfliksa 24

1.4. Witryna MovieGEEKs 25

Projekt i specyfikacja 26 ■ Architektura 27

1.5. Budowanie systemu rekomendacji 29

2 Zachowanie użytkowników i jak zbierać o tym dane 31

2.1. Jak (według mnie) Netflix zbiera dowody podczas przeglądania 32

Dowody, które zbiera Netflix 34

2.2. Znajdowanie przydatnych zachowań użytkowników 36

Przechwytywanie wrażeń odwiedzających 37 ■ Czego można się dowiedzieć od osoby rozglądającej się po sklepie 37 ■ Akt zakupu 42 ■ Konsumpcja produktów 43 ■ Oceny odwiedzających 44 ■ Poznawanie swoich klientów (starym) sposobem Netfiksa 47

2.3. Identyfikowanie użytkowników 47

2.4. Uzyskiwanie danych odwiedzających z innych źródeł 48

2.5. Moduł zbierający dane 49

Budowanie plików projektu 50 ■ Model danych 50 ■ Snitch: moduł zbierający dowody po stronie klienta 51 ■ Integrowanie modułu z MovieGEEKs 53

2.6. Czym są użytkownicy w systemie i jak ich modelować 55

3 Monitorowanie systemu 59

3.1. Dlaczego dodanie pulpitu nawigacyjnego jest dobrym pomysłem 60

Odpowiadanie na pytanie „jak nam idzie?” 60

3.2. Obliczanie statystyk 62

Analityka internetowa 62 ■ Podstawowe statystyki 63 ■ Konwersje 64 ■ Analizowanie ścieżki do konwersji 67 ■ Ścieżka konwersji 69

3.3. Persony 71

3.4. Pulpit nawigacyjny MovieGEEKs 74

Automatyczne generowanie danych w dzienniku 74 ■ Specyfikacja i projektowanie pulpitu nawigacyjnego 75 ■ Analityczny pulpit nawigacyjny – szkielet projektu 75 ■ Architektura 76

4 Oceny i jak je obliczać 80

4.1. Preferencje użytkownik-przedmiot 81

Definicja ratingu 81 ■ Macierz użytkownik-przedmiot 82

4.2. Jawne lub niejawne oceny 84

Jak wykorzystujemy zaufane źródła do rekomendacji 85

4.3. Ponowne odwiedzanie ocen jawnych 86

4.4. Czym są oceny niejawne? 86

Rekomendowanie osób 88 ■ Uwagi dotyczące obliczania ocen 88

4.5. Obliczanie ocen niejawnych 91

Spojrzenie na dane behawioralne 92 ■ To można uznać za problem uczenia maszynowego 96

4.6. Jak zaimplementować oceny niejawne 97

Dodawanie aspektu czasu 101

4.7. Mniej popularne elementy mają większą wartość 103

5 Niespersonalizowane rekomendacje 107

5.1. Co to są niespersonalizowane rekomendacje? 108

Co to jest reklama? 108 ■ Co robi rekomendacja? 110

5.2. Jak tworzyć rekomendacje, gdy nie masz danych 110

Top 10: lista najpopularniejszych przedmiotów 112

5.3. Implementacja listy najpopularniejszych pozycji i podstawy dla komponentu systemu rekomendacji 114

Komponent systemu rekomendacji 114 ■ Kod MovieGEEKs z GitHub 115 ■ System rekomendacji 115 ■ Dodawanie listy najpopularniejszych pozycji do MovieGEEKs 116 ■ Uatrakcyjnienie wyglądu treści 117

5.4. Rekomendacje oparte na wartościach inicjujących 119

Często kupowane przedmioty podobne do oglądanych 120 ■ Reguły asocjacyjne 121 ■ Implementowanie reguł asocjacyjnych 126 ■ Zapisywanie reguł asocjacyjnych w bazie danych 131 ■ Uruchamianie kalkulatora reguł asocjacyjnych 132 ■ Używanie różnych zdarzeń do tworzenia reguł asocjacyjnych 134

6 Użytkownik (i treści), który przyszedł z zimna 136

6.1. Co to jest zimny start? 137

Zimne produkty 138 ■ Zimny gość 139 ■ Szare owce 140 ■ Spójrzmy na przykłady z życia wzięte 140 ■ Co możesz zrobić z zimnym startem? 142

6.2. Śledzenie odwiedzających 142

Uparcie anonimowi użytkownicy 142

6.3. Rozwiązywanie problemów z zimnym startem za pomocą algorytmów 143

Używanie reguł asocjacyjnych do tworzenia rekomendacji dla zimnych użytkowników 143 ■ Korzystanie ze znajomości domeny i zasad biznesowych 145 ■ Korzystanie z segmentów 146 ■ Wykorzystywanie kategorii do obejścia problemu szarych owiec i jak wprowadzać zimny produkt 147

6.4. Ci, którzy nie pytają, nie będą wiedzieć 149

Kiedy odwiedzający nie jest już nowy 150

6.5. Wykorzystanie reguł asocjacyjnych do szybkiego przedstawiania rekomendacji 151

Znajdowanie zebranych elementów 152 ■ Wydobywanie reguł asocjacyjnych i porządkowanie ich według ufności 152 ■ Wyświetlanie rekomendacji 153 ■ Ocena implementacji 156

Część 2 algorytmy systemów rekomendaCji .......................................... 157

7 Znajdowanie podobieństw wśród użytkowników i wśród treści 159

7.1. Dlaczego podobieństwo? 161

Czym jest funkcja podobieństwa? 161

7.2. Podstawowe funkcje podobieństwa 162

Indeks Jaccarda 163 ■ Pomiar odległości z normami Lp 165 ■ Podobieństwo kosinusowe 168 ■ Znajdowanie podobieństwa za pomocą współczynnika korelacji liniowej Pearsona 171 ■ Testowanie podobieństwa Pearsona 172 ■ Korelacja liniowa jest podobna do kosinusowej 174

7.3. Klastrowanie metodą k-średnich 175

Algorytmy klastrowania metodą k-średnich 175 ■ Przekładanie algorytmu klasowania metodą k-średnich na Pythona 178

7.4. Implementacja podobieństw 183

Implementacja podobieństwa w witrynie MovieGEEKs 185 ■ Implementacja klastrowania w witrynie MovieGEEKs 188

8 Wspólna filtracja w sąsiedztwie 193

8.1. Wspólna filtracja: lekcja historii 195

Kiedy informacja stała się wspólnie przefiltrowana 195 ■ Wzajemna pomoc 196 ■ Macierz ocen 198 ■ Potok wspólnej filtracji 199 ■ Czy należy używać wspólnej filtracji użytkownik-użytkownik czy element-element? 199 ■ Wymagania dotyczące danych 200

8.2. Obliczanie rekomendacji 201

8.3. Obliczanie podobieństw 202

8.4. Algorytm Amazona do wstępnego obliczania podobieństwa elementów 202

8.5. Sposoby wybierania sąsiedztwa 207

8.6. Znajdowanie właściwego sąsiedztwa 209

8.7. Sposoby obliczania przewidywanych ocen 209

8.8. Przewidywanie z filtrowaniem opartym na elementach 211

Obliczanie przewidywań elementów 212

8.9. Problemy z zimnym startem 213

8.10. Kilka słów o pojęciach w uczeniu maszynowym 213

8.11. Wspólna filtracja na stronie MovieGEEKs 215

Filtrowanie oparte na elementach 216

8.12. Jaka jest różnica między rekomendacjami z reguł asocjacyjnych a rekomendacjami opartymi na wspólnej filtracji 223

8.13. Dźwignie do majstrowania przy wspólnej filtracji 223

8.14. Plusy i minusy wspólnej filtracji 225

9 Ewaluacja i testowanie systemu rekomendacji 227

9.1. Biznes chce wzrostów, sprzedaży krzyżowej, sprzedaży droższych towarów i konwersji 228

9.2. Dlaczego ewaluacja jest ważna? 229

9.3. Jak interpretować zachowanie użytkowników 230

9.4. Co należy mierzyć 230

Rozumienie mojego gustu: minimalizowanie błędów przewidywania 232 ■ Różnorodność 232 ■ Pokrycie 233 ■ Szczęśliwy zbieg okoliczności 236

9.5. Przed wdrożeniem systemu rekomendacji... 236

Zweryfikuj algorytm 236 ■ Testowanie regresyjne 237

9.6. Rodzaje ewaluacji 238

9.7. Ewaluacja offline 239

Co zrobić, kiedy algorytm nie przedstawia żadnych rekomendacji 240

9.8. Eksperymenty offline 240

Przygotowywanie danych do eksperymentów 246

9.9. Implementacja eksperymentu na witr ynie MovieGEEKs 253

Lista rzeczy do zrobienia 253

9.10. Ewaluacja zbioru testowego 257

Rozpoczynanie od predyktora bazowego 258 ■ Znajdowanie odpowiednich parametrów 260

9.11. Ewaluacja online 262

Eksperyment kontrolowany 262 ■ Testy A/B 262

9.12. Testowanie ciągłe z eksploatacją/eksploracją 264

Pętle informacji zwrotnych 265

10 Filtrowanie oparte na treści 267

10.1. Przykład opisowy 268

10.2. Filtrowanie oparte na treści 271

10.3. Analizator zawartości 272

Wychwytywanie cech dla profilu przedmiotu 272 ■ Dane kategoryczne z  małymi liczbami 275 ■ Przekształcanie roku na porównywalne cechy 275

10.4. Wydobywanie metadanych z opisów 276

Przygotowywanie opisów 276

10.5. Znajdowanie ważnych słów za pomocą TF-IDF 280

10.6. Modelowanie tematów przy użyciu LDA 282

Jakie gałki możesz pokręcić, aby dostosować LDA? 289

10.7. Znajdowanie podobnych treści 292

10.8. Tworzenie profilu użytkownika 293

Tworzenie profilu użytkownika za pomocą LDA 293 ■ Tworzenie profilu użytkownika za pomocą TF-IDF 293

10.9. Rekomendacje oparte na treści na witrynie MovieGEEKs 295

Pobieranie danych 295 ■ Uczenie modelu 298 ■ Tworzenie profili elementów 299 ■ Tworzenie profili użytkowników 299 ■ Pokazywanie rekomendacji 301

10.10. Ocena systemu rekomendacji opartego na treści 302

10.11. Zalety i wady filtrowania opartego na treści 304

11 Znajdowanie ukrytych gatunków za pomocą faktor yzacji macierzy 306

11.1. Czasami dobrze jest zredukować ilość danych 307

11.2. Przykład tego, co chcesz rozwiązać 309

11.3. Powiew algebry liniowej 312

Macierz 312 ■ Co to jest faktoryzacja? 315

11.4. Tworzenie faktoryzacji za pomocą SVD 316

Dodawanie nowego użytkownika metodą folding-in 322 ■ Jak tworzyć rekomendacje za pomocą SVD 324 ■ Predyktory bazowe 325 ■ Dynamika czasowa 327

11.5. Budowanie faktoryzacji za pomocą Funk SVD 328

Średnia kwadratowa błędu 328 ■ Metoda gradientu prostego 329 ■ Stochastyczne zejście wzdłuż gradientu 332 ■ Wreszcie zabieramy się za faktoryzację 333 ■ Dodawanie odchyleń 334 ■ Jak zacząć i kiedy przestać 335

11.6. Budowanie rekomendacji przy użyciu Funk SVD 340

11.7. Implementacja Funk SVD na witrynie MovieGEEKs 342

Co zrobić z odstającymi wartościami 348 ■ Aktualizowanie modelu 350 ■ Szybsza implementacja 350

11.8. Dane jawne kontra niejawne 350

11.9. Ewaluacja 350

11.10. Dźwignie do majstrowania dla Funk SVD 353

12 Branie tego co najlepsze ze wszystkich algorytmów: implementacja hybrydowych silników rekomendacji 355

12.1. Zagmatwany świat hybryd 357

12.2. Monolityczny 357

Mieszanie cech opartych na treści z danymi behawioralnymi, aby usprawnić system rekomendacji wspólnej filtracji 358

12.3. Mieszany hybrydowy system rekomendacji 359

12.4. Algorytmy złożone 360

Przełączany system rekomendacji 362 ■ Ważony system rekomendacji 363 ■ Regresja liniowa 364

12.5. Liniowe łączenie modeli ważone cechami (FWLS) 365

Meta-cechy: wagi jako funkcje 365 ■ Algorytm 367

12.6. Implementacja 375

13 Rangowanie i nauka rangowania 385

13.1. Nauka rangowania na przykładzie Foursquare 386

13.2. Rangowanie ze zmianą kolejności 391

13.3. Czym jest nauka rangowania ze zmianą kolejności? 392

Trzy typy algorytmów LTR 392

13.4. Bayesowskie rangowanie spersonalizowane (BPR) 394

Rangowanie z BPR 396 ■ Sztuczki matematyczne (magia zaawansowana) 398 ■ Algorytm BPR 401 ■ BPR z faktoryzacją macierzy 402

13.5. Implementacja BPR 402

Tworzenie rekomendacji 408

13.6. Ewaluacja 410

13.7. Dźwignie do majstrowania przy BPR 413

14 Przyszłość systemów rekomendacji 415

14.1. Ta książka w kilku zdaniach 416

14.2. Tematy do dalszej nauki 420

Dalsza lektura 420 ■ Algorytmy 421 ■ Kontekst 421 ■ Interakcje człowiek-komputer 421 ■ Wybór dobrej architektury 422

14.3. Jaka jest przyszłość systemów rekomendacji? 423

14.4. Końcowe przemyślenia 427

indeks 429

o tej książce

Czy ogarnia cię zazdrość, gdy Amazon rekomenduje swoje produkty lub gdy Netflix trafia z propozycją dla użytkownika w dziesiątkę? Oto twoja szansa, aby dowiedzieć się, jak dodać te umiejętności do swojego repertuaru. Przeczytanie tej książki pozwoli ci zrozumieć, czym są systemy rekomendacji i jak je stosować w praktyce. Aby system rekomendacji zadziałał, wiele rzeczy trzeba wykonać w zgodzie ze sobą. Musisz zrozumieć, jak zbierać dane od użytkowników i jak je interpretować, i potrzebujesz przybornika różnych algorytmów rekomendacji, dzięki czemu będziesz mógł wybrać najlepszy dla danego scenariusza.

Co najważniejsze, trzeba zrozumieć, jak ocenić, czy twój system rekomendacji działa poprawnie. Wszystko to i więcej jest ukryte w tej książce.

Kto powinien przeczytać tę książkę

Praktyczne systemy rekomendacji to książka przeznaczona przede wszystkim dla deweloperów zainteresowanych wdrażaniem rekomendacji. Książka prezentuje praktyczne podejście i stara się wyjaśnić wszystko w normalnym, codziennym języku. Będzie matematyka i statystyka, ale obu będą towarzyszyć rysunki i kod. Nowi analitycy danych (data scientists) również mogą skorzystać z tej książki jako wprowadzenia do algorytmów rekomendacji i infrastruktury potrzebnej do ich uruchomienia. Książka ta będzie również przydatna dla menedżerów, aby mieli ogląd na to, czym jest system rekomendacji i jak można go używać w praktyce.

Aby w pełni skorzystać z tej książki, trzeba być w stanie odczytać kod w językach programowania, takich jak Python lub Java, rozumieć zapytanie SQL i mieć podstawową wiedzę na temat matematyki wyższej i statystyki. Rysunki i listingi kodu, które wyjaśniają różne pojęcia, dadzą ci tylko tyle, ile jesteś w stanie się nauczyć.

xix

Organizacja książki

Książka jest podzielona na dwie części: jedna koncentruje się na infrastrukturze systemów rekomendacji, a druga na algorytmach.

W części 1 dowiesz się, jak zbierać dane i jak ich używać podczas dodawania systemu rekomendacji do swojej aplikacji:

¡ Rozdział 1 omawia rekomendacje i zarysowuje kluczowe elementy. Zawiera szeroką wiedzę na temat tego, czym jest system rekomendacji i jak on działa.

¡ Rozdział 2 dotyczy tego, jak rozumieć użytkowników i ich zachowania, oraz obejmuje sposoby zbierania danych od użytkowników.

¡ Rozdział 3 wprowadza do analityki internetowej i pokazuje, jak można zaimplementować pulpit nawigacyjny, gdzie można śledzić działanie swoich systemów rekomendacji.

¡ Rozdział 4 omawia, w jaki sposób dane behawioralne mogą zostać przekształcone w ratingi.

¡ Rozdział 5 analizuje niespersonalizowane rekomendacje.

¡ Rozdział 6 nakreśla problem nowych użytkowników i produktów oraz przedstawia przykładowe rozwiązania.

W części 2 przyjrzymy się algorytmom systemowym i sposobie korzystania z danych zbieranych przez system w celu obliczenia, co rekomendować użytkownikowi:

¡ Rozdział 7 omawia formuły obliczania podobieństwa między użytkownikami lub elementami zawartości, takimi jak filmy.

¡ Rozdział 8 wprowadza spersonalizowane rekomendacje przy użyciu wspólnej filtracji.

¡ Rozdział 9 prezentuje mierniki dla rekomendacji w trybie offline i przedstawia sposoby formułowania rekomendacji w trybie online.

¡ Rozdział 10 wprowadza filtrowanie oparte na zawartości, które znajduje podobieństwa w treści przy użyciu różnych typów algorytmów, takich jak ukryta alokacja Dirichleta (Latent Dirichlet Allocation) i TF-IDF.

¡ Rozdział 11 powraca do wspólnej filtracji, która została wprowadzona w rozdziale 8, ale jest teraz omawiana przy użyciu metod redukcji wymiaru.

¡ Rozdział 12 prezentuje sposób łączenia rodzajów systemów rekomendacji.

¡ Rozdział 13 wprowadza ranking algorytmów i metod uczenia się tworzenia rankingów rekomendacji.

¡ Rozdział 14 dopełnia książkę spojrzeniem w przyszłość, tematami do dalszej nauki, książkami pogłębiającymi zrozumienie tematu i przemyśleniami na temat algorytmów i kontekstu.

Praca jest przeznaczona do czytania od deski do deski, ponieważ wiele rzeczy odnosi się do wcześniejszych rozdziałów, ale można ją również zrozumieć, czytając tylko wybrane rozdziały.

10.8. Tworzenie profilu użytkownika

Jeśli lubisz Jamesa Bonda, to może również spodoba ci się... To jest prosty przykład, który nie wymaga żadnego profilu użytkownika. Z modelem LDA lub po prostu wektorami cech, o których była mowa wcześniej, znajdziesz wektor filmu o Jamesie Bondzie, a następnie zlokalizujesz filmy z podobnymi wektorami. Jeśli jednak oferujesz spersonalizowane rekomendacje, musisz utworzyć profil użytkownika obejmujący wszystkie filmy, które podobają się użytkownikowi. Spójrzmy, jak to zrobić za pomocą LDA, a potem TF-IDF.

10.8.1. Tworzenie profilu użytkownika za pomocą LDA

Podczas tworzenia funkcji spersonalizowanych rekomendacji należy przyjrzeć się pełnej liście elementów, które podobają się użytkownikowi, i zwrócić inne elementy, które użytkownik może również polubić. W prawdziwym życiu funkcja ta nie jest indywidualna – użytkownik może nie być jednoznacznie zdefiniowany przez skonsumowane elementy (nawet jeśli większość systemów rekomendacji prawdopodobnie odpowie w ten sam sposób). Ale nadal jest to o wiele bardziej spersonalizowane niż lista najlepszych elementów.

To, co można zrobić, to dokonać iteracji po każdym z elementów, które użytkownik lubi, i dla każdego znaleźć podobne elementy. Gdy pojawi się lista, uporządkuj ją według iloczynu podobieństwa i ocen użytkowników z oryginalnej listy skonsumowanych elementów. Bardziej formalnie, dla aktywnego użytkownika możesz wykonać następujące czynności:

¡ Pobierz wszystkie elementy (CI) skonsumowane przez aktywnego użytkownika.

¡ Dla każdego elementu I w CI:

–Znajdź podobne elementy za pomocą modelu LDA.

–Oblicz ocenę na podstawie podobieństwa i ocen aktywnych użytkowników.

¡ Poukładaj elementy według oceny.

¡ Poukładaj według relewancji (jeśli masz jakieś dane na ten temat).

Alternatywnym sposobem, opisanym przez Jobina Wilsona i in., jest utworzenie macierzy LDA użytkownika, a następnie znalezienie podobnych elementów 55. Interesujące również może być zobaczenie, jakby to działało. Ocena wygląda bardzo dobrze.

10.8.2. Tworzenie profilu użytkownika za pomocą TF-IDF

Przy użyciu opisanych wcześniej wektorów dotyczących tagów i faktów, można w inny sposób utworzyć profil użytkownika. Możesz agregować macierze elementów, które użytkownik lubi i odejmować elementy, których użytkownik nie lubi. Spójrz na wnikliwe informacje w tabeli 10.3.

55 Jobin Wilson i in., Improving Collaborative Filtering Based Recommenders Using Topic Modelling, Luty 2014. Streszczenie pod adresem https://arxiv.org/abs/1402.6238.

Tabela 10.3 Wektor reprezentujący kilka filmów

Występuje Ben Affleck Akcja Film przygodowy

BvS Valentine’s Day

Arki

a Te liczby są wymyślone.

Jeśli masz użytkownika (nie robisz tutaj wspólnej filtracji, więc wystarczy spojrzeć na jednego), który dał 5 gwiazdek Poszukiwaczom zaginionej arki (kto nie kocha tego filmu?) i 3 gwiazdki La La Land, możesz teraz utworzyć profil użytkownika, mnożąc oceny w wektorze filmu i dodając je, jak pokazano w tabeli 10.4.

Tabela 10.4. Mnożenie ocen użytkowników w wektorach filmów i dodawanie każdego elementu w celu utworzenia profilu użytkownika

Występuje Ben Affleck Akcja Film przygodowy

KomediaWybuchya

Poszukiwacze zaginionej Arki

La La Land

Profil użytkownika

a Te liczby są wymyślone.

Teraz można użyć tej macierzy, aby znaleźć podobną zawartość dla użytkownika. Prawdopodobnie należy znormalizować wartości tak, aby były w tej samej skali co filmy, a liczba wybuchów powinna być prawdopodobnie pomniejszona w filmie, który zawiera albo nie zawiera wybuchów. W takim przypadku profil użytkownika wygląda jak w tabeli 10.5.

Tabela 10.5. Mnożenie ocen użytkownika w wektorach filmów i dodawanie każdego elementu, aby utworzyć profil użytkownika

Profil użytkownika

Uważam, że ta procedura jest bardziej wiarygodna dla filmów. Dobrą rzeczą jest to, że można szukać filmów, które mają wszystkie aspekty tego, co podoba się użytkownikowi (jeśli oczywiście uchwycisz odpowiednie tagi i fakty), ale chociaż lubię czekoladę

Rekomendacje oparte na treści na witrynie MovieGEEKs

i lasagne, to nie oznacza, że lubię je razem. To samo można powiedzieć o wielu innych atrybutach, jakie można wymyślić zarówno dla żywności, jak i dla filmów. Można tego użyć, aby zobaczyć, czy użytkownik lubi komedie bardziej niż filmy akcji i przygodowe. W części analitycznej witryny MovieGEEKs przedstawiłem gust użytkownika, przeglądając filmy ocenione przez użytkowników i zsumowanie ocen dla każdego gatunku, jak pokazano na poniższym listingu. Kod można wyświetlić w pliku /analytics/views.py.

Listing 10.7. Wyodrębnianie gustu z ocen

for movie in movies: id = movie.movie_id

rating = ratings[id]

r = rating.rating

Obliczone dla każdego filmu, który użytkownik ocenia

Pobiera ocenę

sum_rating += r movie_dtos.append(MovieDto(id, movie.title, r)) for genre in movie.genres.all():

if genre.name in genres_ratings.keys(): genres_ratings[genre.name] += r - user_avg genres_count[genre.name] += 1

max_value = max(genres_ratings.values())

max_value = max(max_value, 1)

max_count = max(genres_count.values())

max_count = max(max_count, 1)

genres = [] for key, value in genres_ratings.items():

Iteruje po każdym gatunku filmu i buduje słownik z nazwami gatunków jako kluczami i sumą ocen jako wartościami

Upewnia się, że nie jest mniejsze niż jeden

Wyszukuje wartości maksymalne

Upewnia się, że nie jest poniżej jednego

Normalizuje wartości

genres.append((key, 'rating', value/max_value)) genres.append((key, 'count', genres_count[key]/max_count))

Wyszukuje wartości maksymalne

Ten kod jest używany do tworzenia wykresów, takich jak ten na rysunku 10.18 dla użytkownika 100 (http://localhost:8001/analytics/user/100/).

10.9. Rekomendacje oparte na treści na witrynie MovieGEEKs

Jak wspomniano kilka razy, będziemy przechodzić przez implementację i wykorzystamy budowanie modelu LDA opartego na treści. Najpierw musimy powiedzieć kilka słów na temat pobierania danych.

10.9.1. Pobieranie danych

Zbiór danych, z którego korzystasz, nie zawiera opisów filmów, więc znów jesteś na łasce www.themoviedb.org, aby pobrać dane. W katalogu głównym kodu towarzyszącego książce znajduje się skrypt o nazwie populate_sample_of_descriptions.py, który pobiera opis najnowszych filmów. Przykład tego, co można pobierać, pokazano na rysunku 10.19 56 .

56 Zobacz http://MNG.bz/1UXq.

1 Co to jest system rekomendacji?

Jeśli chodzi o zrozumienie, czym jest system rekomendacji, to jest to istna dżungla, zatem zacznijmy tę książkę od spojrzenia na to, jakie problemy on rozwiązuje i jak jest używany. Oto, co będziemy omawiać:

¡ Zrozumienie zadania, jakie system rekomendacji próbuje emulować.

¡ Zdobywanie wiedzy, czym są niespersonalizowane i spersonalizowane rekomendacje.

¡ Opracowanie taksonomii opisywania systemów rekomendacji.

¡ Przedstawienie przykładowej strony MovieGEEKs.

Weź filiżankę kawy i koc, usiądź wygodnie i ruszajmy z wprowadzeniem do systemów rekomendacji. Zaczniemy łagodnie, najpierw patrząc na rzeczywiste przykłady, zanim przejdziemy do zawiłości obliczeniowych systemów rekomendacji w następnych rozdziałach. Możesz odczuwać pokusę, aby to pominąć i skoczyć do przodu, ale nie rób tego. Potrzebujesz podstaw, aby zrozumieć, jak powinien wyglądać wynik twoich starań w tworzeniu systemu rekomendacji.

rozdział 1 Co to jest system rekomendacji?

1.1. Rekomendacje z życia wzięte

Mieszkałem przez lata we Włoszech, w Rzymie. Rzym jest pięknym miejscem z wieloma bazarami z żywnością – nie tymi najważniejszymi, umieszczonymi w przewodnikach, pełnymi podróbek torebek Gucci (tak, torebki Gucci na bazarach z żywnością) – ale tymi, które są poza trasami autokarów, gdzie miejscowi robią zakupy i gdzie rolnicy sprzedają swoje produkty.

W każdą sobotę chodziliśmy odwiedzić sprzedawcę o imieniu Marino. Byliśmy dobrymi klientami, prawdziwymi smakoszami, więc wiedział, że jeśli poleci nam dobre rzeczy, będziemy je kupować – nawet jeśli mieliśmy w planie kupić tylko to, co było na naszej liście. Sezon arbuzowy był cudowny, wiele rodzajów pomidorów oferowało cały wachlarz różnych smaków i nigdy nie zapomnę smaku świeżej mozzarelli. Czasami Marino odradzał nam też zakup czegoś, jeśli nie było najwyższej jakości, a my ufaliśmy, że dobrze nam doradzi. To jest przykład rekomendacji. Marino polecał nam te same rzeczy wielokrotnie, a to działa w przypadku jedzenia, ale niekoniecznie w przypadku większości innych rodzajów produktów, takich jak książki, filmy lub muzyka.

Kiedy byłem młodszy, w czasach zanim Spotify i inne usługi strumieniowe przejęły rynek muzyczny, lubiłem kupować płyty CD. Szedłem do sklepu muzycznego, nastawionego głównie na DJ-ów, chodziłem wokół i zbierałem stos płyt, a potem znajdowałem miejsce przy ladzie z parą słuchawek i rozpoczynałem słuchanie. Odbywałem długie rozmowy na temat płyt z człowiekiem za ladą. Sprawdzał, które płyty mi się podobały (a które mi się nie podobały) i na tej podstawie polecał inne. Doceniłem fakt, że zapamiętał moje preferencje wystarczająco dobrze między wizytami i nie polecał wielokrotnie tych samych tytułów. To również jest przykład rekomendacji.

Wracając do domu z pracy (teraz, kiedy jestem starszy), zawsze sprawdzam w skrzynce, czy nic do nas nie przyszło. Zazwyczaj skrzynka pocztowa jest pełna reklam z supermarketów, wymieniających rzeczy, które są w promocji. Zazwyczaj reklamy pokazują zdjęcia świeżych owoców na jednej stronie i proszku do zmywarki na następnej – wszystko, co supermarkety lubią polecać do kupienia, ponieważ według nich jest to dobra oferta. Nie są to rekomendacje, lecz reklamy.

Raz w tygodniu wśród poczty pojawia się lokalna gazeta. Gazeta pokazuje listę 10 najpopularniejszych filmów oglądanych w kinie w danym tygodniu. Jest to niespersonalizowana rekomendacja. W telewizji wiele uwagi poświęca się umieszczaniu reklam w odpowiednich treściach telewizyjnych. Są to ukierunkowane reklamy, ponieważ są oglądane przez osoby pewnego typu.

W lutym 2015 roku urzędnicy lotniska w Kopenhadze zapowiedzieli umieszczenie 600 monitorów na terenie lotniska, aby wyświetlać reklamy w oparciu o szacowany wiek i płeć widza, wraz z informacjami odnoszącymi się do miejsc docelowych przy pobliskich bramkach. Wiek i płeć były wywnioskowane przy użyciu aparatów fotograficznych i algorytmu. Komunikat prasowy o reklamie miał następujący opis: „Kobieta podróżująca do Brukseli chce zobaczyć na przykład ładne zegarki lub reklamę magazynu finansowego. Rodzina lecąca na wakacje może być bardziej zainteresowana reklamami

kremów z filtrem do opalania lub wynajmem samochodów”1. Są to odpowiednie lub wysoce ukierunkowane reklamy.

Ludzie zazwyczaj postrzegają reklamy w telewizji lub na lotnisku jako uciążliwość, ale w sieci granice tego, co uważamy za inwazyjne, przesuwają się. Przyczyn tego może być wiele, lecz to jest osobny temat.

Internet to nadal Dziki Zachód, i chociaż myślę, że reklama na lotnisku w Kopenhadze jest dość inwazyjna, uważam za równie irytujące, gdy widzę reklamy w Internecie, które są skierowane do grupy docelowej, której nie jestem częścią. Aby odpowiednio dostosować reklamy, strony internetowe muszą wiedzieć nieco o tym, kim jesteś.

W tym i późniejszych rozdziałach dowiesz się o rekomendacjach, jak zbierać informacje o adresatach rekomendacji, jak przechowywać dane i jak z nich korzystać. Rekomendacje możesz obliczać na różne sposoby i zobaczysz najczęściej używane techniki. System rekomendacji nie jest tylko fantazyjnym algorytmem. Chodzi również o zrozumienie danych i użytkowników. Analitycy danych od dawna dyskutują na temat tego, czy ważniejsze jest posiadanie bardzo dobrego algorytmu, czy większej liczby danych. Obie opcje mają swoje wady; super algorytmy wymagają super sprzętu i to w dużych ilościach. Więcej danych stwarza inne problemy, takie jak dostatecznie szybkie uzyskanie dostępu do nich. Czytając tę książkę, poznasz kompromisy i uzyskasz narzędzia do podejmowania lepszych decyzji.

Poprzednie przykłady mają na celu zilustrowanie, że reklamy i rekomendacje mogą wyglądać podobnie dla użytkownika. Za kulisami intencja treści jest inna; rekomendacja jest obliczana na podstawie tego, co lubi aktywny użytkownik, co inni lubili w przeszłości, i tego, o co często prosi odbiorca. Reklama jest serwowana dla korzyści nadawcy i zazwyczaj jest zrzucana na odbiorcę. Różnica między nimi może się rozmyć. W tej książce rekomendacją nazywam wszystko to, co zostało obliczone na podstawie danych.

1.1.1. Systemy rekomendacji pasują do Internetu

Systemy rekomendacji najlepiej funkcjonują w Internecie, ponieważ to w nim można nie tylko zwracać się do poszczególnych użytkowników, ale można również zbierać dane behawioralne. Spójrzmy na kilka przykładów.

Strona internetowa pokazująca 10 najczęściej sprzedawanych maszyn do produkcji pieczywa zapewnia niespersonalizowane rekomendacje. Jeśli strona internetowa do sprzedaży domów lub biletów koncertowych pokazuje rekomendacje na podstawie twoich danych demograficznych lub aktualnej lokalizacji, te rekomendacje są częściowo spersonalizowane. Spersonalizowane rekomendacje można znaleźć na Amazonie, gdzie zidentyfikowany klient widzi „Rekomendacje dla ciebie”. Idea spersonalizowanych rekomendacji wynika również z tego, że ludzi nie interesują tylko popularne przedmioty, ale także przedmioty, które nie są sprzedawane najczęściej, lub takie, które są w długim ogonie.

1 Aby uzyskać więcej informacji, zobacz http://mng.bz/ka6j.

5 Niespersonalizowane rekomendacje

W tym rozdziale znajdziesz rekomendacje, lecz nie są one spersonalizowane. Nie oznacza to, że ten rozdział jest mniej istotny.

¡ Dowiesz się, że korzystanie z niespersonalizowanych rekomendacji może również pokazywać interesujące treści.

¡ Zobaczysz przykłady, które pokazują, dlaczego twoja witryna powinna porządkować treści i dowiesz się, jak tworzyć wykresy, które pokazują użytkownikom, co jest popularne, i wyróżniają elementy interesujące dla innych użytkowników.

¡ Dowiesz się, jak obliczyć reguły skojarzenia, tworząc zbiory elementów na podstawie koszyka zakupów, a następnie, jak użyć tych reguł do tworzenia rekomendacji opartych na wartościach inicjujących.

¡ Zobaczysz, jak jest implementowany komponent systemu rekomendacji, który jest podstawowym komponentem przykładowej witryny MovieGEEKs i który dostarcza rekomendacji.

5 Niespersonalizowane rekomendacje

Niespersonalizowane rekomendacje są zwykle tym, od czego zaczyna większość witryn, ponieważ są łatwe i nie wymagają konkretnej wiedzy o użytkownikach. Niespersonalizowane rekomendacje są dobre, ponieważ zawsze można je pokazać, pomimo tego jak niewiele wiesz o użytkownikach. Ludzie mogą powiedzieć, że niespersonalizowane rekomendacje powinny być pokazywane tylko do momentu, w którym system dowie się czegoś o użytkowniku, aby pokazać bardziej spersonalizowane rekomendacje, ale zawsze pamiętaj, że ludzie są z natury zwierzętami stadnymi i większość będzie ciekawa, jakie elementy zawartości są najbardziej popularne – jeśli nie z innego powodu, to choćby po to, aby dowiedzieć się, czego nie lubić.

W tym rozdziale zajmujemy się listami najpopularniejszych przedmiotów oraz zasadami porządkowania i kojarzenia. Zaczniemy zabawę od spojrzenia na stare dobre listy hitów, których nikt nie lubi w tych czasach opartych na kontekście. Listy najpopularniejszych przedmiotów to proste rekomendacje oparte na statystykach, takich jak rzeczy najczęściej sprzedawane. Listy te mają związek z porządkowaniem danych, więc dalej będziemy omawiać tę kwestię. Przyjrzymy się implementacji list najpopularniejszych przedmiotów i omówimy zmiany kolejności filmów w witrynie MovieGEEKs. W drugiej części rozdziału przyjrzymy się, co ludzie umieszczają w koszyku i użyjemy tego, aby tworzyć rekomendacje, takie jak „osoby, które kupiły X, kupiły również Y” za pomocą tak zwanych zbiorów elementów lub zbiorów częstości. Rekomendacje, którym się przyjrzymy, będą takie same dla wszystkich użytkowników wchodzących w interakcje z systemem rekomendującym; dlatego są one nazywane rekomendacjami niespersonalizowanymi. Po czterech rozdziałach, które dotyczą głównie tego, jak zbierać dane o użytkownikach, może uważasz, że to trochę nieuczciwe, aby odsunąć na bok indywidualne jednostki i spojrzeć na dane jako całość. Pamiętaj jednak, że większość witryn ma wielu niezidentyfikowanych użytkowników, z którymi chcesz sobie radzić, ponieważ są oni przyszłymi klientami twojej witryny. A nawet wtedy, gdy znasz tożsamość swojego gościa, jest wysoce prawdopodobne, że nie masz wystarczającej ilości danych do obliczenia spersonalizowanych rekomendacji, a wtedy dobrze jest wypełnić braki niespersonalizowanymi rekomendacjami.

5.1. Co to są niespersonalizowane rekomendacje?

W rozdziale 1 omówiliśmy różnicę między reklamą a rekomendacją. Porozmawiajmy krótko o tym ponownie.

5.1.1. Co to jest reklama?

Oferta dnia od Manninga, pokazana na rysunku 5.1, jest reklamą. To, że jest reklamą, nie sprawia, że jest czymś złym. Reklama jest czymś, co sprzedawca publikuje, ponieważ chce, aby zawartość była wystawiana na widok użytkowników, a ludzie często są zainteresowani ofertami. Ale to jest coś, co jako właściciel witryny musisz robić ostrożnie, ponieważ złe reklamy będą odstraszać odwiedzających. (Miałem taką myśl, że Internet jest pełen takich reklam, ale po spędzeniu 30 minut na szukaniu jednej, poddałem się. Znalazłem skargę od faceta, który czuł się spamowany po zarejestrowaniu się na paranormalnym serwisie randkowym – zaskoczyło go to, bo myślał, że to poważna strona).

Co to są niespersonalizowane rekomendacje?

Definiuję złą reklamę jako coś, co nie pozwala użytkownikowi zająć się jego sprawami, jak wyskakujące okienko, którego nie można zamknąć, zanim film się nie odtworzy, lub przekierowujące użytkownika do niezamierzonych stron.

Oferta dnia jest reklamą. Dobrą, ale nadal reklamą.

Rysunek 5.1. Oferta dnia Manning Publications (manning.com)

Często za pomocą reklam sprzedawca stara się przekonać użytkownika, że dane przedmioty są dobrą lub tanią ofertą (nawet jeśli nie są), podczas gdy rekomendacje znajdują użytkownikom to, czego chcą. Można powiedzieć, że znalezienie czegoś taniego jest dokładnie tym, czego użytkownik chce. W rzeczywistości wiele stron stworzyło biznes z polecania ofert tanich rzeczy. Ja osobiście zaczynam czegoś szukać, gdy odkryję, że tego potrzebuję, podczas gdy strony z kuponami, jak cupon. com (rys. 5.2) to raczej sytuacja, w której ludzie szukają czegoś, czego potrzebują, ale o tym nie wiedzą.

Cupon.com używa niespersonalizowanych rekomendacji, aby polecić więcej ofert. W górnej części znajduje się lista popularnych kategorii i marek. Podczas gdy środkowa część ekranu zawiera listy kuponów pozwalających zaoszczędzić pieniądze, trudno powiedzieć, jak to jest obliczane. Cupon.com jest jednym z wielu wyborów i myślę, że to świetny sposób dla sprzedawców, aby kontaktować się z ludźmi, którzy są zadowoleni, gdy mogą kupować rzeczy taniej – w dużej ilości, wydając w ten sposób więcej.

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.