View in Telegram
Метод ALS. Как устроен и когда его используют. Вопрос подписчика ALS’ом иногда по ошибке называют любое матричное разложение в задаче коллаборативной фильтрации. Ну или не по ошибке, а просто жаргон такой сложился. Но давайте разберёмся в деталях. Матричное разложение возникает, когда мы для рекомендации пользователю айтемов — товаров, фильмов, музыки — смотрим на матрицу с историей взаимодействия. А затем пробуем её приблизить произведением матрицы пользователей и матрицы айтемов. В этом подходе для пары пользователь-айтем всегда есть два вектора чисел. Один от пользователя: он содержит в себе информацию о том, что тот полайкал, что не полайкал, что дослушал, что не дослушал. Второй — вектор айтема. Например, если это фильм, то здесь будет отражаться жанр, режиссёр, актёры и т. п. Цель — чтобы скалярное произведение этих чисел давало оценку из матрицы как можно точнее. Важно понимать, что выше я привёл только примеры информации про пользователя и айтем: алгоритм оптимизации в процессе построения матричного разложения сам подберёт числа, и они не обязаны быть интерпретируемы и понятны человеку (наверняка не будут!). Их задача лишь хорошо прогнозировать числа из исходной матрицы. А вот дальше уже начинается ALS. Мы настраиваем эти векторы для каждого пользователя и каждого айтема с помощью определённого метода оптимизации. ALS на самом деле и есть метод оптимизации. Итак, нам нужно минимизировать ошибку в прогнозах. Давайте мы сначала будем подбирать вектор юзера, потом вектор айтема. Так по очереди для случайных пар юзер-айтем. Обычно используются квадратичные потери, а оптимальный выбор означает, что нам нужно производные потерь по искомым векторам приравнять к нулю. В выражении уходит квадрат, и всё сводится к решению системы линейных уравнений. Но при этом мы помним, что данные всегда будут с погрешностью. Так что тут в дело вступает метод наименьших квадратов. Мы выбираем решение, которое с наименьшей погрешностью похоже на решение этой системы. Работает, кстати, не только с квадратичными потерями. Мы почти всегда можем приблизить потери квадратичными рядом с точкой минимума (для математиков — разложением по Тейлору до второго порядка). Как вы догадались, ALS часто используется в рекомендательных системах, потому что он даёт более быструю сходимость. Ведь альтернатива ALS — метод стохастического градиентного спуска (SGD) — для большого числа пользователей и айтемов будет сходиться дольше. Я, конечно, видел случаи, когда ALS обучался медленнее SGD. Но, скорее всего, дело было в руках в подборе параметров алгоритма. Ещё есть iALS (implicit ALS). Он использует пропуски в матрице оценок. То есть, раз мы оценку не знаем, есть вероятность, что айтем пользователю не нравится. Но вес у этих данных меньше: пользователь мог айтем просто не увидеть. Из небольших инсайдов. Ходят слухи, что долгое время и в ИВИ, и в яндексовских медиасервисах рекомендации строились на базе ALS. Сейчас, разумеется, системы намного сложнее. Но iALS остаётся обязательным к построению бейзлайном, если уж вы взялись за разработку рекомендательной системы. В сервисах МТС мы используем iALS в рекомендациях, если данных уже достаточно много, чтобы не ограничиваться простым бейзлайном с популярными айтемами, но ещё недостаточно для более сложных нейросетевых моделек. Вроде тех, которые мы сейчас используем в KION (там уже давно вовсю работают сетки). Также иногда прогноз от iALS хорошо бустит качество более сложных моделей. Векторы из iALS как фичи, как правило, заходят хуже, чем их произведения. #вопрос_подписчика
Love Center - Dating, Friends & Matches, NY, LA, Dubai, Global
Love Center - Dating, Friends & Matches, NY, LA, Dubai, Global
Find friends or serious relationships easily