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размера.

Этот алгоритм обучения выводит следующие столбцы:

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

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

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

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

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

Историческая справка

Семейство машин факторизации — это мощная группа моделей для контролируемых задач обучения. Впервые он появился в документе Steffen Rendle «Машины факторизации» в 2010 году. Позже одна из своих обобщенных версий, машины факторизации с учетом полей, стала важным прогнозным модулем в последних системах рекомендаций и конкурсов прогнозирования скорости. Например, ознакомьтесь с выигрышными решениями в KDD-Cup 2012 годах Steffen Rendle (Трек 1 и Трек 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} \rangle + \sum_{j = 1}^n \sum_{j' = j + 1}^n \langle \textbf{v}_{j, {\mathcal F}(j')}, \textbf{v}_{j', {\mathcal F}(j)} \rangle x_j x_{j'}$, где $\langle \cdot, \cdot \rangle$ является внутренним оператором продукта, $\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)

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

Fit(IDataView, IDataView, FieldAwareFactorizationMachineModelParameters)

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

GetOutputSchema(SchemaShape)

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

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

AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

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

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

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

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

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