1

я возиться с рекомендательными двигателей в течение последних нескольких дней, и наткнулся на это очень хороший учебник, который демонстрирует использование Переменный метод наименьших квадратов в Collaborative фильтры: http://bugra.github.io/work/notes/2014-04-19/alternating-least-squares-method-for-collaborative-filtering/Понимание Переменный метод наименьших квадратов для совместной фильтрации

мне удалось следуйте инструкциям до самого последнего шага. Это часть, в которой автор пишет код для печати рекомендаций. Этот фрагмент кода выглядит следующим образом: -

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') 

В этом фрагменте W - весовая матрица. Q-матрица используется для формализации понятия уверенности, которое оценивают оценки. Поэтому:

Q = 1 if user u rated item i 

Q= 0 if user u did not rate item i 

Q_hat - новая матрица, полученная после реализации алгоритма ALS после указанного количества итераций.

Я не могу понять, почему автор реализует эти два шага, в частности:

Q_hat -= np.min(Q_hat) 
Q_hat *= float(5)/np.max(Q_hat) 

Может кто-нибудь наставит меня и помочь мне понять это? Я был бы очень признателен.

Благодаря

Edit: Вот ссылка сути к исходной функции: https://gist.github.com/arjun180/71124392b0b70f7b96a8826b59400b99

ответ

1

Это нормализация прогнозируемых оценок.

Q_hat -= np.min(Q_hat) 

Здесь автор вычитает наименьшую в прогнозируемой матрице оценок все предсказанные значения.

Это гарантирует, что все предсказанные рейтинги начинаются с 0.

Q_hat *= float(5)/np.max(Q_hat) 

Здесь автор нормализуется предсказанные рейтинги в диапазоне от 0 до 5.

+0

Спасибо большое! Ценить это. –

 Смежные вопросы

  • Нет связанных вопросов^_^