Краткое введение в машинное обучение - инструменты, библиотеки и типы данных

Машинное обучение - это обширное пространство, слишком обширное, чтобы его можно было охватить в статье или даже в одной книге. Сегодня во всех отраслях, от сельского хозяйства до разработки высокотехнологичных приложений, машинное обучение в той или иной форме используется для принятия более эффективных бизнес-решений. Если вы только начали заниматься этой эрой интеллекта, она может стать ошеломляющей уже в самом начале. Итак, я здесь, чтобы сделать ваше путешествие гладким и шаг за шагом ввести вас в мир машинного обучения. Обычно я использую Python на практике, поэтому эта статья основана на Python, но вы не должны оставаться ограниченными, каждая задача, выполняемая на Python, может быть выполнена с использованием R, MATLAB или различных других механизмов AutoML, таких как Azure Machine Learning Studio.

Почему важно следовать подходу кейс-стади? Что ж, это просто. Сначала вам нужно знать, кто использует ML, где и как используется в настоящее время. С точки зрения статистики этот метод называется описательной статистикой. Он имеет дело с пониманием истории вещества и затем формирует прочную основу для развития над этим. Например, как отрасль недвижимости использует машинное обучение? Это может быть прогноз цен на строительство домов на основе таких факторов, как качество земли, окружающая среда и т. Д., Чтобы строительная компания могла устанавливать цены на свои дома, чтобы максимизировать отдачу от инвестиций. Точно так же в финансовой индустрии биржевой маклер должен был бы изучить историю цен на акции, прежде чем предсказывать, как они будут работать в долгосрочной перспективе, чтобы он мог рассчитать свои инвестиции для наилучшего возврата инвестиций.

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

  1. Автоматизация распознавания болезни: обученные врачи могут просматривать и оценивать только ограниченный объем пациентов или изображений пациентов (рентгеновские снимки, сонограммы и т. Д.). Машинное обучение можно использовать для выявления болезни, что снижает выгорание врачей. Например, Google обучил модель глубокого обучения для обнаружения рака груди и Стэнфордские исследователи использовали модели глубокого обучения для диагностики рака кожи.
  2. Персонализированный опыт работы с чат-ботами в реальном времени: это один из наиболее часто встречающихся вариантов использования машинного обучения. На банковских веб-сайтах чат-боты обучаются выполнять базовые операции, такие как показывать ваш кредитный и дебетовый баланс, переводить деньги на счет, подавать жалобу и т. Д. На сайтах бронирования отелей или путешествий есть чат-боты, чтобы упростить процессы бронирования и каталогизации.
  3. Выявление действий на основе взаимодействий с клиентами: аналитика в реальном времени с использованием инструментов машинного обучения, таких как анализ настроений, может помочь организациям оценить вероятность закрытия сделки или уровень лояльности клиента. Персональные рекомендации на основе машинного обучения могут заинтересовать клиентов и порадовать их информацией и предложениями, которые им интересны.
  4. Управление человеческими ресурсами: я уверен, что все слышали о системах отслеживания кандидатов (ATS), которые в основном используются организациями для отбора подходящих кандидатов на определенную должность. Хотя это широко обсуждается, цель состоит в том, чтобы понять профиль кандидата с помощью решений, реализованных на ML, и предоставить лучших кандидатов команде по найму, уменьшив их ручные усилия по составлению короткого списка кандидатов.

Список не является исчерпывающим и никогда не может быть исчерпывающим. В наши дни машинное обучение глубоко укоренилось практически во всех отраслях, и скоро наступит время, когда все образовательные форматы будут включать в свои учебные программы какую-то часть искусственного интеллекта. Давайте теперь начнем двигаться к данным, потому что это «топливо», на котором работает все машинное обучение. По определению непрофессионала, машинное обучение фокусируется на разработке компьютерных программ, которые могут получать доступ к данным и использовать их для обучения. Но что конкретно такое данные?
Данные могут принимать множество форм: от числовых до текстовых, от изображений до видео и многих других форматов. Но один из ключей к пониманию здесь заключается в том, что алгоритмы машинного обучения требуют, чтобы вы давали им входные данные в числовом форматировании. В следующем разделе мы увидим различные типы доступных данных и то, как они передаются в алгоритм машинного обучения.

Работа с общими типами данных

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

Табличные данные

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

# Reading Tabular Data in Python
import pandas as pd
data = pd.read_csv('data/gapminder_gdp_oceania.csv')
print(data)

Данные изображения

