Что такое машинное обучение?

Машинное обучение - это практика, которая включает обучение системы решению конкретной задачи без явного программирования.

Что означает облако в вычислениях?

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

В этом руководстве мы применим машинное обучение для обучения определенных наборов данных на Google Cloud Platform (GCP). Образцы данных, которые мы будем использовать, относительно малы, поэтому лучше всего подходит CloudSQL.

CloudSQL - это, по сути, MySQL. MySQL - это реляционная база данных с открытым исходным кодом, а Cloud SQL - это MySQL, управляемый Google.

Что означает реляционная база данных?

Реляционная база данных (RDB) - это совокупность нескольких наборов данных, организованных в таблицы, содержащие строки (записи) и столбцы (поля). Стандартный способ доступа к данным в реляционной базе данных и управления ими - через язык структурированных запросов (SQL).

Почему вам может потребоваться использовать CloudSQL вместо локальной MySQL на вашем сервере

я. Безопасность

II. Резервное копирование

iii Глобальная доступность

iv. Автоматическая репликация при необходимости

v. Быстрое соединение

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

Для начала вам необходимо зарегистрировать учетную запись Google Cloud. Затем сделайте шаг вперед, создав проект в консоли Google Cloud Platform. Перейдите по этой ссылке:



Я назвал свой проект Мой тестовый проект. Дайте своему как хотите.

Далее вам необходимо добавить свою платежную информацию. Вы получите бесплатный кредит в размере 300 долларов США, действительный в течение 365 дней, что будет достаточно для вас, чтобы реализовать функции, опробованные в этом руководстве.

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

Откроется страница Cloud SQL. Вы будете создавать экземпляр.

Итак, нажмите Создать экземпляр, выберите ядро ​​базы данных MySQL, а затем выберите Экземпляр второго поколения, который является последней версией Google Cloud SQL для MySQL. и присвойте ему идентификатор экземпляра отношение. Затем выберите место; вы можете выбрать центральную область. Сохраните эти значения по умолчанию и создайте его.

Обычно для передачи данных в GCP их необходимо поместить в облачное хранилище. Облачное хранилище отвечает за постановку любого ввода в облачный SQL. Вы можете перейти по этой ссылке, чтобы создать облачное хранилище. Облачное хранилище Google (GCS) состоит из корзин, которые по сути являются контейнерами, в которых хранятся ваши данные. Создайте сегмент в GCS и назовите его auto-sampletest. Добавьте папку в корзину и назовите ее cloudsql.

Следующим шагом будет запуск Google Cloud Shell. Google Cloud Shell - это среда оболочки для управления ресурсами, размещенными на Google Cloud Platform, которая доступна в течение всего окна браузера. Cloud Shell, среди прочего, обеспечивает доступ из командной строки к экземпляру виртуальной машины в окне терминала, которое открывается в консоли Google Cloud Platform. Вы можете перейти по этой ссылке, чтобы активировать ее.

Как только ваша оболочка будет запущена, вы можете запустить:

git clone https://github.com/imisi-akande/Cloud-BigData-machine-learning.git 

чтобы скопировать файлы базы данных в виртуальную машину из Github. Теперь у вас есть файлы в Google Cloud Shell. Вы можете дважды проверить, изменив каталог в репозитории, как показано ниже:

В Google Cloud Shell запустите эту команду, чтобы поместить файлы в Google Cloud Storage:

Ваше облачное хранилище должно содержать три файла: create_table.sql, nigeria_prisons.csv и rating.csv, как показано ниже:

Файл create_table.sql - это стандартный файл данных SQL. Создает базу данных grade_spark. Он также проверяет и удаляет таблицы Grade, Rating и Prison, если они уже существуют. Затем он создает таблицы Тюрьма, Рейтинг и Оценка с соответствующими столбцами.

На этом этапе перейдите в область Cloud SQL, чтобы вы могли импортировать файлы базы данных из Google Cloud Storage. Щелкните отношение, которое является экземпляром CloudSQL, который вы создали ранее. Щелкните импорт в сведениях об экземпляре. Сначала импортируйте файл create_table.sql.

