Как вы можете использовать хранилище данных Google для создания однородных групп людей

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

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

1. Обстановка: как сформировать похожие группы из разнородных людей?

Моей целью было создать сегментацию людей по нескольким показателям. Чтобы упростить и сохранить конфиденциальность, предположим, что я хотел создать 4 группы сотрудников для проведения семинаров по использованию Excel. Я хотел бы создать однородные группы людей на основе их сходства с точки зрения:

  • стаж, измеряемый как количество дней с момента прихода в компанию.
  • уровень владения Excel перед семинаром, оценивается самими сотрудниками по шкале от 1 до 5
  • среднее время, проведенное за компьютером в день, измеряемое самим компьютером в минутах (в настройках по умолчанию или через установленное приложение).

Здесь вы могли заметить, что все рассматриваемые индикаторы - это непрерывные числовые переменные. Если они не относятся к вашему конкретному варианту использования, я бы порекомендовал вам превратить категориальные переменные в числовые. Например, вот что я сделал для качественного пункта «знание Excel»: установив «Я ничего не знаю о Excel» равным 1 и «Я отлично владею Excel, включая VBA» равным 5, я превратил качественный показатель в количественный.

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

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

Чтобы завершить эту первую часть, позвольте мне представить набор данных, который мы будем использовать в этом примере:

2. Построение решения: как создать и запустить модель k-средних?

Начнем с того, что кластеризация k-средних - это алгоритм неконтролируемого машинного обучения, который направлен на группировку схожих точек данных вместе. Это именно то, что нам здесь нужно. Если вы хотите узнать больше о том, как работает кластеризация k-средних, я рекомендую эту статью от коллеги-писателя, в которой вы также будете руководствоваться примером с использованием Python:



В основном алгоритм кластеризации k-средних будет начинаться с x точек (x определяется заранее пользователем), помещенных в рамку переменных y из вашего набора данных. Из этих начальных точек x самые близкие точки с точки зрения их сходства по переменным y собираются с предыдущими точками каждого кластера. В конечном итоге весь многомерный кадр делится на x частей, каждая из которых определяет кластер схожих точек данных. Таким образом, относительно легко следовать принципу кластеризации k-средних - и это одна из причин, почему я решил использовать эту модель, а не другую. Если математическое исполнение, стоящее за этим, сложно и утомительно, его обоснование относительно легко понять.

В нашем примере мы хотим получить 4 кластера (это x из объяснения выше), и у нас есть 3 переменных (то есть y): трудовой стаж, уровень владения Excel до семинара и среднее ежедневное время, проведенное за компьютером. Модель кластеризации k-средних уже встроена в BigQuery от Google, поэтому нет необходимости изобретать велосипед. Давайте просто применим два следующих шага, как они описаны в документации BigQuery ML.

Шаг 1. Постройте модель

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

Шаг 2: Запустите модель

Теперь, когда модель создана, вы можете использовать следующие строки, чтобы применить ее к вашему набору данных. Мы просто исключаем автоматически созданный столбец «near_centroids_ distance», так как значение этого поля не должно входить в параметры работающей модели.

Обратите внимание, что использование алгоритма машинного обучения здесь значительно упрощено. Следовательно, шаги, предпринятые здесь, строго говоря, не соответствуют «машинному обучению». Моя цель здесь скорее состоит в том, чтобы использовать мощные инструменты, такие как алгоритм кластеризации k-средних, чтобы помочь решить конкретную проблему, которая также может быть решена другими способами. Я хочу продемонстрировать, что машинное обучение также доступно людям с небольшим или нулевым инженерным образованием и может применяться в большом количестве случаев.

3. Получение ответа: как интерпретировать результаты модели?

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

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

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

Заключение

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

Вот почему три описанных здесь шага необходимы, если вы хотите воспроизвести эту методологию:

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

Вам понравилась эта статья? Стань участником и присоединяйся к растущему сообществу любознательных людей!