2016-04-06 3 views
1

Я работаю над внедрением системы рекомендаций посредством рекомендаций, основанных на неявной обратной связи. Поэтому я использую кортеж (пользователь, элемент, счет) для создания моей матрицы элементов пользователя.рекомендация показатели двигателя

я осуществить свою систему рекомендаций, используя это действительно хороший пример на Insight данных науки блоге: http://insightdatascience.com/blog/explicit_matrix_factorization.html

Однако, по сравнению с набором данных линз фильм, мой набор данных невероятно скудны. В этом примере заполняется 6,3% набора данных, а для меня это число составляет 0,30%. Итак, в моем наборе данных есть много неизвестных значений. У меня около 2900 пользователей и 5000 предметов.

Я тренирую свою модель, и тренинг MSE отказывается спускаться. Я попытался оптимизировать параметры, но безрезультатно. У меня были следующие вопросы:

(1) Является ли MSE надежной метрикой? Я прошел через эту дискуссию: https://www.quora.com/How-do-you-measure-and-evaluate-the-quality-of-recommendation-engines

Тем не менее, тестирование A/B для меня не является вариантом. Мой опыт в моделях машинного обучения всегда учил меня, что если тренировка MSE застряла в какой-то момент, то это довольно плохо (по целому ряду причин)

Итак, я не правильно оцениваю?

(2) Проблема с холодным запуском? Я инициализирую векторы и объекты так же, как это:

self.user_vectors = np.random.normal(size=(self.num_users,self.num_factors)) 

self.item_vectors = np.random.normal(size=(self.num_items,self.num_factors)) 

Что-то я могу здесь изменить?

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

Любые мысли или направления были бы очень оценены!

Благодаря

+0

Что означает ** подсчет ** в вашем наборе данных? Сколько раз пользователь просматривал фильм? –

+0

Да. Count ссылается на количество просмотров пользователем видео. –

ответ

1

(1) MovieLens Dataset представляет собой академический набор данных, и есть четкий выбор, как они порождают набор данных, что делает его очень отличается от реальной жизни рекомендаций системного набора данных. На наборе данных README авторов указать:

Each user has rated at least 20 movies. 

Так их низкая RMSE применима только для пользователей с этой характеристикой.

Я хотел бы предложить два показатель:

  1. Разделить данные в поезде и тестовый набор и сравнить свои предсказания с тестовым набором, увидеть, если вы предсказываете (пользователь, кино) пар, которые находятся в вашем тесте задавать;
  2. Сравните с базой, такой как среднее значение для пользователя и фильма.

(2) Я думаю, что вы немного запутались о проблеме холодного старта: Это проблема, которая затрагивает Рекомендательные системы (РС), которые не имеют данных о пользователе или кино. Например, если никто не видел фильм, вы не можете сделать надежные прогнозы о том, кому это понравится.Точно так же для пользователей, для тех, кто не смотрел ни одного фильма, вы не можете предсказать, какие фильмы им понравятся.

Одним из способов преодоления проблемы является создание меры сходства между фильмами и между пользователями в зависимости от их характеристик (пол, возраст, страна для пользователей и жанра, дата и язык для фильмов). С этим вы можете делать рекомендации на основе самых похожих пользователей и фильмов. Эти типы RS считаются гибридными.

Предлагаемые документы:

+0

Спасибо за помощь! Мне было интересно, как мне идти на тренировочный и тестовый раскол. Как правило, я использую раскол 80/20, а моя модель (случайные леса, логистическая регрессия и т. Д.) Изучает функции набора тренингов и предсказывает на тестовом наборе. –

+0

Однако это немного другое, потому что мой алгоритм оптимизирует пользовательский и вектор элементов. Их можно использовать только на матрице того же размера. –

+0

Должен ли я делать что-то вроде выбора «х» числа ненулевых отсчетов и создания тестового набора того же размера. Что-то похожее на то, что было сделано здесь: https://gist.github.com/EthanRosenthal/68362b45ad6ca586199d –

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