Я больше года в рекламном бизнесе, но моя обычная работа в основном связана с рекламными проектами. Основной алгоритм рекламы поддерживается отделом ИИ. Для нас это можно сказать "черный ящик" " существование. Просто позвоните.
В ближайшее время планирую систематически изучать поисковые и рекомендательные алгоритмы в рекламе.Конечно, больше с инженерной точки зрения разобраться: основные принципы работы алгоритма, и как алгоритм решает проблемы с производительностью при столкновении с огромные объемы данных онлайн? На протяжении всего процесса я буду выводить ценные технические моменты в серию статей.
Эта статья относится к вводной статье рекомендательной системы.В этой статье пока не рассматриваются массивные данные онлайн-среды.Цель состоит в том,чтобы понять базовую структуру рекомендательной системы.Я разверну ее в виде алгоритм графических рекомендаций и демонстрация программы, в том числе:
01 Вход в мир рекомендательных систем
Думаю, многие слышали историю о «пиве и подгузниках»: когда молодые папы идут в супермаркет за подгузниками, они часто покупают пиво, чтобы побаловать себя. Таким образом, Walmart объединил два товара и в итоге получил более высокие продажи.
Обоснованием этой истории является «алгоритм рекомендации», и поскольку подгузники и пиво часто появляются в одной и той же корзине, имеет смысл рекомендовать пиво молодому отцу, покупающему подгузники.
1. Какую проблему решает рекомендательная система?
Рекомендательная система предлагалась с 1990-х годов, но только в последние годы она по-настоящему привлекла внимание общественности и стала популярной среди крупных интернет-компаний.
С развитием мобильного Интернета в Интернете начинает распространяться все больше и больше информации, что приводит к серьезным информационным перегрузкам. Следовательно, как найти информацию, которая интересует пользователей из большого количества информации, является ценностью рекомендательной системы. Точные рекомендации решают проблемы пользователей, улучшают пользовательский опыт и, в конечном итоге, удерживают пользователей.
Рекомендательная система по сути представляет собой систему фильтрации информации, обычно она делится на три звена: отзыв, сортировка и переупорядочивание.Каждое звено фильтруется слой за слоем, и, наконец, из массива отсеиваются десятки элементов, которые могут заинтересовать пользователя. библиотека материалов.Рекомендуется пользователям.
2. Сценарии применения рекомендательных систем
Там, где много информации, есть рекомендательная система.Наши самые часто используемые приложения каждый день включают рекомендательные функции:
Категория информации: Toutiao, Tencent News и т. д.
Электронная коммерция: Taobao, JD.com, Pinduoduo, Amazon и др.
Развлечения: Douyin, Kuaishou, iQiyi и др.
Жизненные услуги: Meituan, Dianping, Ctrip и т. д.
Социальные сети: WeChat, Momo, Maimai и т. д.
Сценарии применения рекомендательных систем обычно делятся на следующие две категории:
-
Рекомендации, основанные на пользовательских параметрах: рекомендации делаются на основе исторического поведения и интересов пользователей, например, «Угадай, что тебе нравится» на главной странице Taobao и рекомендация домашней страницы Douyin.
-
Рекомендации, основанные на размерах элемента: рекомендации делаются на основе целевых объектов, просматриваемых в данный момент пользователем.Например, при открытии страницы сведений о продукте в приложении Jingdong вам будут рекомендованы продукты, связанные с основным продуктом.
3. Сходства и различия между поиском, рекомендацией и рекламой
Поиск и рекомендация — два наиболее распространенных сценария применения алгоритмов ИИ, и они имеют сходство в технологиях. Здесь упоминается реклама, в основном с учетом того, что многие студенты, которые никогда не занимались рекламным бизнесом, не знают, почему реклама связана с поиском и рекомендацией, поэтому я объясню это.
-
поиск: имеется четкое намерение поиска, а результаты поиска связаны с поисковыми запросами пользователя.
-
рекомендовать: Это не является целенаправленным и опирается на историю поведения пользователя и портретные данные для персонализированных рекомендаций.
-
рекламировать: С помощью технологии поиска и рекомендаций для получения точной рекламы рекламу можно понимать как сценарий применения рекомендации по поиску.Техническое решение является более сложным, включая интеллектуальный контроль бюджета, рекламные ставки и т. д.
02 Общая архитектура рекомендательной системы
Выше приведена общая схема архитектуры системы рекомендаций, которая разделена на несколько уровней снизу вверх, основные функции каждого уровня следующие:
-
источник данных: Различные источники данных, на которые опираются алгоритмы рекомендаций, включая данные об элементах, пользовательские данные, журналы поведения, другие доступные бизнес-данные и даже данные за пределами компании.
-
вычислительная платформа: Отвечает за очистку, обработку, автономные вычисления и вычисления в реальном времени различных базовых разнородных данных.
-
уровень хранения данных: данные, обрабатываемые вычислительной платформой хранения, могут храниться в различных системах хранения по мере необходимости.Например, Redis может хранить характеристики пользователей и данные о портретах пользователей, ES можно использовать для индексирования данных элементов, а Faiss может хранить вектор встраивания пользователей или элементов. и Т. Д.
-
отозвать слой: Включая различные стратегии или алгоритмы рекомендаций, такие как классическая совместная фильтрация, отзыв на основе контента, отзыв на основе векторов, популярные рекомендации для поддержки и т. д. Чтобы справиться с большим одновременным онлайн-трафиком, результаты отзыва обычно предварительно вычисляются, а инвертированный индекс устанавливается и сохраняется в кэше.
-
слой фьюжн-фильтра: запуск многостороннего отзыва. Поскольку каждый источник отзыва слоя отзыва возвращает набор кандидатов, этот слой необходимо объединить и отфильтровать.
-
слой сортировки: Используйте модели машинного обучения или глубокого обучения и более богатые функции для изменения порядка, чтобы отсеивать более мелкие и более точные наборы рекомендаций и возвращать их бизнесу верхнего уровня.
От уровня хранения данных до уровня отзыва, до уровня фильтрации слияния и уровня сортировки набор кандидатов уменьшается слой за слоем, но требования к точности становятся все выше и выше, поэтому это также приводит к увеличению вычислительных ресурсов слой за слоем. сложность, это система рекомендаций самая большая проблема.
Фактически, для механизма рекомендаций основными частями являются в основном две части: функции и алгоритмы.
Из-за большого объема данных при расчете признаков обычно используются технологии обработки больших данных в автономном режиме и в режиме реального времени, такие как Spark, Flink и т. д., а затем результаты расчета сохраняются в Redis или других системах хранения (таких как HBase, MongoDB). или ES) для отзыва и сортировки модулей.
Функция алгоритма отзыва состоит в том, чтобы быстро получить пакет данных-кандидатов из массивных данных, и требования должны быть максимально быстрыми и точными. Этот уровень обычно имеет богатые стратегии и алгоритмы для обеспечения разнообразия.Для лучшего эффекта рекомендаций некоторые алгоритмы также будут выполняться в режиме, близком к реальному времени.
Функция алгоритма сортировки состоит в точной настройке множества вызванных наборов кандидатов. Он использует элементы, пользователей и их перекрестные функции, а затем оценивает и ранжирует с помощью сложных моделей машинного обучения или глубокого обучения.Этот уровень характеризуется сложными вычислениями, но более точными результатами.
03 Графический классический алгоритм совместной фильтрации
Разобравшись с общей архитектурой и техническими решениями рекомендательной системы, давайте углубимся в детали алгоритма. Диаграмма выбора здесь — это звездный алгоритм в системе рекомендаций: Collaborative Filtering (CF).
Студентам инженерных специальностей может показаться, что алгоритмы ИИ неясны и трудны для понимания, а порог слишком высок.Это правда, что многие алгоритмы глубокого обучения похожи на это, но совместная фильтрация — простой и эффективный алгоритм.Пока вы иметь основу математики средней школы, вы можете понять.
1. Что такое совместная фильтрация?
Ядром алгоритма совместной фильтрации является «поиск сходства», который основан на историческом поведении пользователя (просмотр, избранное, комментарии и т. д.), чтобы обнаружить предпочтения пользователя в отношении элементов, измерить и оценить предпочтения и, наконец, отфильтровать рекомендуемый набор. Он в свою очередь включает две ветви:
- Совместная фильтрация на основе пользователей: User-CF, ядро найти похожих людей. Например, на приведенном ниже рисунке пользователь А и пользователь С купили и товар А, и товар В, тогда можно считать, что А и С похожи, потому что им нравится много общего. Таким образом, товар d, купленный пользователем А, может быть рекомендован пользователю С.
- совместная фильтрация на основе элементов: Item-CF, ядро найти похожие предметы. Например, на приведенном ниже рисунке товары a и b были куплены пользователями A, B и C одновременно, тогда товары a и b считаются похожими из-за их частого совпадения. Таким образом, если пользователь D покупает товар a, то пользователь D может порекомендовать товар b, наиболее похожий на товар a.
2. Как найти сходство?
Как упоминалось ранее, ядром совместной фильтрации является поиск сходства, User-CF — поиск сходства между пользователями, Item-CF — поиск сходства между элементами, так как же измерить сходство между двумя пользователями или элементами?
Все мы знаем, что для двух точек в координатах, если угол между ними меньше, две точки более похожи, это косинусное расстояние, изученное в средней школе, и формула его расчета выглядит следующим образом:
Например, если координата А равна (0, 3, 1), а координата В равна (4, 3, 0), то косинусное расстояние между этими двумя точками равно 0,569. Чем ближе косинусное расстояние к 1, тем больше похожи они.
Помимо косинусного расстояния существует множество способов измерения подобия, таких как: евклидово расстояние, коэффициент корреляции Пирсона, коэффициент подобия Жаккара и т.д. Здесь нет разложения, просто разница в формуле расчета.
3. Поток алгоритма Item-CF
После уточнения определения подобия, давайте в качестве примера возьмем Item-CF, чтобы подробно описать, как этот алгоритм выбирает рекомендуемые элементы?
Шаг 1. Организуйте матрицу совпадения элементов
Предположим, есть 5 пользователей A, B, C, D, E, среди которых пользователь A любит элементы a, b, c, а пользователь B любит элементы a, b и так далее.
Так называемая совместная встречаемость означает, что два элемента нравятся одному и тому же пользователю. Например, для элементов a и b, поскольку они нравятся пользователям A, B и C одновременно, число совпадений элементов a и b равно 3. Используя этот статистический метод, матрица совпадения может быть быть быстро построенным.
Шаг 2: Рассчитайте матрицу сходства элементов
Для алгоритма Item-CF упомянутое выше косинусное расстояние обычно не используется для измерения сходства элементов, а используется следующая формула:
Среди них N(u) представляет количество пользователей, которым нравится элемент u, N(v) представляет количество пользователей, которым нравится элемент v, а пересечение двух представляет количество пользователей, которым нравится элемент u и элемент v в в то же время. Очевидно, что если два предмета нравятся многим людям одновременно, тем больше они похожи.
На основе матрицы совпадения, рассчитанной на шаге 1, и количества лайков каждого элемента можно построить матрицу сходства элементов:
Шаг 3: Рекомендуемые элементы
Последний шаг — рекомендовать элементы на основе матрицы подобия, Формула выглядит следующим образом:
Среди них P uj представляет степень интереса пользователя u к элементу j, и чем больше значение, тем достоин рекомендации. N(u) представляет набор элементов, которые интересуют пользователя u, S(j, N) представляет первые N элементов, наиболее похожих на элемент j, W ij представляет сходство между элементом i и элементом j, а R ui представляет пользователя. интерес u к пункту j. интерес i.
Приведенная выше формула немного абстрактна, и ее легче понять, если посмотреть непосредственно на пример. Предположим, я хочу порекомендовать товары пользователю E. Мы уже знаем, что пользователю E нравится товар b и товар c, и предполагается, что нравится быть 0,6 и 0,4 соответственно. Тогда рекомендуемые результаты, рассчитанные по приведенной выше формуле, будут следующими:
Поскольку элемент b и элемент c уже понравились пользователю E, они больше не будут рекомендованы. Наконец, сравните уровень интереса пользователя E к пункту а и пункту d, поскольку 0,682 > 0,3, поэтому выберите рекомендуемый пункт а.
04 Построить рекомендательную систему от 0 до 1
Имея приведенную выше теоретическую базу, мы можем быстро реализовать рекомендательную систему на Python.
1. Выберите набор данных
Здесь используется набор данных MovieLens, который является очень классическим в области рекомендаций. Это набор данных о рейтингах фильмов. Официальный сайт предоставляет несколько версий разного размера. Ниже приводится набор данных ml-1m (около 1 миллиона записей пользовательских рейтингов). ) Например.
После скачивания и распаковки в папке находятся: ratings.dat,movies.dat,users.dat 3 файла, всего 6040 пользователей, 3900 фильмов, 1000209 рейтинговых записей. Формат каждого файла одинаков, каждая строка представляет собой запись, а поля разделены ::.
Возьмем, к примеру, ratings.dat, каждая строка содержит 4 свойства: UserID, MovieID, Rating, Timestamp. Распределение людей с разным рейтингом можно посчитать через скрипт:
2. Чтение необработанных данных
Программа в основном использует файл ratings.dat в наборе данных.Проанализировав файл, она извлекает три поля user_id, movie_id и rating и, наконец, создает данные, от которых зависит алгоритм, и сохраняет их в наборе переменных данных. формат: dict[user_id][movie_id] = скорость
3. Построить матрицу сходства элементов
На основе набора данных на шаге 2 можно дополнительно подсчитать количество оценок для каждого фильма и матрицу совместного появления фильма, а затем можно сгенерировать матрицу сходства.
4. Рекомендуйте товары на основе матрицы сходства
Наконец, вы можете порекомендовать на основе матрицы сходства, ввести идентификатор пользователя, сначала выбрать 10 наиболее похожих фильмов среди фильмов, оцененных пользователем, а затем рассчитать окончательную оценку каждого фильма-кандидата после взвешенного суммирования. Наконец, выберите 5 лучших фильмов для рекомендации.
5. Звоните в рекомендательную систему
Выберите пользователя UserId=1 ниже, чтобы увидеть результат выполнения программы. Поскольку программа рекомендаций выводит список идентификаторов фильмов, для более интуитивного понимания результатов рекомендаций он преобразуется в название фильма для вывода.
Окончательные рекомендуемые лучшие 5 фильмов:
05 Проблемы систем онлайн-рекомендаций
Благодаря приведенному выше введению у вас должно быть предварительное представление об основном составе системы рекомендаций, но когда она фактически применяется к реальной онлайн-среде, она столкнется со многими алгоритмическими и инженерными проблемами, определенно не десятки строк кода Python. быть сделано из.
1. В приведенном выше примере используется стандартизированный набор данных, в то время как данные в онлайн-среде нестандартизированы, поэтому он включает сбор, очистку и обработку массивных данных и, наконец, создает набор данных, который может использоваться моделью.
2. Для сложной и утомительной разработки признаков говорят, что верхний предел модели алгоритма определяется данными и признаками. Для онлайн-среды необходимо выбрать доступные функции с точки зрения бизнеса, а затем очистить, стандартизировать, нормализовать и дискретизировать данные, а также дополнительно проверить эффективность функций с помощью экспериментальных результатов.
3. Как уменьшить сложность алгоритма? Например, описанный выше алгоритм Item-CF имеет временную и пространственную сложность O(N×N), а данные в онлайн-среде исчисляются десятками миллионов или даже сотнями миллионов.Если вы не оптимизируете алгоритм, можно бегать несколько дней, данных нет, или просто нет возможности уместить в памяти такую большую матрицу данных.
4. Как обеспечить производительность в реальном времени? Поскольку интересы пользователей меняются в режиме реального времени в соответствии с их последним поведением, если модель рекомендует только на основе исторических данных, результаты могут быть недостаточно точными. Следовательно, как удовлетворить требования в реальном времени и как рекомендовать вновь добавленные элементы или пользователей — все это проблемы, которые необходимо решить.
5. Компромисс между эффектом алгоритма и производительностью. Необходимо найти баланс между стремлением к разнообразию и точности с точки зрения алгоритмов и стремлением к производительности с инженерной точки зрения.
6. Стабильность и отслеживание эффекта рекомендательной системы. Необходимо иметь полный набор системы мониторинга данных и приложений, а также платформу ABTest для проведения экспериментов в градациях серого и сравнения эффектов.
напиши в конце
Эта статья представляет собой введение в рекомендательную систему. Цель состоит в том, чтобы дать всем общее представление о рекомендательной системе. В будущем я буду сериализовать некоторые статьи, чтобы подробно представить, как рекомендательная система должна сталкиваться с конкретными предприятиями и большими суммами. данных онлайн Как проектировать?
Если вам нужен исходный код Python и набор данных Item CF в статье, вы можете скачать их с Baidu Netdisk:
Ссылка: https://pan.baidu.com/s/18-RihJQhnYDxpevEVlP9MQ Код извлечения: cax7
Об авторе: Мастер 985, бывший инженер Amazon, ныне технический директор 58 Zhuanzhuan.
Добро пожаловать, чтобы отсканировать QR-код ниже и обратить внимание на мой личный публичный аккаунт: карьерный рост ИТ-специалистов