FieldAwareFactorizationMachineTrainer Класс

Определение

Прогнозирование IEstimator<TTransformer> целевого объекта с помощью модели машинной факторизации с учетом полей, обученной с помощью метода стохастического градиента.

public sealed class FieldAwareFactorizationMachineTrainer : Microsoft.ML.IEstimator<Microsoft.ML.Trainers.FieldAwareFactorizationMachinePredictionTransformer>
type FieldAwareFactorizationMachineTrainer = class
    interface IEstimator<FieldAwareFactorizationMachinePredictionTransformer>
Public NotInheritable Class FieldAwareFactorizationMachineTrainer
Implements IEstimator(Of FieldAwareFactorizationMachinePredictionTransformer)
Наследование
FieldAwareFactorizationMachineTrainer
Реализации

Комментарии

Входные и выходные столбцы

Данные столбца входной метки должны быть Boolean. Входные данные столбцов функций должны быть известными векторами Singleразмера.

Этот тренер выводит следующие столбцы:

Имя выходного столбца Тип столбца Description
Score Single Несвязанная оценка, вычисляемая моделью.
PredictedLabel Boolean Прогнозируемая метка, определяемая по знаку оценки. Отрицательный показатель сопоставляется с false, а положительный показатель сопоставляется с true.
Probability Single Вероятность, вычисляемая путем калибровки оценки значения true в качестве метки. Значение вероятности находится в диапазоне [0, 1].

Чтобы создать этот тренер, используйте FieldAwareFactorizationMachineFieldAwareFactorizationMachine или FieldAwareFactorizationMachine(Options).

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

Характеристики тренера

Задача машинного обучения Двоичная классификация
Требуется ли нормализация? Yes
Требуется ли кэширование? No
Обязательный NuGet в дополнение к Microsoft.ML Нет
Экспортируемый в ONNX No

Предыстория

Семейство машин факторизации — это мощная группа моделей для проблем с защищенным обучением. Впервые он появился в документе Steffen Rendle "Машины факторизации" в 2010 году. Позже одна из ее обобщенных версий, машинная факторизация с учетом полей, стала важным прогнозным модулем в последних системах рекомендаций и конкурсах прогнозирования скорости. Примеры см. в KDD-Cup 2012 KDD-Cup Steffen Rendle (Track 1 и Track 2), Criteo's, Avazu и Outbrain в вызовах прогнозирования на Kaggle.

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

Функция оценки

Компьютер факторизации с учетом полей — это функция оценки, которая сопоставляет векторы функций из разных полей с скалярной оценкой. Предположим, что все столбцы признаков $m$ объединяются в длинный вектор признаков $\textbf{x} \in {\mathbb R}^n$ и ${\mathcal F}(j)$ обозначает поле $j$-th функции индентификатор. Соответствующая оценка — $\hat{y}(\textbf{x}) = \langle \textbf{w}, \textbf{x} \rугол + \sum_{j = 1}^n \sum_{j' = j + 1}^n \langle \textbf{v}_{j, {\mathcal F}(j')}, \textbf{v}_{j', {\mathcal F}(j)} \rугловой x_j x_{j'}$, где $\langle \cdot, \cdot \rугловой$ является внутренним оператором продукта, $\textbf{w} \in {\mathbb R}^n$ сохраняет линейные коэффициенты, и $\textbf{v}_{j, f}\in {\mathbb R}^k$ — это представление функции $j$-th в скрытом пространстве поля $f$-th. Обратите внимание, что $k$ — это скрытое измерение, указанное пользователем.

Прогнозируемая метка является признаком $\hat{y}$. Если $\hat{y} > 0$, эта модель прогнозирует значение true. В противном случае он прогнозирует значение false.

Системное введение в машинную факторизацию с учетом полей см. в этом документе.

Сведения об алгоритме обучения

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

Ознакомьтесь с разделом "См. также" ссылки на примеры использования.

Методы

Имя Описание
Fit(IDataView, IDataView, FieldAwareFactorizationMachineModelParameters)

Продолжает обучение FieldAwareFactorizationMachineTrainer с помощью уже обученных modelParameters и (или) данных проверки и возвращает значение FieldAwareFactorizationMachinePredictionTransformer.

Fit(IDataView)

Поезда и возвращается FieldAwareFactorizationMachinePredictionTransformer.

GetOutputSchema(SchemaShape)

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

Методы расширения

Имя Описание
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

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

WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>)

При оценке возвращает объект оболочки, который вызовет делегат после Fit(IDataView) вызова. Часто важно для оценки возвращать сведения о том, что было подходяще, поэтому Fit(IDataView) метод возвращает специально типизированный объект, а не просто общий ITransformer. Однако, в то же время, IEstimator<TTransformer> часто формируются в конвейеры с множеством объектов, поэтому нам может потребоваться построить цепочку оценщиков с помощью EstimatorChain<TLastTransformer> того, где оценка, для которой мы хотим получить преобразователь, похоронен где-то в этой цепочке. В этом сценарии мы можем подключить делегат, который будет вызываться после вызова.

Применяется к

См. также раздел