Новая парадигма на примере Google BigQuery

Традиционный подход извлечения данных из хранилища данных или озера данных - затем их очистка, преобразование и построение модели постепенно заменяется новым подходом [1], который называется

Принесите вычисления к данным или

Применение машинного обучения / алгоритмов к данным

Тем более, что крупные поставщики, такие как Google, Amazon и Microsoft, связывают такие сервисы, как базы данных и хранилища данных, с сервисами машинного обучения, больше нет необходимости интегрировать данные в другие платформы или системы. В таких сервисах, как BigQuery от Google, традиционные системы баз данных даже расширяются внутри с помощью инструментов машинного обучения [2].

Преимущества новой парадигмы

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

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

Третий момент - это упрощение программируемости. Например, аналитики могут легко выполнять задачи машинного обучения только с помощью SQL. Далее я хотел бы проиллюстрировать это на простом примере в Google BigQuery. Если вы хотите глубже погрузиться в тему модернизации Data Platform, вам может быть интересна эта статья.

Пример с BigQuery ML

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

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

Шаг 1. Создайте модель

CREATE OR REPLACE MODEL
 DATA.iowa_bottle_clusters OPTIONS (model_type=’kmeans’,
 num_clusters=3, distance_type = ‘euclidean’) AS
SELECT
 item_description,
 AVG(state_bottle_cost) AS state_bottle_cost,
FROM
 `bigquery-public-data.iowa_liquor_sales.sales`
WHERE
 EXTRACT(YEAR FROM date) = 2018
GROUP BY
 item_description;

Выше вы можете видеть, что я использовал алгоритм k-Means и установил параметр для количества кластеров равным трем. Моя идея для этого, как я уже сказал, очень упрощенного примера состоит в том, чтобы просто использовать переменную state_bottle_paid (сумма, которую Отдел алкогольных напитков заплатил за каждую заказанную бутылку спиртных напитков), чтобы разделить ее на три ценовые категории.

Шаг 2. Оценка модели

После создания модели BigQuery автоматически предоставит вам некоторые метрики. Это позволяет оценить алгоритмы кластеризации. Для индекса Дэвиса-Болдина целью будет наименьшее возможное значение [3].

Еще одна замечательная функция - это график потерь, который мы получаем.

С участием

SELECT * FROM ML.TRAINING_INFO(MODEL Data.iowa_bottle_clusters);

и

SELECT davies_bouldin_index FROM ML.EVALUATE(MODEL Data.iowa_bottle_clusters);

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

Шаг 3 - Прогноз

С помощью ML.PREDICT мы увидим, к какому кластеру принадлежит тот или иной бренд.

SELECT
 centroid_id,
 item_description,
 state_bottle_cost
FROM
 ML.PREDICT(MODEL Data.iowa_bottle_clusters,(SELECT
  item_description,
  AVG(state_bottle_cost) AS state_bottle_cost
 FROM
  bigquery-public-data.iowa_liquor_sales.sales
 WHERE
  date <= '2018-02-02'
  AND date >='2018-01-01'
 GROUP BY
  item_description) )
 ORDER BY
  centroid_id;

Шаг 4. Изучите результаты

Теперь давайте проверим, имеет ли результат какой-либо смысл (конечно, это очень упрощенный пример), но давайте посмотрим. Вот примеры из трех кластеров:

Только один товар в первом кластере, который кажется продуктом высокого класса:

1 - Коньяк Remy Martin Louis Xiii - 1599,19

Во второй группе у нас намного больше бутылок, которые, похоже, относятся к среднему классу, например:

2 - The Dalmore Cigar Malt Scotch - 93,33

2 - Односолодовый виски Kavalan Sherry Oak - 73,33

2 - Джим Бим Дистиллерс Шедевр - 104,91

И группа продуктов, которые вы, вероятно, запили бы кока-колой или другими смесями:

3 - Виноград Смирнова - 8,25

3 - Smirnoff Sours Green Apple - 8,25

3 - Фруктовый пунш Бернетта - 4,48

Так что в итоге результаты не так уж и плохи - но, конечно, их можно оптимизировать. Все, что вам здесь нужно, это BigQuery и немного базового SQL.

Вывод

В этой короткой статье я хочу предоставить некоторые теоретические базовые знания о парадигме переноса машинного обучения или алгоритма на данные. К тому же преимущества перед классическими подходами очевидны. Особенно с точки зрения настройки и обслуживания, но также и с точки зрения фактического процесса анализа данных с точки зрения экономии времени. В конце концов, я продемонстрировал, насколько легко теперь можно разработать модель машинного обучения, используя только SQL и Google BigQuery. Для получения дополнительной информации перейдите по ссылкам ниже.

Источники и дополнительная литература

[1] Даунс, Б. Н., Офхейм, Д. М., Хейл, В., Си, Л., Донехауэр, Л. А., и Калра, Д. (2014). Практический пример доведения вычислений до данных. Журнал биомолекулярных методов: JBT, 25 (Suppl), S5.

[2] Google, Что такое BigQuery ML? (2020)

[3] Дэвис, Д.Л., Боулдин, Д.В. (1979). «Мера разделения кластеров». IEEE Transactions по анализу шаблонов и машинному анализу. ПАМИ-1 (2), С.224–227.