Наука о данных, Редакция, Программирование

Статистика маркетинговой аналитики с использованием машинного обучения

Использование науки о данных для погружения в маркетинговую аналитику с помощью методов сегментации клиентов и машинного обучения

Автор (ы): Сания Парвиз, Роберто Ириондо



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

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

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

Сегментация данных клиентов

Сегментация данных о клиентах - это процесс упорядочивания (сегментации) целевых клиентов на разные группы на основе демографических или поведенческих данных, чтобы можно было более точно адаптировать маркетинговые планы для каждой группы. Это также жизненно важная часть правильного выделения маркетинговых источников, потому что, ориентируясь на определенные группы клиентов, можно добиться более высокой окупаемости инвестиций (ROI) в наши маркетинговые усилия.

Сегментация клиентов - кластеризация данных (обучение без учителя)

Обучение без учителя - это современный подход, используемый для сегментации данных о клиентах. Он отлично подходит для сегментации данных о клиентах, поскольку собирает наиболее вероятные друг другу точки данных и точно объединяет их вместе.

Кластеризация - это метод неконтролируемого машинного обучения, который видит группы или кластеры в данных извне, и знание их заранее невероятно полезно. Вот некоторые из его преимуществ:

  • Он может привлечь непредвиденные или незнакомые аналитику группы клиентов.
  • Он устойчив и может применяться для широкого диапазона данных.
  • Это снижает потребность в обширных знаниях о связях между демографическими характеристиками клиентов и их поведением.
  • Оперативно также действовать. Он масштабируется до огромных наборов данных.

Вот некоторые из ограничений кластеризации:

  • Созданное накопление клиентов может быть трудно интерпретируемым.
  • Если данные не основаны на доставке потребителем (например, приобретенных продуктах или услугах), может быть неочевидно, как использовать наблюдаемые кластеры данных.

Связи в данных клиентов

При использовании кластеризации для сегментации клиентов важно определить сходство или очень внимательно определить, какие клиенты похожи.

Например

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

Поведение клиентов, например то, как они реагировали на маркетинговые стратегии в прошлом, обычно являются наиболее важными данными.

Стандартизация данных клиентов

При определении клиентов на основе непрерывных переменных необходимо изменить масштаб этих параметров, чтобы данные были в аналогичных масштабах.

Например:

Возьмите возраст и зарплату. Они взвешены на очень разных вычислениях. Заработная плата человека может составлять 90 000 долларов, а его возраст - 40. Следовательно, наша методология должна быть точной в отношении того, насколько значительным является изменение одной из этих переменных, а также изменения других с точки зрения связь с клиентом. Создание таких презентаций вручную для каждой переменной может оказаться сложной задачей. Таким образом, для их согласования в стандартном масштабе требуется стандартизация данных.

Использование Z-показателя - это способ стандартизации параметров кластеризации с помощью следующих шагов:

  • Уменьшите среднее значение данных для каждой точки данных.
  • Уменьшите среднее значение данных для каждой точки данных.

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

Где,

zi = i-е стандартизованное значение

x = все значения

mean (x) = среднее значение всех значений x

std (x) = стандартное отклонение значений x

Пример стандартизации данных о возрасте и доходах клиентов

Следующий код Python стандартизирует данные о возрасте и доходе клиентов.

Импортируйте все необходимые пакеты.

import numpy as np
import pandas as pd

Генерация случайных данных о доходах и возрасте клиентов.

np.random.seed(100)
df = pd.DataFrame()
df['salary'] = np.random.normal(80000, scale=10000, size=100)
df['age'] = np.random.normal(50, scale=10, size=100)
df = df.astype(int)
df.head()

Вычислите стандартное отклонение обоих столбцов одновременно с помощью функции std.

df.std()

Вычислите среднее значение двух столбцов.

df.mean()

Стандартизируйте переменные, используя их стандартное отклонение и среднее значение.

df['z_salary'] = (df['salary'] -df['salary'].mean())/df['salary'].std()
df['z_age'] = (df['age'] - df['age'].mean())/df['age'].std()
df.head()

