Co się stanie, gdy zastosujesz SVD do problemu filtrowania grupowego? Jaka jest różnica między nimi?

21

W filtrowaniu grupowym mamy wartości, które nie są wypełnione. Załóżmy, że użytkownik nie obejrzał filmu, a następnie musimy wstawić „na”.

Jeśli mam wziąć SVD tej macierzy, muszę tam wstawić pewną liczbę - powiedz 0. Teraz, jeśli podzielę macierz na czynniki pierwsze, mam metodę znalezienia podobnych użytkowników (poprzez ustalenie, którzy użytkownicy są bliżej siebie zredukowana przestrzeń wymiarowa). Ale sama przewidywana preferencja - dla użytkownika elementu będzie wynosić zero. (bo tak wpisaliśmy w nieznane kolumny).

Utknąłem więc z problemem wspólnego filtrowania vs SVD. Wydają się być prawie takie same, ale niezupełnie.

Jaka jest różnica między nimi i co się stanie, gdy zastosuję SVD do problemu z filtrowaniem grupowym? Tak zrobiłem, a wyniki wydają się do przyjęcia pod względem znalezienia pobliskich użytkowników, co jest świetne, ale jak?

Jason
źródło

Odpowiedzi:

25

Ok, kiedy mówisz SVD, prawdopodobnie mówisz o obciętym SVD (gdzie zachowujesz tylko największych pojedynczych wartości). Istnieją dwa różne sposoby patrzenia na obcięty SVD matrycy. Jednym z nich jest standardowa definicja:k

Najpierw wykonaj SVD: , gdzie i są macierzami obrotu, a ma wartości osobliwe wzdłuż przekątnej. Następnie wybierasz najwyższe pojedynczych wartości, zerujesz resztę i hackujesz nietrafne wiersze i kolumny, aby uzyskać przybliżone -przybliżenie do oryginału: UVΣkkX ˜ X = ˜ U n × k k × k ˜ Σ ˜ V T k × mXn×m=Un×nΣn×mV.T.m×mUV.ΣkkXX~=U~n×kΣ~k×kV.~T.k×m

To wszystko jest w porządku i eleganckie (i łatwe do zaimplementowania w języku R lub matlab), ale nie ma sensu, gdy mówimy o macierzach z brakującymi wartościami. Istnieje jednak interesująca własność -truncated SVD - To najlepszy -rank przybliżenie do oryginału! To jest:kkk

X~=zarsolmjanb:rzank(b)=kja,jot(Xjajot-bjajot)2)

Ta właściwość wydaje się łatwa do uogólnienia na przypadek braku wartości. Zasadniczo poszukujesz macierzy -rank, która minimalizuje średni błąd kwadratu względem znanych wpisów oryginalnej macierzy. Oznacza to, że trenując system, ignorujesz wszystkie brakujące wartości. (Aby uzyskać wskazówki, jak można rzeczywiście go o znalezienie -rank przybliżenie, tutajpewne miejsca, patrzeć).kk

Następnie, gdy znajdziesz odpowiednie „przybliżenie” -przybliżenia oryginału, użyj go do uzupełnienia brakujących wartości. Oznacza to, że jeśli brakuje , to wpisz . Tada! Skończyłeś.kXjajotX~jajot

Kikut Joe Pete
źródło
3

Wygląda na to, że istnieje wiele sposobów radzenia sobie z brakującymi wartościami. Poniższy artykuł z recenzją w sekcji 1.3 może być dobrym punktem wyjścia.

d_ijk_stra
źródło
0

Potrzebuję więcej reputacji, aby skomentować odpowiedź Stumpy Joe Pete, dlatego zamieszczam to jako odpowiedź.

Głupie dzięki za odpowiedź, choć uważam, że wymaga ona trochę wyjaśnienia. W szczególności mam na myśli to zdanie:

Zasadniczo szukasz macierzy rangi K, która minimalizuje średni błąd kwadratu względem znanych wpisów oryginalnej macierzy.

Po pierwsze - czy najwyższa ranga nie zawsze to minimalizuje, czy faktycznie zrekonstruuje oryginalną macierz X? Po drugie - dlaczego miałbyś brać tylko znane wpisy. Intuicyjnie ma to sens, ale w rzeczywistości procedura obejmuje również puste miejsca, które zostały zastąpione pewnymi rozsądnymi liczbami.

Moje podejście polegałoby na przeprowadzeniu czegoś w rodzaju weryfikacji krzyżowej:

  1. Wypełnij puste miejsca zerami lub środkami lub inną rozsądną liczbą.
  2. Zamień jeden z n znanych elementów na 0 lub rozsądną liczbę
  3. Przeprowadzić rekonstrukcję SVD rangi k
  4. Sprawdź wartość znanego zrekonstruowanego elementu.
  5. powtórz dla wszystkich możliwych znanych elementów i oblicz MSE
  6. powtórz dla wszystkich możliwych k i wybierz ten o najniższym MSE.
Karol Przybylak
źródło
1. Chcesz wybrać niską wartość k, aby uniknąć przeregulowania (znacznie niższą niż wymiary X). Jest to w zasadzie z tego samego powodu, dla którego regresja liniowa jest lepszym wyborem niż kwintyka do dopasowania zestawu danych o 6 punktach. 2. Nie wiesz, jakie powinny być nieznane wpisy, więc nie możesz zmierzyć „elementarnego MSE” w ich obrębie. Moja procedura wypełnia brakujące wartości liczbami, które zostały wyprowadzone przez zminimalizowanie błędu w stosunku do znanych wartości (i ograniczenie, że macierz musi być niskiej rangi).
Stumpy Joe Pete,