Я предполагаю, что ваша первая реакция на заголовок этой статьи будет «ни за что!» — Я слышал, вы думаете, что это «невозможно!» — Все примеры, которые вы видели в Интернете, указывают на то, что если вы хотите заниматься машинным обучением, вы должны знать, как программировать на таких языках, как Python, используя такие фреймворки, как Tensor Flow и Scikit-learn.

Позвольте мне познакомить вас с машинным обучением Google с помощью BigQuery. В этой технической пошаговой статье показано, как создать простую регрессионную модель, используя только операторы SQL. Читайте дальше, чтобы узнать, как!

Шаг 1. Примеры наборов данных

Я решил использовать знаменитый набор данных Kaggle Titanic для своей первой задачи. Огромный набор данных позволяет машинным обучающимся определять функции, которые можно использовать для прогнозирования, выживет ли пассажир или нет. Например, если пассажир — женщина (функция 1), ему 36 лет (функция 2), и он сидит во 2-м пассажирском классе (функция 3), модель сама определит, выживет она или нет.

Есть 2 CSV-файла — обучающий и тестовый. Очевидно, train будет использоваться для «обучения» модели, а test — для выполнения модели и предсказания, выжили пассажиры или нет.

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

Загрузите CSV-файлы обучения и тестирования с Kaggle, разархивируйте их, а затем нажмите кнопку ДОБАВИТЬ ДАННЫЕ, чтобы добавить наборы данных в свой проект BigQuery. Обратите внимание, что для схемы необходимо выбрать Автоопределение.

Шаг 2: Исследуйте набор данных «поезд»

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

Шаг 3. Создайте запрос

Я решил использовать поля Pclass, Sex, Age, Cabin и Embarked в качестве функций и включил поле Survive label в качестве первого поля, которое будет определять, выжил пассажир или нет.

SELECT IFNULL(Survived, 0) AS label,
IFNULL(Pclass, -1) AS Pclass,
CASE 
  WHEN Sex = "male" THEN 1
  WHEN Sex = "female" THEN 0
  ELSE -1
  END AS Sex,
IFNULL(Age, 0) AS Age,
IFNULL(Cabin, "0") AS Cabin,
IFNULL(Embarked, "0") AS Embarked,
FROM `your-project-name.titanic.train` 

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

Шаг 4: Создайте свою модель

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

#standardSQL
CREATE MODEL `your-project-name.titanic.titanic_model`
OPTIONS(model_type='logistic_reg') AS

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

Обратите внимание, что «predicted_label» модели будет определять, выживет ли пассажир или нет, на основе выбранных нами функций.

Шаг 5. Используйте свою модель для прогнозирования результатов

Используя тот же оператор SELECT, что и раньше, но на этот раз мы получим данные из набора данных «test», вставьте их между скобками следующего оператора SELECT FROM вашей модели. Мы выберем поле predicted_label модели, чтобы определить, выживет ли пассажир (1) или нет (0).

SELECT predicted_label AS Survived, *
FROM
  ML.PREDICT(MODEL `your-project-name.titanic_model`, ( ...
      INJECT SQL statement here...
...)

Теперь ваши результаты должны предсказать, что некоторые пассажиры выжили (predicted_label), а другие нет:

Заключение

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