Затем вы можете начать импортировать файлы CSV в правильном порядке. Порядок импорта важен, потому что файлы зависят друг от друга. Сначала импортируйте файл nigeria_prisons.csv:

Затем следует файл rating.csv:

Набор данных nigeria_prisons.csv включает все штаты в Нигерии, количество тюрем, общее количество заключенных (мужчин и женщин) и их оценочную вместимость. Файл rating.csv состоит из рейтингов, то есть людей, оценивающих вместимость и условия содержания в тюрьме в каждом штате. Таблица «Оценка» в настоящее время пуста. Это потому, что вам еще предстоит запустить систему машинного обучения Grade.

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

Теперь давайте продолжим и исследуем базу данных. Вам необходимо подключиться к базе данных из Cloud Shell. Для этого вам необходимо знать IP-адрес экземпляра Cloud Shell. Перейдите в папку test1 и запустите:

bash ./find_my_ip.sh 

на Cloud Shell.

Перейдите на вкладку Авторизация. Добавьте отображаемый IP-адрес Cloud Shell в раздел авторизованных сетей экземпляра Cloud SQL. Нажмите "Сохранить".

Чтобы подключиться к Cloud SQL, нам нужно получить IP-адрес на вкладке обзора в области экземпляра Cloud SQL.

Затем запустите:

При запуске этой команды он запрашивает пароль. Перейдите на вкладку Пользователи и измените пароль.

Вернитесь в Cloud Shell и введите новый пароль. При добавлении пароля у вас появляется доступ к оболочке mysql

Давай зададим вопрос.

Запустить :

use grade_spark 

для подключения к базе данных.

Запустить:

show tables

для отображения таблиц.

Запустить:

select * from Prison

для выбора всех столбцов из таблицы "Тюрьма".

Запустить:

select * from Rating 

для выбора всех столбцов из рейтинговой таблицы

Файл rating.csv будет служить в качестве набора данных для обучения позже в этом руководстве.

Когда вы бежите:

select * from Grade 

вы получите пустой стол.

Давайте сделаем более сложный запрос.

Запустить:

select * from Prison where total>capacity 

и мы получаем около 16 состояний, которые соответствуют этому критерию.

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

Вначале основным способом использования Hadoop было написание программ сокращения карты на Java. Однако этот процесс был слишком многословным, и людям пришла в голову идея написать программы сокращения карты на языках сценариев и запустить их в кластере Hadoop. Эта технология получила название Свинья.

Вторая технология называется Улей. Hive используется, когда у вас есть структурированные данные и схема. Вы связываете эту схему поверх ваших структурированных данных, хранящихся в распределенной файловой системе. В случае Hadoop вы сохраняете его в Распределенной файловой системе Hadoop (HDFS), после чего вы сможете выполнять запросы с помощью Hive.

Современные программы в экосистеме Hadoop обычно пишутся на Spark. Spark работает быстро и имеет множество библиотек, которые позволяют работать с SQL, потоковой передачей данных и машинным обучением.

Dataproc - это программа, управляемая Google. Это быстрый, простой в использовании, полностью управляемый облачный сервис для запуска кластеров Apache Spark и Apache Hadoop в более простом и экономичном способ. Dataproc - это кластер машин: он состоит из главного узла и рабочих узлов, и вы можете изменить его размер, добавив или удалив некоторые рабочие узлы. Преимущество интеграции Dataproc с Google Cloud Platform - это возможность хранения данных с Google Cloud Storage. В этом руководстве мы будем использовать Dataproc для обучения наших данных и для прогнозов.

Вернемся к нашему Cloud Shell. Вы можете перейти по этой ссылке, чтобы создать кластер Dataproc. Дайте своему Dataproc имя cluster-1. Убедитесь, что вы выбрали ту же зону, что и ваш экземпляр CloudSQL, чтобы уменьшить задержку. Тип машины для главного и рабочих узлов должен быть 2vCPU (7,5 ГБ памяти, n1-стандарт-2). Наш набор данных невелик и будет хорошо работать с этой конфигурацией. Вы можете оставить оставшуюся опцию по умолчанию; затем создайте свой кластер.

