W praktyce, co ludzie robią z brakującymi wartościami z matrycy rekomendacji, co jest celem wykonywania obliczeń? Domyślam się, że po przeczytaniu posta na blogu Simona używa TYLKO brakujących terminów do budowy modelu.
Zgadza się - to jest cel jego i twojego modelu, aby przewidzieć brakujące warunki, prawda? Jest to kluczowa kwestia, o której wielu zapomina. Myślą, że mogą po prostu „założyć”, że przypisują stałą do brakujących danych bez opieki na świecie, a wszystko zacznie się magicznie wystarczająco dobrze z SVD. Kosz na śmieci, śmieci na śmieci: to prawda, i lepiej to obserwuj. Lepiej nie podawaj śmieciowych danych do modelu, jeśli chcesz uzyskać coś użytecznego.
Z pewnością NIE jest „najlepiej wnioskować o brakujących wartościach” w większości rzadkich zestawów danych, a następnie uruchamiać na nich SVD z pewną nadzieją na przypisanie ci wartości (które już przypisałeś przed uruchomieniem SVD, prawda?). Jak myślisz, model to magia? Nie ma magii ani technologii do przezwyciężenia większości śmieci. Nie możesz kłamać modelowi, że dane są prawdziwymi danymi, gdy w ogóle nie są prawdziwe, ale tak naprawdę tylko śmieci, które po prostu wymyśliłeś z powietrza.
SVD robi inne przydatne rzeczy, więc z pewnością nie twierdzę, że SVD jest co najmniej bezwartościowe. Śmiało, używaj SVD tylko dla kompletnych zestawów danych, być może, które inteligentnie przypisałeś brakującym wartościom już przy użyciu modelu uczenia maszynowego, zwracając szczególną uwagę na błąd odchylenia i błąd wariancji podczas jego opracowywania.
Uczenie maszynowe jest drogą. Jeśli więc nadal chcesz wiedzieć, jak przypisywać wartości za pomocą projektowania faktoryzacji macierzy, z pewnością istnieją dobre sposoby, aby to zrobić przy użyciu uczenia maszynowego, a co ważniejsze, nie przekazują żadnych niepotrzebnych danych do modelu z którego bezcelowo próbują się uczyć.
Dokładnie taki model faktoryzacji macierzy uczenia maszynowego jest dość dobrze prezentowany przez instruktorów kursu online Stanford Mining Massive Data Sets, w module 5. Pokazują matematykę i wyjaśniają model. Nie kodują tego jednak dla ciebie.
Jest w porządku, ponieważ możesz samodzielnie go kodować, jeśli rozumiesz podstawowe uczenie maszynowe. Czy wiesz, czym jest funkcja straty i funkcja kosztów? Regularyzacja? Spadek gradientu? Czy wszystko jest w porządku z pomnożeniem i dodaniem macierzy? Błąd odchylenia i błąd wariancji? Jeśli tak, to jesteś dobry. Jeśli nie, to powinieneś rozważyć kurs online Andrew Ng Machine Learning w Coursera, który jest jednym z wielu dobrych miejsc startowych. Następnie przejdź także na kurs online Mining Massive Data Sets, który mówi dokładnie o rozkładzie macierzy i uczeniu maszynowym do tworzenia modeli rekomendujących.
Wystarczy powiedzieć, że możesz całkowicie zaprojektować i zakodować własny model faktoryzacji, który bardzo dobrze radzi sobie z brakującymi danymi, tak jak zrobił to Simon Funk, i możesz to zrobić od zera, ale wcale nie jest tak trudno, jakby wrócił w jego czasach, ponieważ teraz możesz używać narzędzia takiego jak TensorFlow lub Microsoft CNTK, które wiele dla ciebie robią. Zdefiniuj funkcję straty i funkcję kosztów, wybierz optymalizator, podziel zestaw danych na szkolenie, twórz, testuj na podstawie danych, które są faktycznie dostępne (dane oznaczone) i pozwól mu działać. Poważnie, to działa. Nie jest to łatwe debugowanie TF i błędów budowania wykresów, ale w końcu może działać świetnie i zajmuje mniej niż jedną stronę kodu.
W szczególności jednym ze sposobów, aby nie podawać fałszywych danych do modelu uczenia maszynowego faktoryzacji macierzy, jest pominięcie elementów macierzy brakujących danych w funkcjach strat i kosztów .