Мы знаем, что такое изображения, но вопрос в том, как алгоритмы машинного обучения работают с изображениями? И ответ - в виде цифр. Чтобы понять, как это работает, давайте более подробно рассмотрим увеличенное изображение. Посмотрите на персонажа, изображенного ниже:

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

  1. Изображения в градациях серого. Каждый пиксель может быть представлен одним числом, которое обычно находится в диапазоне от 0 до 255. Это значение определяет, насколько темным будет пиксель (например, 0 - черный, а 255 - ярко-белый).
  2. Цветные изображения. Каждый пиксель может быть представлен вектором из трех чисел (каждое в диапазоне от 0 до 255) для трех основных цветовых каналов: красного, зеленого и синего. Эти три значения красного, зеленого и синего (RGB) используются вместе для определения цвета этого пикселя. Например, фиолетовый может быть представлен как 128, 0, 128 (смесь умеренно интенсивного красного и синего без зеленого).

Глубина. Количество каналов, необходимое для представления цвета, называется глубиной цвета или просто глубиной. Для изображения RGB глубина равна 3, поскольку есть три канала (красный, зеленый и синий). Напротив, изображение в градациях серого имеет глубину 1, потому что есть только один канал.

Кодирование изображения. Изображение может быть воспроизведено или закодировано численно, если нам известно положение каждого пикселя по горизонтали, положение каждого пикселя по вертикали и цвет каждого пикселя. Размер вектора, необходимый для любого изображения, будет (высота * ширина * глубина).
В отношении изображений следует отметить один важный момент: размер вектора, необходимый для кодирования изображения, и фактический размер изображения - это две разные вещи. Размер изображения в пикселях - это просто пиксели (высота x ширина). Глубина проявляется, когда нам нужно закодировать изображение в вектор.
Например, возьмите изображение в формате RGB, имеющее размеры 4x4. Размер этого изображения всегда будет 16 пикселей. Но поскольку он имеет 3 канала (R, G, B), каждый пиксель будет содержать 3 различных значения для этих цветов. Следовательно, вектор, который будет представлять это изображение, будет иметь размер 3x (4x4) пикселя.

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

# Reading images using OpenCV Python module
import cv2
img = cv2.imread("FILE_NAME.png")
# Reading images using Image.IO
import pathlib
import imageio
import numpy as np

# Glob the training data and load a single image path
training_paths = pathlib.Path('../input/train').glob('*/images/*.png')
training_sorted = sorted([x for x in training_paths])
im_path = training_sorted[45]
im = imageio.imread(str(im_path))

Текстовые данные

Данные, которые нельзя сформулировать в виде таблиц строк и столбцов, обычно представляют собой неструктурированный текст в файлах JSON, XML или .txt. Алгоритмы машинного обучения также позволяют управлять этими типами данных и читать их.

# Open function to open the file "TextFile.txt" in append mode 
file1 = open("TextFile.txt","a")
# store its reference in the variable file1
# and "TextFile2.txt" in D:\Text in file2
file2 = open(r"D:\Text\TextFile2.txt","w+")

Инструменты машинного обучения

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

1. Библиотеки. Когда вы работаете над проектом машинного обучения, вы, скорее всего, не захотите писать весь необходимый код самостоятельно - вместо этого вы захотите использовать уже созданный и доработанный код. Здесь на помощь приходят библиотеки. Библиотека - это набор предварительно написанного (и скомпилированного) кода, который вы можете использовать в своем собственном проекте. NumPy - это пример библиотеки, широко используемой в науке о данных, а TensorFlow - это библиотека, специально разработанная для машинного обучения. Прочтите эту статью о другой полезной библиотеке.

2. Среды разработки. Среда разработки - это программное приложение (или иногда группа приложений), которое предоставляет целый набор инструментов, призванных помочь вам (как разработчику или инженеру по машинному обучению) создавать свои проекты. Jupyter Notebooks и Visual Studio - это примеры сред разработки, которые популярны для кодирования многих различных типов проектов, включая проекты машинного обучения. Блокноты изначально создавались как инструмент документирования, который другие могут использовать для воспроизведения экспериментов. Блокноты обычно содержат комбинацию исполняемого кода, вывода, форматированного текста и визуализаций. Одним из самых популярных блокнотов с открытым исходным кодом, используемых сегодня специалистами по обработке данных и инженерами по обработке данных, является Блокнот Jupyter, который может сочетать код, форматированный текст (разметку) и визуализацию. Блокноты содержат несколько независимых ячеек, которые позволяют выполнять фрагменты кода внутри этих ячеек. Вывод каждой ячейки может быть сохранен в записной книжке и доступен для просмотра другим пользователям.

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

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



Путь вперед

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







Обо мне

Я инженер по обработке данных и исследователь по искусственному интеллекту, в настоящее время работаю в области аналитики игр Microsoft Xbox, где я использую аналогичные конвейеры в своей повседневной работе для анализа приобретений, использования и состояния игр. Помимо моей профессиональной работы, я также изучаю способы внедрения ИИ, чтобы сбалансировать экономику регионов по всему миру, на которые с годами повлияли постепенные климатические изменения. Не стесняйтесь связываться со мной в Twitter или LinkedIn для любых обсуждений, вопросов или проектов, над которыми вы хотели бы сотрудничать.