Оценка Wide and Deep Recommender

В этой статье описывается, как использовать компонент Score Wide and Deep Recommendationer в конструкторе Машинное обучение Azure, чтобы создать прогнозы на основе обученной модели рекомендаций на основе широкой и глубокой подготовки из Google.

Рекомендатель Wide и Deep может генерировать два разных типа прогнозов:

При создании прогнозов последнего типа вы можете работать как в производственном режиме, так и в оценочном режиме.

  • Рабочий режим учитывает всех пользователей или элементы и обычно используется в веб-службе. Вы можете создавать оценки для новых пользователей, а не только для тех, кого видели во время обучения.

  • Режим оценки работает с ограниченным набором пользователей или элементов, которые могут быть оценены, и обычно используется во время экспериментов.

Более подробную информацию о рекомендациях Wide and Deep и лежащей в их основе теории можно найти в соответствующем исследовательском документе: Wide & Deep Learning for Recommender Systems.

Как настроить Оценку Wide и Deep Recommender

Этот компонент поддерживает разные типы рекомендаций, каждый с разными требованиями. Щелкните ссылку, соответствующую типу имеющихся у вас данных и типу рекомендации, которую вы хотите создать.

Прогнозировать рейтинги

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

  1. Добавьте в свой эксперимент обученную модель рекомендаций Wide & Deep и подключите ее к модели рекомендаций Trained Wide и Deep. Вы должны создать модель с помощью Train Wide и Deep Recommender.

  2. Тип рекомендательного прогноза: выберите Прогноз рейтинга. Дополнительные параметры не требуются.

  3. Добавьте данные, для которых вы хотите сделать прогнозы, и подключите их к набору данных для оценки.

    Для прогнозирования рейтингов входной набор данных должен содержать пары пользователь-элемент.

    Набор данных может содержать необязательный третий столбец оценок для пары пользователь-элемент в первом и втором столбцах, но третий столбец будет проигнорирован во время прогнозирования.

  4. (Необязательно). Если у вас есть набор данных о пользовательских функциях, подключите его к Пользовательским функциям.

    Набор данных пользовательских функций должен содержать идентификатор пользователя в первом столбце. Остальные столбцы должны содержать значения, характеризующие пользователей, такие как их пол, предпочтения, местоположение и т. д.

    Функции пользователей, которые оценили элементы в наборе обучающих данных, игнорируются Оценкой Wide и Deep Recommender, поскольку они уже были изучены во время обучения. Поэтому заранее отфильтруйте свой набор данных, чтобы включить в него только пользователей с холодным запуском или пользователей, которые не оценили какие-либо элементы.

    Предупреждение

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

  5. Если у вас есть набор данных характеристик элемента, вы можете связать его с характеристиками элемента.

    Набор данных характеристик элемента должен содержать идентификатор элемента в первом столбце. Остальные столбцы должны содержать значения, характеризующие элементы.

    Функции оцененных элементов в наборе обучающих данных игнорируются Оценкой Wide и Deep Recommender, поскольку они уже были изучены во время обучения. Таким образом, ограничьте набор данных оценки для холодного запуска элементов или элементов, которые не были оценены пользователями.

    Предупреждение

    Если модель была обучена без использования функций элемента, вы не сможете внедрить функции элементов во время оценки.

  6. Запустите эксперимент.

Результаты прогнозов рейтингов

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

Кроме того, при подсчете очков вносятся следующие изменения.

  • Для числового столбца характеристик пользователя или элемента отсутствующие значения автоматически заменяются средним значением из не пропущенных значений обучающего набора. Для категориального признака отсутствующие значения заменяются тем же категориальным значением, отличным от любых возможных значений этого признака.
  • К значениям признаков не применяется перевод, чтобы сохранить их разреженность.

Рекомендовать элементы

