Как проверить набор тестов на обученной модели SVD? - PullRequest
1 голос
/ 23 мая 2019

Я следую этому руководству по матричной факторизации для рекомендаций фильмов в Python, используя Разложение по сингулярным значениям (SVD) : здесь

Используя SVD , набор данных аппроксимируется с использованием SVD на три компонента:

M ≈ U ⋅ S ⋅ Vt

  • Итак, вы идете слева (M) к трем компонентам и обратно,
  • Теперь вы можете использовать прибл.
  • М в качестве матрицы рекомендаций.

Теперь я хочу использовать наборы проверки поезда / теста в этой матрице, потому что вам нужно найти оптимальное приближение k (число) для M.

Как применить отдельный набор тестов к обученной модели, чтобы получить прогнозы для невидимого набора тестов? Что такое математика / алгоритм для этого? Спасибо

1 Ответ

2 голосов
/ 23 мая 2019

Стандартная процедура для подгонки любой модели машинного обучения выглядит следующим образом:

  • вы разбиваете свой набор данных случайным образом на три части: обучающий набор (60% данных), проверочный набор (20%данных), тестовый набор (20%).
  • Вы используете только данные своего поезда для обучения любой модели
  • Вы используете свой проверочный набор для выбора гиперпараметров и выбора лучших среди различных моделей
  • Выоцените вашу модель на тестовом наборе, чтобы получить представление о том, как она будет работать с новыми невидимыми данными

Так что в вашем случае вы должны выполнить следующие шаги:

  • разделитьнабор данных для этих 3 частей (если вы используете sklearn, вы можете использовать train_test_split, как в здесь
  • , вы запускаете SVD с различными значениями k и оцениваете производительность этих приближений нанабор проверки и выберите k с наименьшим значением RMSE (как указано в руководстве)
  • применить выбранную модель к тестовому набору, чтобы увидеть, как она может работать с невидимыми данными

Если ваш набор данных небольшой, вместо разделения на 3 набора данных, вы можете просто разделить его для обучения, тестирования и использования перекрестной проверки для точной настройки k.

...