ich seit den letzten Tagen um mit Recommendation Engines durcheinander und kam in diesem sehr schönen Tutorial, das die Verwendung von Wechsel Least Squares in Collaborative Filter zeigt: http://bugra.github.io/work/notes/2014-04-19/alternating-least-squares-method-for-collaborative-filtering/Verständnis Abwechselnd Least Squares für Collaborative Filtering
ich geschaffen Folgen Sie den Anweisungen bis zum allerletzten Schritt. Dies ist der Teil, in dem der Autor den Code zum Drucken von Empfehlungen schreibt. Das Code-Snippet lautet wie folgt:
def print_recommendations(W=W, Q=Q, Q_hat=Q_hat, movie_titles=movie_titles):
Q_hat -= np.min(Q_hat)
Q_hat *= float(5)/np.max(Q_hat)
movie_ids = np.argmax(Q_hat - 5 * W, axis=1)
for jj, movie_id in zip(range(m), movie_ids):
print('User {} liked {}\n'.format(jj + 1, ', '.join([movie_titles[ii] for ii, qq in enumerate(Q[jj]) if qq > 3])))
print('\n User {} recommended movie is {} - with predicted rating: {}'.format(jj + 1, movie_titles[movie_id], Q_hat[jj, movie_id]))
print('\n' + 100 * '-' + '\n')
In diesem Codeausschnitt ist W die Gewichtungsmatrix. Die Q-Matrix wird verwendet, um den Vertrauensbegriff, den die Bewertungen messen, zu formalisieren. Deshalb:
Q = 1 if user u rated item i
Q= 0 if user u did not rate item i
Q_hat die neue Matrix nach der Umsetzung des ALS-Algorithmus erhalten wird, nach Anzahl der Iterationen angegeben.
Ich kann nicht verstehen, warum der Autor diese beiden Schritte insbesondere implementiert:
Q_hat -= np.min(Q_hat)
Q_hat *= float(5)/np.max(Q_hat)
jemand mich leiten kann und mir helfen, dies zu verstehen? Ich würde das wirklich zu schätzen wissen.
Dank
Edit: Hier ist ein Kern Link zur ursprünglichen Funktion: https://gist.github.com/arjun180/71124392b0b70f7b96a8826b59400b99
Vielen Dank an reichen! Bin dankbar. –