Проверить стандартизацию.

df.std()

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

Расчет расстояния между точками данных клиентов

Давайте посчитаем расстояние между тремя покупателями.

Импортируйте все необходимые пакеты.

import math

Создайте данные о возрасте и доходе.

ages = [50, 40, 30]
salary = [50000, 60000, 40000]

Рассчитайте расстояние между первым и вторым покупателем /

math.sqrt((ages[0] - ages[1])**2 + (salary[0] - salary[1])**2)

Рассчитайте расстояние между первым и третьим покупателями.

math.sqrt((ages[0] - ages[2])**2 + (salary[0] - salary[2])**2)

Здесь расстояние между первым и третьим потребителями, а также первым и вторым покупателями различается на выходе.

Стандартизируйте возраст и заработную плату, используя среднее значение и стандартное отклонение.

z_ages = [(age - 40)/10 for age in ages]
z_incomes = [(salary - 50000)/10000 for salary in salaries]

Опять же, рассчитайте расстояние между стандартизованными оценками первого и второго клиентов.

math.sqrt((z_ages[0] - z_ages[1])**2 + (z_salaries[0] - z_salaries[1])**2)

Рассчитайте расстояние между стандартизованными оценками первого и третьего клиентов.

math.sqrt((z_ages[0] - z_ages[2])**2 + (z_salaries[0] - z_salaries[2])**2)

Здесь после стандартизации расстояние между первым и вторым потребителями и расстояние между первым и третьим потребителями одинаковы.

К-означает кластеризацию

Кластеризация K-средних - это распространенный метод обучения без учителя с широким спектром приложений. Это очень просто, потому что масштабируется до обширных наборов данных и довольно хорошо работает в реальных ситуациях.

Кластеризация K-средних - это алгоритм, который пытается найти лучший способ группировки точек данных в k отдельных групп, где k - параметр, заданный алгоритму. Затем алгоритм работает итеративно, чтобы попытаться найти лучшую группировку.

Для выполнения этого алгоритма необходимы следующие шаги:

  • Алгоритм начинается со случайного выбора k точек в пространстве в качестве центроидов кластеров. Затем каждая точка данных назначается ближайшему к ней центроиду.
  • Центроиды обновляются до среднего значения всех назначенных им точек данных. Затем точки данных переназначаются ближайшему к ним центроиду.

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

Пример: кластеризация по шкале K-среднего для данных о зарплате и возрасте клиентов

Выполните кластеризацию по K-среднему для данных о зарплате и возрасте клиентов.

Импортируйте все необходимые библиотеки.

import pandas as pd
import matplotlib.pyplot as plt
from sklearn import cluster
%matplotlib inline

Импортируйте данные клиента в формате CSV.

df = pd.read_csv('/content/customer.csv')
df.head()

Создайте столбцы стандартизированных значений для значений зарплаты и возраста и сохраните их в переменных z_salary и z_age.

df['z_salary'] = (df['salary'] - df['salary'].mean())/df['salary'].std()
df['z_age'] = (df['age'] - df['age'].mean())/df['age'].std()

Постройте данные о клиенте.

plt.scatter(df['salary'], df['age'])
plt.xlabel('Salary')
plt.ylabel('Age')
plt.show()

Выполните кластеризацию k-средних с четырьмя кластерами.

model = cluster.KMeans(n_clusters=4, random_state=10)
model.fit(df[['z_salary','z_age']])

Создайте столбец с именем кластер, содержащий метку кластера, которому принадлежит каждая точка данных.

df['cluster'] = model.labels_
df.head()

Постройте данные.

colors = ['r', 'b', 'k', 'g']
markers = ['^', 'o', 'd', 's']
for c in df['cluster'].unique():
d = df[df['cluster'] == c]
plt.scatter(d['salary'], d['age'], marker=markers[c], color=colors[c])
plt.xlabel('Salary')
plt.ylabel('Age')
plt.show()

В этом случае график данных с цветом / формой, указывающим, какому кластеру назначена каждая точка данных.

