Аналитика данных
October 9, 2023

Как определить наиболее эффективные каналы продвижения с помощью многомерного анализа данных?

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

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

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

Таким будет наш код:

import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# Представим, что у нас есть данные об эффективности каналов (в процентах)
# Каждая строка представляет канал, а каждый столбец - метрика эффективности
# Например: столбец 1 - конверсия, столбец 2 - ROI (возврат инвестиций), столбец 3 - CTR (кликабельность)
# Пример данных
data = np.array([
    [10, 15, 3],  # Реклама в социальных сетях
    [5, 8, 1],    # Электронная почта
    [12, 10, 4],  # Поиск
    [8, 12, 2],   # Реклама на сайтах
    [6, 9, 2]     # Баннерная реклама
])
# Кластеризация с помощью KMeans на 3 кластера (можно выбрать другое количество кластеров)
kmeans = KMeans(n_clusters=3, n_init=10, random_state=42).fit(data)
# Давайте посмотрим, как данные разделились по кластерам
print("Кластеры для каждого канала:")
for i, cluster_label in enumerate(kmeans.labels_):
    print(f"Канал {i + 1} находится в кластере {cluster_label + 1}")
# Визуализация кластеров
plt.scatter(data[:, 0], data[:, 1], c=kmeans.labels_, cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=200, c='red')
plt.xlabel('Конверсия')
plt.ylabel('ROI')
plt.title('Кластеризация каналов продвижения')
plt.show()

Результат выполнения кода:

Кластеры для каждого канала:
Канал 1 находится в кластере 3
Канал 2 находится в кластере 2
Канал 3 находится в кластере 1
Канал 4 находится в кластере 1
Канал 5 находится в кластере 2

Объяснение кода:

  1. import numpy as np: Импорт библиотеки numpy, которая позволяет работать с массивами данных.
  2. from sklearn.cluster import KMeans: Импорт метода кластеризации KMeans из библиотеки scikit-learn.
  3. import matplotlib.pyplot as plt: Импорт библиотеки для визуализации данных.
  4. Определение примерных данных data, где каждая строка представляет канал продвижения, а каждый столбец - метрика эффективности (конверсия, ROI, CTR).
  5. Создание объекта KMeans с указанием количества кластеров (n_clusters=3) и запуск кластеризации на данных.
  6. Вывод информации о том, в какой кластер попал каждый канал.
  7. Визуализация данных с помощью scatter plot, где каждая точка представляет канал, а цвет точек соответствует кластеру. Также отображаются центры кластеров (в виде красных точек).