Dies ist mein erster Versuch, maschinell zu lernen. Ich schreibe eine sehr einfache Empfehlungs-Engine, die den Yelp-Datensatz verwendet. Es ist in Python geschrieben mit Pandas und numpy Bibliotheken für (Datenverarbeitung). Ich habe die Daten zuerst auf Restaurants (Millionen) reduziert, dann auf Restaurants in Vegas (Tausende), dann nur Restaurants mit 3,5 Sternen oder höher mit über 50 Bewertungen (Hunderte). Auch habe ich die Nutzer auf diejenigen beschränkt, die mindestens 20% der Restaurants überprüft haben. Endlich bin ich in einer Bewertungsmatrix angekommen, die 100 Benutzer bei 1800 Restaurants hat.Wie hilft Matrix-Zerlegung, eine spärliche Nutzen-/Bewertungsmatrix für neue Benutzer auszufüllen?
Allerdings finde ich es immer noch zu spärlich, (relativ) nützliche Empfehlungen zu geben. Das Ziel besteht darin, auf kollaborationsbasierter Filterung basierend auf dem Item-Item die Vektorentfernung unter Verwendung der Kosinusähnlichkeit zu verwenden.
Ich habe gelesen über den Umgang mit dünn besetzten Matrizen und der Konsens scheint zu Matrixfaktorisierung zu verwenden. Es scheint jedoch, dass die meisten dieser Lesungen aktuelle Benutzer betreffen und die Matrixfaktorisierung als den Algorithmus verwenden, der die Empfehlung für gegenwärtige Benutzer antreibt, während das Problem der Seltenheit als ein Nebenprodukt gelöst wird. Stimmt mein Verständnis hier? Nach was ich suche, ist eine Methode, die das sparsity Problem zuerst löst und dann Cosinus-Vektorabstände verwendet, um die Empfehlung zu führen.
Wenn Zersetzung ist in der Tat der Weg zu gehen: Was sklearn.decomposition
Methode sollte ich verwenden, d. H. PCA, SVD, NMF?
[[ 3, 0, 0, ..., 0, 0, 0],
[ 0, 0, 0, ..., 0, 0, 0],
[ 0, 0, 0, ..., 0, 4, 3],
...
[ 1, 0, 0, ..., 0, 0, 0],
[ 0, 0, 0, ..., 0, 0, 2],
[ 0, 0, 5, ..., 0, 1, 3]]
(100 Benutzer X 1800 Restaurants)