Данные большой размерности и уменьшение размерности

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

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

Анализ главных компонентов (PCA) используется для уменьшения размерности. PCA - это метод преобразования данных. Он принимает исходные измерения и создает новые измерения, которые отражают наибольшую вариативность данных.

Пример: уменьшение размерности данных большой размерности с помощью PCA

Импортируйте все необходимые пакеты.

import pandas as pd
from sklearn import cluster
from sklearn import decomposition
import matplotlib.pyplot as plt
%matplotlib inline

Импортируйте данные клиента в формате CSV.

df = pd.read_csv('/content/pca_data.csv')
df.head()

Стандартизируйте три столбца и сохраните имена стандартизированных столбцов в списке.

cols = df.columns
zcols = []
for col in cols:
  df['z_' + col] = (df[col] - df[col].mean())/df[col].std()
  zcols.append('z_' + col)
df.head()

Выполните кластеризацию k-средних по стандартизированным оценкам.

model = cluster.KMeans(n_clusters=4, random_state=10)
df['cluster'] = model.fit_predict(df[zcols])

Выполните PCA для данных.

pca = decomposition.PCA(n_components=2)
df['pc1'], df['pc2'] = zip(*pca.fit_transform(df[zcols]))

Постройте кластеры в пространстве уменьшенной размерности.

colors = ['r', 'b', 'k', 'g']
markers = ['^', 'o', 'd', 's']
for c in df['cluster'].unique():
  d = df[df['cluster'] == c]
plt.scatter(d['pc1'], d['pc2'], marker=markers[c],    color=colors[c])
plt.show()

Как показано на рисунке 21, оси x и y здесь являются главными компонентами и их нелегко интерпретировать. Однако, визуализируя кластеры, мы можем понять, насколько хороши кластеры, исходя из того, насколько они перекрываются.

Последние мысли

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

Представление расширенного анализа и создание визуализаций для облегчения понимания обработки - отличный метод для понимания данных о клиентах. Библиотека Matplotlib и seaborn - отличная библиотека для создания адекватной визуализации. Когда мы разрабатываем конвейер аналитики, первым шагом является построение модели данных.

Модель данных - это сводка источников данных, над которыми мы будем работать, их связи с другими источниками данных, где именно данные из определенного источника будут поступать в конвейер и в каком формате (например, файл Excel , база данных, JSON из интернет-источника или REST API). Модель данных для конвейера появляется со временем по мере изменения источников данных и методов.

Маркетинговые данные традиционно включают данные всех трех типов. Первоначально большинство точек данных начинаются с разных (в основном ручных) источников данных, поэтому значения для объекта могут иметь разную длину. Значение для одного поля не будет равняться значению других полей из-за различных имен полей, а некоторые строки, получающие данные даже из точных источников, также могут отклонять значения для некоторых полей.

Тем не менее, структурированные и полуструктурированные данные в настоящее время доступны быстро, в основном благодаря технологиям, которые часто используются для реализации аналитики цифровых свойств. Такие данные имеют два формата - структурированный и неструктурированный. Неструктурированные данные модны и не содержат схем. Обработка данных и споры - это отправные точки и очень ценные части конвейера обработки данных. Обычно важно, если инженеры данных или специалисты по обработке данных готовят данные посредством очистки и предварительной обработки данных, чтобы иметь некоторые знания о данных в предметной области.

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

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Мнения, выраженные в этой статье, принадлежат автору (авторам) и не отражают точку зрения какой-либо компании (прямо или косвенно), связанной с автором (авторами). Эта работа не претендует на то, чтобы стать конечным продуктом, а скорее отражает текущее мышление, а также является катализатором для обсуждения и улучшения.

Все изображения принадлежат авторам, если не указано иное.







«Спонсоры | Узнайте, как стать спонсором с помощью ИИ.
Хотите ли вы привлечь внимание читателей к своему продукту, привлечь высокорелевантную нишевую аудиторию или… спонсоры.towardsai .сеть"



Дальнейшее чтение