Быстрый факт:

40 % установок приложений в Google Play приходятся на рекомендации.
60 % времени просмотра на YouTube приходится на рекомендации.

Система рекомендаций в современном мире — вещь очень обычная, от YouTube до Amazon, от Netflix до Google. Но понимание фундаментальной механики такой системы часто считается сложным.

Теперь мы попытаемся разбить архитектуру базовой системы рекомендаций, углубившись в априорный алгоритм.

Алгоритм Apriori работает на принципах ассоциативного анализа правил. Интеллектуальный анализ правил ассоциации используется для определения базовых отношений между различными элементами.

Давайте перейдем к рассмотрению примера магазина DVD с фильмами, где клиенты могут брать напрокат или покупать DVD с фильмами. Если мы внимательно понаблюдаем, то всегда будет существовать закономерность в том, что покупают клиенты, может быть тема вроде триллера, боевика или комедии и т. д.

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

Компоненты априорного алгоритма

Алгоритм Apriori состоит из трех основных компонентов, а именно:

Служба поддержки

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

Например, если из 100 транзакций DVD 20 транзакций содержат фильм «Мстители: Финал», поддержку этого фильма можно рассчитать следующим образом:

Поддержка (конец игры) = (количество транзакций, содержащих финальную игру)/(общее количество транзакций)

Поддержка (конец игры) = 20/100 = 20%

Уверенность

Уверенность указывает на вероятность того, что фильм А (допустим, «Мстители: Финал») будет куплен или взят напрокат, если куплен или взят напрокат фильм Б (допустим, «Железный человек»). Его можно рассчитать, найдя количество транзакций, в которых фильмы B и A были куплены вместе, деленное на общее количество транзакций, в которых B был куплен или взят напрокат.

Уверенность (Железный человек → Конец игры) = (Транзакции, содержащие как Железного человека, так и Конец игры)/(Транзакции, содержащие Железного человека)

Если бы у нас было 15 транзакций, в которых клиенты покупали и Железного человека, и Конечную игру, а в 30 транзакциях покупался или арендовался только Железный человек. Затем мы можем найти вероятность покупки End Game при покупке Iron Man, как показано ниже.

Уверенность (Железный человек → Конец игры) = 15/30 = 50%

Поднимать

Подъем (Железный человек -> Конец игры) относится к увеличению доли продаж DVD с фильмом «Конец игры» по сравнению с DVD с фильмом «Железный человек». Его можно рассчитать, разделив Уверенность (Железный Человек -> Конец игры) на Поддержку (Конец игры).

Подъем (Железный человек → Конец игры) = (Уверенность (Железный человек → Конец игры))/(Поддержка (Конец игры))

Подъем (Железный человек → Конец игры) = 50% / 20% = 2,5

Таким образом, здесь значение подъема, равное 2,5, указывает на то, что вероятность покупки DVD «Железный человек» и «Конец игры» вместе в 2,5 раза выше, чем вероятность покупки только DVD «Конец игры».

Прирост, равный 1, указывает на отсутствие связи между элементами. Подъем больше 1 указывает на то, что продукты с большей вероятностью будут покупать вместе. Наконец, прирост менее 1 относится к случаю, когда два продукта вряд ли будут покупать вместе.

Шаги, включенные в априорный алгоритм

В реальных сценариях может быть большое количество элементов для сравнения, что приводит к большему количеству транзакций. Алгоритм Apriori попытается извлечь все возможные правила для каждой пары элементов. Но на самом деле нет необходимости выделять связь между каждой парой, так как мы хотели бы сосредоточиться только на тех парах, которые оказывают некоторое влияние друг на друга.

  1. Во-первых, мы устанавливаем минимальное значение поддержки и уверенности. Тем самым мы устраняем нежелательные пары и находим правила для элементов, которые имеют определенное существование/популярность по умолчанию (поддержка) и имеют минимальное значение для совпадения с другими элементами (доверие).
  2. Теперь мы извлекаем все пары/подмножества элементов, поддержка которых превышает минимальное значение поддержки.
  3. Затем мы сохраняем все правила из подмножеств со значением достоверности выше минимального значения достоверности.
  4. Наконец, мы упорядочиваем правила по убыванию значений Lift.

В следующем посте мы попробуем реализовать априорный алгоритм с помощью Python.

Первоначально опубликовано на http://thedataresearch.wordpress.com 5 мая 2020 г.