Рубрики
Без рубрики

Простой анализ ассоциации в одной линии Python

Этот практический пример показывает, как сделать простой анализ ассоциации.

Автор оригинала: Chris.

Вы когда-нибудь купили продукт, рекомендованный алгоритмами Amazon? Скорее всего, вы виновны в том, чтобы приобрести много таких продуктов. Алгоритмы рекомендаций часто основаны на технике под названием «Ассоциативный анализ» Отказ

В этой статье вы узнаете больше о базовой идее анализа ассоциации и о том, как опровергнуть носок в глубокий океан рекомендательных систем – все в одной строке Numpy Code.

Понимание основ ассоциации анализа

Ассоциативный анализ основан на исторических (клиентах) данных. Например, вы, возможно, уже прочитали рекомендацию «Люди, которые купили X, также купили Y» на Amazon. Эта ассоциация различных продуктов является мощной маркетинговой концепцией, потому что она не только связана друг с другом, но также бесплатные продукты, но это также предоставляет вам элемент «социального доказательства» – тот факт, что другие люди купили продукт, увеличивает психологическую безопасность для вас купить продукт самостоятельно. Это отличный инструмент для маркетологов.

Давайте посмотрим на практический пример:

Есть четыре человека Алиса, Боб, Луи и Лариса. Каждый человек купил разные продукты (книга, игра, футбол, ноутбук, наушники). Скажем, мы знаем, что каждый продукт купил все четыре человека, но не ли Луи купил ноутбук. Что бы вы сказали: Луи могут купить ноутбук?

Ассоциативный анализ (или совместная фильтрация) обеспечивает ответ на эту проблему. Основное предположение заключается в том, что если два человека исполняли подобные действия в прошлом (например, купили аналогичный продукт), более вероятно, что они продолжают выполнять подобные действия в будущем. Если вы внимательно посмотрите на приведенные выше профили клиентов, вы быстро поймете, что в Луи подобное покупаемое поведение Алису. И Луи, и Алиса купили игру и футбол, но не наушники и книгу. Для Алиса мы также знаем, что она купила ноутбук. Таким образом, система рекомендации будет предсказать, что Луи также купит ноутбук тоже.

Следующий фрагмент кода упрощает эту проблему.

Код

Мы рассмотрим следующую проблему: что такое доля клиентов, которые купили оба электронных книги вместе?

## Dependencies
import numpy as np


## Data: row is customer shopping basket
## row = [course 1, course 2, ebook 1, ebook 2]
## value 1 indicates that an item was bought.
basket = np.array([[0, 1, 1, 0],
                   [0, 0, 0, 1],
                   [1, 1, 0, 0],
                   [0, 1, 1, 1],
                   [1, 1, 1, 0],
                   [0, 1, 1, 0],
                   [1, 1, 0, 1],
                   [1, 1, 1, 1]])


## One-liner
copurchases = np.sum(np.all(basket[:,2:], axis = 1)) / basket.shape[0]


## Result
print(copurchases)

Что такое выход этого кода фрагмент?

Объясняя код

Массив данных корзины состоит из данных клиента с одной строкой на один клиент и один столбец на продукт (см. Рисунок выше). Скажем, первые две продукты с индексами колонны 0 и 1 представляют собой онлайн-курсы и последние две продукты с индексами колонны 2 и 3 являются электронными книгами. Значение «1» в ячейке (I, J) указывает, что клиент, который я купил продукт J.

Проблема в том, чтобы найти долю клиентов, которые купили как электронные книги (столбцы 2 и 3). Другими словами, нам нужно подсчитать количество клиентов, которые имеют значение «1» на обоих столбцах 2 и 3. Таким образом, мы сначала выделяем соответствующие столбцы из исходного массива, чтобы получить следующий подпарасы:

print(basket[:,2:])
"""
[[1 0]
 [0 1]
 [0 0]
 [1 1]
 [1 0]
 [1 0]
 [0 1]
 [1 1]]
"""

Работа нарезки гарантирует, что только третий и четвертый столбец – но все строки – остаются в массиве.

Поскольку вы будете интуитивно догадаться, функция numpy all () проверяет, оценивают ли все значения в Numpy Array на «True». Если это так, он возвращает «True», в противном случае он возвращает «ложь». При использовании с аргументом оси функция выполняет эту операцию вдоль указанной оси. Обратите внимание, что аргумент оси является повторяющимся элементом для многих различных функций Numpy. Возьмите свое время, чтобы правильно понять аргумент оси: указанная ось рухнула в одно значение.

Таким образом, результат применения функции All () в подпараметрическом массиве следующий:

print(np.all(basket[:,2:], axis = 1))
# [False False False  True False False False  True]

На простом английском: Только четвертый и последние клиенты купили как электронные книги.

По мере того, как мы заинтересованы в доли клиентов, мы суммируемся над этим логическим массивом (сторона примечания: логическое значение «True» представлено целочисленным значением «1» и «ложного» целочисленной ценностью «0») и Разделить количество клиентов. Результатом является часть клиентов, которые купили оба электронных книги (что 0,25).

Куда пойти отсюда?

Код в этой статье использует несколько расширенных функций Numpy. Если вы серьезно относитесь к вашей карьере в качестве ученого данных, вам нужно учиться Numpy.

Нет никакого пути – так почему бы не решать Numpy Heads-On и станьте Numpy Master? Эта книга использует сочетание практического учебного стиля введения и обучения на основе головоломки на основе последних исследований Образовательная наука. Это эффективно и весело!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

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