Чтобы рекомендовать элементы для пользователей, вы предоставляете список пользователей и элементов в качестве входных данных. На основе этих данных модель использует свои знания о существующих элементах и пользователях, чтобы создать список элементов, которые могут понравиться каждому пользователю. Вы можете настроить количество возвращаемых рекомендаций и установить порог количества предыдущих рекомендаций, необходимых для создания рекомендации.

  1. Добавьте в свой эксперимент обученную модель рекомендаций Wide и Deep и подключите ее к модели рекомендаций Trained Wide и Deep. Вы должны создать модель с помощью Train Wide и Deep Recommender.

  2. Чтобы рекомендовать элементы для данного списка пользователей, установите для параметра Тип прогноза рекомендателя значение Рекомендация элемента.

  3. Рекомендуемый выбор элементов: укажите, используете ли вы компонент скоринга в производстве или для оценки модели, выбрав одно из следующих значений:

    • Из оцененных элементов (для оценки модели): выберите этот вариант, если вы разрабатываете или тестируете модель. Эта опция включает режим оценки, и компонент дает рекомендации только по тем элементам входного набора данных, которые были оценены.
    • Из всех элементов: выберите этот параметр, если вы настраиваете эксперимент для использования в веб-службе или производстве. Эта опция включает производственный режим, и компонент дает рекомендации по всем элементам, увиденным во время обучения.
    • Из элементов без рейтинга (чтобы предлагать пользователям новые элементы): выберите этот параметр, если вы хотите, чтобы компонент давал рекомендации только по тем элементам в наборе обучающих данных, которые не были оценены.
  4. Добавьте набор данных, для которого вы хотите сделать прогнозы, и подключите его к набору данных для оценки.

    • Если вы выберете вариант Из всех элементов, входной набор данных должен состоять из одного и только одного столбца, содержащего идентификаторы пользователей, для которых следует давать рекомендации.

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

    • Если вы выберете вариант Из оцененных элементов (для оценки модели), входной набор данных должен состоять из пар пользователь-элемент. Первый столбец должен содержать идентификатор пользователя. Второй столбец должен содержать соответствующие идентификаторы элементов.

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

    • Для Из элементов без рейтинга (чтобы предлагать пользователям новые элементы) входной набор данных должен состоять из пар "пользователь-элемент". Первый столбец должен содержать идентификатор пользователя. Второй столбец должен содержать соответствующие идентификаторы элементов.

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

  5. (Необязательно). Если у вас есть набор данных о пользовательских функциях, подключите его к Пользовательским функциям.

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

    Функции пользователей, которые оценили элементы, игнорируются программой Оценки Wide и Deep Recommender, потому что эти функции уже были изучены во время обучения. Таким образом, вы можете заранее отфильтровать свой набор данных, чтобы включить в него только пользователей с холодным запуском или пользователей, которые не оценили какие-либо элементы.

    Предупреждение

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

  6. (Необязательно) Если у вас есть набор данных характеристик элемента, вы можете связать его с характеристиками элемента.

    Первый столбец в наборе данных характеристик элемента должен содержать идентификатор элемента. Остальные столбцы должны содержать значения, характеризующие элементы.

    Функции оцененных элементов игнорируются программой Оценки Wide и Deep Recommender, потому что эти функции уже были изучены во время обучения. Таким образом, вы можете ограничить свой набор данных скоринга элементами холодного запуска или элементами, которые не были оценены никакими пользователями.

    Предупреждение

    Если модель была обучена без использования функций элемента, не используйте функции элемента при оценке.

  7. Максимальное количество элементов, которые можно рекомендовать пользователю: введите количество элементов, которые нужно вернуть для каждого пользователя. По умолчанию рекомендуется 5 элементов.

  8. Минимальный размер пула рекомендаций на пользователя: введите значение, указывающее, сколько предварительных рекомендаций требуется. По умолчанию для этого параметра установлено значение 2, что означает, что элемент должен быть рекомендован как минимум двумя другими пользователями.

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

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

    Чтобы применить этот фильтр, подключите исходный набор обучающих данных к входному порту.

  10. Запустите эксперимент.

Результаты рекомендации по элементу

В оцененном наборе данных, возвращаемом Оценкой Wide и Deep Recommender, перечислены рекомендуемые элементы для каждого пользователя.

  • Первый столбец содержит идентификаторы пользователей.
  • Создается ряд дополнительных столбцов в зависимости от значения, установленного вами для параметра Максимальное количество элементов, рекомендуемых пользователю. Каждый столбец содержит рекомендованный элемент (по идентификатору). Рекомендации упорядочены по сродству пользователя к элементу, причем элемент с наивысшим сродством помещается в столбец Элемент 1.

Технические примечания

В этом разделе содержатся ответы на некоторые общие вопросы об использовании рекомендателя Wide & Deep для создания прогнозов.

Пользователи и рекомендации по холодному запуску

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

Однако для новых пользователей у вас может не быть идентификатора пользователя, только некоторые пользовательские функции, такие как возраст, пол и т. д.

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

В целях прогнозирования пользователь с холодным запуском определяется как пользователь с идентификатором, который не использовался для обучения. Чтобы убедиться, что идентификаторы не совпадают с идентификаторами, используемыми в обучении, вы можете создать новые идентификаторы. Например, вы можете сгенерировать случайные идентификаторы в указанном диапазоне или заранее выделить серию идентификаторов для пользователей с холодным запуском.

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

Использование в производстве широкого и глубокого рекомендателя

Если вы поэкспериментировали с рекомендациями Wide и Deep, а затем переместили модель в производство, помните об этих ключевых различиях при использовании рекомендаций в режиме оценки и в режиме производства:

  • Для оценки, по определению, требуются прогнозы, которые можно проверить на основе истины в тестовом наборе. Таким образом, при оценке рекомендуемого средства он должен прогнозировать только элементы, которые были оценены в тестовом наборе. Это обязательно ограничивает возможные значения, прогнозируемые.

    Однако при операционной работе модели обычно изменяется режим прогнозирования, чтобы сделать рекомендации на основе всех возможных элементов, чтобы получить лучшие прогнозы. Для многих из этих прогнозов нет соответствующей истины, поэтому точность рекомендации не может быть проверена так же, как во время экспериментов.

  • Если вы не предоставляете идентификатор пользователя в рабочей среде и предоставляете только вектор признаков, вы можете получить в качестве ответа список всех рекомендаций для всех возможных пользователей. Обязательно укажите идентификатор пользователя.

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

Следующие шаги

Ознакомьтесь с набором доступных компонентов для Машинного обучения Azure.