Применение неконтролируемого машинного обучения в бизнесе

По данным IBM, Обучение без учителя, также известное как «машинное обучение без учителя, использует алгоритмы машинного обучения для анализа и кластеризации неразмеченных наборов данных. Эти алгоритмы обнаруживают скрытые шаблоны или группы данных без необходимости вмешательства человека». Одним из распространенных методов обучения без учителя является кластеризация.

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

Определение проблемы

«SARAH» — компания по прокату велосипедов, расположенная в Берлине и Гамбурге. Наши данные содержат информацию о 1000 клиентов и информацию об аренде велосипедов в период с января по декабрь 2020 года.

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

ссылка на репозиторий Github: https://bit.ly/3KJVb9r

Исследование данных

Я создал простую панель инструментов для изучения данных с помощью Google Data Analytics. ссылка здесь: https://bit.ly/3xpVFxE

Разработка функций

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

Во-первых, мы преобразуем 'rental_start_date' в столбец даты и времени, из которого мы можем извлечь месяц и год, чтобы создать rental_start_month. и rental_start_year соответственно.

Затем мы можем объединить фрейм данных аренды и клиента вместе в столбцах customer_ID в обоих фреймах данных. Из нового фрейма данных мы можем рассчитать ‘monthly_rent_average’, ‘mean_monthly_rental_revenue’, ‘mean_monthly_rental_duration’.

Наконец, из фрейма данных клиента мы также можем создать 'registration_to_rental_days', который представляет собой количество дней между 'registration_date' клиента. > и 'first_rent_date'.

Разработка модели

Здесь мы построим 2 модели кластеризации. Модели кластеризации K-Means и Mini-Batch K-Means.

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

В то время как Mini-Batch K-means – это модифицированная версия k-средних, которая обновляет центроиды кластера, используя мини-пакеты выборок, а не весь набор данных, что может снизить затраты на вычисления для больших наборов данных. и, возможно, он более устойчив к статистическому шуму. Вы можете прочитать о других методах кластеризации здесь: https://bit.ly/3M0dEib

Для обеих моделей мы установим значение k равным 5. (подробнее об определении этого значения позже 😉)

Сначала мы кодируем столбец пола с помощью порядкового кодировщика, а также нормализуем столбцы customer_age, mean_monthly_rental_revenue,mean_monthly_rental_duration,registration_to_rental_days. Нормализация этих столбцов гарантирует, что все столбцы вносят одинаковый вклад в назначение каждого клиента различным кластерам.

Из scikit-learn мы можем просто импортировать класс K-Means и Mini-Batch K-Means. Основной конфигурацией для настройки обеих моделей является гиперпараметр «n_clusters», установленный для оценки количества кластеров в данных.

Исследуйте результаты модели

В дальнейшем я буду изучать результаты конвейера модели k-средних.

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

Некоторые наблюдения кластеризации K-средних:

  1. Группа 0 включает клиентов с меньшей частотой поездок, но с самым высоким среднемесячным доходом от аренды.
  2. Группа 4 включает тех, кто часто ездит (на работу, в школу), но, возможно, на короткие расстояния.
  3. В то время как группа 1 и группа 3 кажутся похожими как по показателям mean_monthly_rental_avenue, так и по Monthly_rent_average.

Выбор оптимального количества кластеров

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

В этом разделе я буду ссылаться на блестящую статью Индранила Дутта Баруа Шпаргалка по реализации 7 методов выбора оптимального количества кластеров в Python.

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

  1. Метод локтя
  2. Коэффициент силуэта
  3. Индекс Калински-Харабаша

Метод локтя — самый популярный метод определения оптимального количества кластеров. По словам Индранила, «идея метода локтя заключается в том, что объясняемая вариация быстро меняется для небольшого количества кластеров, а затем замедляется, что приводит к локтю».

Согласно документации, KElbowVisualizer реализует метод «локоть», подбирая модель с диапазоном значений для 𝐾. Если линейный график напоминает руку, то «локоть» (точка перегиба на кривой) является хорошим признаком того, что базовая модель лучше всего соответствует этой точке.

С помощью библиотеки Yellowbrick реализуем локоть для определения оптимального количества кластеров для кластеризации методом k-средних.

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

Мы также можем использовать KElbowVisualizer для реализации коэффициента силуэта. Оценка silhouette вычисляет средний коэффициент силуэта для всех образцов. По словам Индранила, «коэффициент силуэта для точки i определяется следующим образом:

где b(i) — наименьшее среднее расстояние от точки i до всех точек в любом другом кластере, а a(i) — среднее расстояние из i из всех других точек в его кластере». Реализуя это для нашей модели K-средних, мы получаем:

Коэффициент силуэта дает оптимальное количество кластеров, равное 2.

Наконец, мы рассмотрим индекс Калински-Харабаша. Оценка calinski_harabasz вычисляет коэффициент дисперсии между кластерами и внутри них.

По словам Индранила, «Индекс рассчитывается путем деления дисперсии сумм квадратов расстояний от отдельных объектов до центра их скопления на сумму квадратов расстояний между центрами скоплений. Чем выше значение индекса Calinski-Harabasz, тем лучше модель кластеризации». Реализуя это для нашей модели K-средних, мы получаем:

Подробнее о выборе количества кластеров читайте здесь: https://bit.ly/3JvMwpE

Как эта кластеризация может помочь маркетингу SARAH?

Создание правильных кластеров клиентов может помочь SARAH во многих отношениях. Некоторые:

  1. Благодаря оптимальной группировке клиентов SARAH может создавать и делиться с клиентами нужными пакетами поездок.
  2. Хорошее понимание кластеров клиентов и конкретных требований к местам может помочь в планировании мест для поездок, т. е. иметь нужное количество велосипедов в операционных точках SARAH за раз.
  3. Правильная кластеризация поможет понять клиентскую базу SARAH и возможные потребности.

Еще раз, ссылка на коды на github: https://bit.ly/3KRjaTO.

Я надеюсь, что это было полезно для вас. С нетерпением жду ваших комментариев и вопросов здесь, а пока вы также можете подписаться на меня в Твиттере и Линкедине.

Если вам понравилась эта статья, вы можете купить мне кофе ☕️.

Вилен Данк😊

Рекомендации

  1. Шпаргалка по реализации 7 методов выбора оптимального количества кластеров в Python автор Индранил Дутта Баруа
  2. Алгоритмы кластеризации с помощью Python от Machine Learning Mastery.