Интуиция:
Я создал Автоэнкодер , хотя он предназначен для Матрицы рейтинга для пользователей против фильмов. Я пытаюсь воссоздать вывод по прогнозированию с использованием совместной фильтрации (CF).
Набор данных:
Набор данных, приведенный ниже, показывает, как вводится вход. Я преобразовал его в матрицу Pivot здесь:
Мы назовем это A_set
MovieId 1 2 3 4 5 6 7 ...
UserId
0 5.0 0.0 0.0 0.0 2.0 0.0 0.0 ...
1 0.0 0.0 0.0 2.0 2.0 0.0 0.0 ...
2 5.0 0.0 1.0 0.0 0.0 0.0 0.0 ...
3 1.0 0.0 0.0 0.0 3.0 0.0 3.0 ...
Создается также транспонирование, где MovieIds
в строках и UserIds
в столбцах. Мы назовем это B_set
.
Анкета:
По этому поводу у меня есть следующие запросы:
- Какой набор (A / B) можно назвать Коллаборативной фильтрацией (CF) при подаче входных данных на авто-кодировщик (выполненный с использованием Keras) в нейронной сети?
- Я пытаюсь разграничить, какая часть является CF на основе пользователя и CF на основе элемента
- Теперь я внутренне знаю, как математически работает приведенная ниже формула. Я просто не уверен, работает ли он так же в коде Keras / TF. Какой из них (набор A / B) я должен считать своим CF?
Y = Тета (Транспонирование). Вход (X) + C
- Тета, являющаяся матрицей весов, мне нужно посмотреть, транспонирует ли код матрицу Тета, а затем решает уравнение или она уже транспонирована, и вводимые мной данные должны быть
B_set
, чтобы сделать справедливость до CF.
Я попытался дать A_set
в качестве входных данных, а затем также проверил веса после того, как вход был обучен / смоделирован. Проверьте фрагмент:
w1 = model.get_weights()
train_set.shape # (5436, 3706)
w1[0].shape # (3706, 529)
w1[0].T.shape # (529, 3706)
w1[1].T.shape # (529,)
w1[2].T.shape # (264, 529)
w1[3].T.shape # (264,)
w1[4].T.shape # (132, 264)
w1[5].T.shape # (132,)
w1[6].T.shape # (264, 132)
w1[7].T.shape # (264,)
w1[8].T.shape # (529, 264)
w1[9].T.shape # (529,)
w1[10].T.shape # (3706, 529)
w1[11].T.shape # (3706,)
Теперь имеет смысл, что это, вероятно, где-то Транспонирование где-то внутри Исходного кода Keras (пожалуйста, укажите, где!), Иначе умножение Матрицы было бы невозможно. И все же остается открытым вопрос о том, какой (набор A / B) можно назвать CF?