После создания кластера вы можете отправлять задания в кластер. Для этого вам необходимо скопировать наши файлы в облачное хранилище с помощью gsutil.

Добавьте папку в корзину auto-sampletest в области облачного хранилища, перейдите в папку test2 в облачной оболочке и запустите:

Теперь ваша корзина должна содержать каталог sparkml, а ваша область хранения должна выглядеть следующим образом:

Вам необходимо изменить IP-адрес экземпляра CloudSQL в

/sparkml/train_and_apply.py 

на текущий IP-адрес CloudSQL в оболочке Cloud. Перейдите в область CloudSQL, чтобы проверить IP-адрес

Вы можете использовать vim или встроенный текстовый редактор для Cloud Shell для редактирования адреса в оболочке. В файле train_and_apply используется PySpark, который представляет собой Python API для Spark. Он использует пакет MLlib Spark, который расширяет возможности машинного обучения благодаря его простоте, масштабируемости и легкой интеграции с другими инструментами.

Запустить :

vi sparkml/train_and_apply.py

Далее в облачной оболочке

запустить:

bash authorize_dataproc.sh 

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

При запуске команды он запрашивает некоторые параметры, такие как имя кластера, зону и количество рабочих. Перейдите в область CloudSQL, чтобы еще раз проверить параметры:

Вставьте эти обязательные параметры вместе с командой в Cloud Shell. Затем он вводит в экземпляр CloudSQL три IP-адреса, чтобы эти три машины, составляющие Dataproc, могли подключиться к CloudSQL.

Теперь, когда исправление выполнено успешно, вы можете отправлять задания. Заполните необходимые поля, как они появляются в области отправки вакансий. Регион является глобальным, имя кластера - cluster-1, тип задания - PySpark, поскольку мы используем пакет PySpark для обучения набора данных в train_and_apply.py - главный файл Python.

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

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

Теперь, когда работа завершена, нам нужно удалить авторизацию для Dataproc. Dataproc - это ресурс для конкретного задания, поэтому, когда его работа будет выполнена, вы можете безопасно деавторизовать и удалить его. Вы можете перейти в каталог test1 и запустить:

bash authorize_cloudshell.sh

для авторизации виртуальной машины Cloud Shell. Благодаря этому вы сможете получить доступ к базе данных и выполнить MYSQL в среде Cloud Shell.

Теперь запустите:

Убедитесь, что вы заменили хост своим IP-адресом Cloud Shell. Введите свой пароль, и теперь мы подключены к базе данных через виртуальную машину Cloud Shell.

Давай зададим вопрос.

Запустить:

use grade_spark

для доступа к базе данных.

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

select * from Grade

для отображения всех оценок для разных людей.

Теперь давайте посмотрим на оценки тюрем штатов по каждому отдельному человеку.

Запустить:

select g.personid, g.prisonid, g.prediction, p.states, p.prisons, p.male, p.female, p.total, p.capacity, p.rating from Grade as g, Prison as p where g.prisonid = p.id and g.personid = 13;

В этом запросе вы выбираете personid, Prisonid, прогноз и информацию о тюрьмах штатов из Grade g и Prison p, где Идентификатор тюрьмы совпадает, а personid - 13.

Итак, это пять лучших штатов и их тюрем, оцененных этим конкретным человеком.

Выполните другой запрос, но на этот раз измените personid на 7, чтобы увидеть другое мнение.

select g.personid, g.prisonid, g.prediction, p.states, p.prisons, p.male, p.female, p.total, p.capacity, p.rating from Grade as g, Prison as p where g.prisonid = p.id and g.personid = 7;

Итак, на этот раз это пять штатов, получивших наибольший рейтинг в рейтинге Человека Б, и их тюрьмы, основанные на прогнозах.

Надеюсь, вы нашли этот урок полезным. Ждите статей о различных технологиях машинного обучения. А пока не стесняйтесь оставлять свои комментарии.

Источник данных: Тюремная служба Нигерии.