FM для оценки CTR
点击率预估
CTR
обзор
Раньше я использовал FM для оценки CTR, а потом я столкнулся с некоторыми алгоритмами рекомендаций, но я не понял разницы между этой рекомендацией и CTR.
Вот несколько ответов из интернета:
В чем разница между вычислительной рекламой и рекомендательными системами?
Общее ощущение после прочтения таково: что касается системы рекомендаций и вычислительной рекламы, к которой относится CTR, то они действительно разные, и это два разных конкретных бизнеса, и что касается алгоритма, то это два такой же.
Ниже представлен классический алгоритм FM (машины факторизации) в CTR.
Давайте сначала посмотрим на набор данных, описывающих пользовательскую оценку фильма 1-5.
Для приведенного выше набора данных наша цель — предсказать фильмы, которые пользователи не оценили.Метод можно увидеть в моей предыдущей статье.Скрытая семантическая модель (LFM), здесь для вышеуказанного подхода мы можем непосредственно видетьНеожиданная битва рекомендательных системных алгоритмов.
Вот обновление данных, давайте посмотрим поближе:
На рисунке выше расчетR11=P11*Q11+P12*Q21+P13*Q31
, затем вычислить ошибку между R11 и истинным значением, а затем обновить в соответствии с этой ошибкойP11,Q11,P12,Q21,P13,Q31
Эти 6 параметров обновляют правила:
# k = 1 -> 3
P[1][k] = P[1][k] + alpha * (2 * e11 * Q[k][3] - beta * P[1][k])
Q[k][4] = Q[k][5] + alpha * (2 * e11 * P[1][k] - beta * Q[k][6])
Из приведенной выше формулы мы можем узнать, что если мы хотим обновить P11, P12 и P13, нам нужна оценка R1k, то есть оценка первого пользователя, Проблема, которая возникает, заключается в том, что если у пользователя меньше данные оценки, тогда ее вектор будет неточным.
Это проблема холодного старта: если у пользователя или элемента нет данных о поведении, мы вообще не можем его предсказать.
FM
Возьмем другой пример клика по объявлению.
Выше есть 3 столбца функций, каждая функция имеет категориальный тип, поэтому метод заключается в том, чтобы сделать один горячий, вот небольшое знание, зачем использовать один горячий вместо прямого кодирования 1, 2, 3, 4, 5?Зачем делать горячее
Когда мы сталкиваемся с переменными категории типов, наиболее распространенным методом является выполнение одноразового кодирования, но зачем это делать? Например, предположим, что есть столбец под названием семейное положение, возможные значения: холост, женат, разведен. Мы можем напрямую закодировать его как 0, 1, 2, в этом случае в некоторых алгоритмах расчета расстояния 0 и 1 будут ближе, чем 0 и 2, но на самом деле 0, 1, 2 все равно, все одно решение заключается в преобразовании столбца семейного положения в 3 столбца, каждый столбец использует 0, 1, чтобы указать, является ли это значением, чтобы расстояние между ними было одинаковым, обеспечивая семантическую согласованность.
Таким образом, после того, как однократное выполнение выполнено, указанные выше входные функции становятся:
Это определенно многомерный разреженный вектор.Если мы используем модель LR, чтобы сделать это в это время, прогноз будет следующим:
Мы добавляем имя функции к весу w, чтобы более четко выразить значение веса.В настоящее время, если мы хотим зафиксировать совместную связь между различными функциями, нам нужно использовать эти две функции вместе в качестве входных данных, и у нас есть следующая формула:
Проблема, связанная с этим, заключается в следующем: проблема вычислительной сложности, поскольку по мере увеличения N объем вычислений увеличивается на N ^ 2, и для того, чтобы узнать вес совместного признака w, совместное распределение должно присутствовать в обучающих данных.
В настоящее время решение FM заключается в том, что мы не используем простой одиночный вес для захвата веса элемента соединения, а используем векторный скалярный продукт для представления:
Это на самом деле эквивалентно добавлению мощности в модель (поскольку параметры модели увеличились), и, что более важно, мыБольше информации, полученной из необработанных данных.
Давайте возьмем пример, чтобы проиллюстрировать вышеуказанную проблему и посмотрим на набор данных:
В приведенных выше данных, используя традиционный метод, мы не можем узнать w(NBC, Gucci), потому что нет обучающих данных, но что, если мы используем FM? При изучении совместных признаков мы в основном изучаем характеристики каждого признака.распределенное представление, как показано в предыдущем NFM:
Пока у нас есть отдельные данные NBC и Gucci, мы можем узнать скрытый смыслраспределенное представление.
Еще один момент, в котором FM лучше, чем LR, — это вычислительная эффективность, как мы видим.FMВ статье:
Первоначальный расчет n^2 изменен на n*k, а k обычно меньше n, что можно назвать значительным улучшением производительности.
Кроме того, мы можем понять FM с точки зрения нейронной сети, и ее структурная схема выглядит следующим образом:
Изображение изDeepFM: A Factorization-Machine based Neural Network for CTR Prediction, по формуле ФМ его можно разделить на 3 части,
w0 является глобальным, wi вводится для каждой функции, а vik внедряется для каждой функции.
Это может быть не очень понятно, вы можете посмотреть код, код — лучшее объяснение:
Оригинальный код отkeras-based-fm.
FFM
Дополнительная буква F здесь относится к Field-Aware.Например, посмотрите на данные:
Поле выше относится к P, A, G, и в каждом поле есть много категорий.
В алгоритме FM каждая функция имеет только один скрытый вектор v, но одно и то же поле по-разному влияет на разные поля, например на мужчину, но когда внутренний продукт рассчитывается с помощью издателя и рекламодателя, его эффект будет разным, поэтому я надеюсь иметь возможность добавлять информацию о категории, а изменяющаяся часть находится в скрытом векторе:
Количество параметров изменилось с исходного nk на nfk, где n — количество объектов, f — количество категорий полей, а k — количество скрытых векторов.
Суммировать
Эта статья в основном знакомит с основными идеями FM и FFM.Следующая статья будет фактической статьей.Используемая библиотекаxLearn.
Ваша поддержка является движущей силой для меня, чтобы продолжать писать, и я с нетерпением жду нашего общего прогресса.