Практический пошаговый пример, чтобы понять, как работает машинное обучение

В этом посте я шаг за шагом объясню, как создать простую модель машинного обучения с помощью TensorFlow.

TensorFlow - это библиотека, разработанная Google, которая была выпущена как открытый исходный код в 2015 году. TensorFlow упрощает создание и обучение модели машинного обучения.

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

Мы предоставим модели входной файл CSV с 29 уже выполненными преобразованиями между километрами и милями, и на их основе наша модель научится выполнять это преобразование автоматически.

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

В качестве языка программирования мы будем использовать Python. Python предлагает ряд удобных библиотек и утилит для работы с машинным обучением.

Все действия в этом примере были выполнены с помощью Google Colab. Google Colab позволяет нам писать и запускать Python в нашем браузере без каких-либо настроек.

Импорт необходимых библиотек

Начнем с импорта библиотек, которые собираемся использовать в нашем примере.

  • Мы импортируем TensorFlow для создания нашей модели машинного обучения.
  • Мы также импортируем библиотеку Pandas для чтения файла CSV с преобразованием из километров в мили.
  • И, наконец, мы импортируем библиотеки Seaborn и Matlotlib, чтобы нарисовать разные результаты.

Загрузка образцов данных

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

Вы можете скачать его здесь.

☝ Прочитать файл из Google Colab можно разными способами. В этом случае я напрямую загрузил CSV в свою папку sample_data в Google Colab, но вы также можете читать файлы по URL-адресу, например, из GitHub.

Проблема с загрузкой в ​​Google Colab заключается в том, что данные теряются при перезапуске среды выполнения.

  • Фрейм данных - это двумерные неоднородные табличные данные с изменяемым размером.

Рисование фрейма данных

Мы строим график приведенных выше значений, используя метод «диаграммы рассеяния» библиотеки «seaborn», которую мы импортировали под именем «sns». Он показывает нам графическое представление между соответствиями X (километры) и Y (мили).

Мы определяем вход и выход фрейма данных для обучения модели: X (километры) - это вход, а Y (мили) - это выход.

Создание нейронной сети

Теперь давайте воспользуемся методом keras.Sequential для создания нейронной сети, в которую последовательно добавляются «слои». Каждый слой имеет функцию постепенной дистилляции входных данных для получения желаемого результата.

Keras - это библиотека, написанная на Python, которая позволяет нам создавать нейронные сети и получать доступ к различным фреймворкам машинного обучения, таким как TensorFlow.

Далее мы собираемся добавить слой к модели, используя метод «добавить».

Составление модели

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

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

  • Оптимизация Адама - это метод стохастического градиентного спуска, основанный на адаптивной оценке моментов первого и второго порядка.

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

Цель нашей модели - минимизировать эту функцию.

Обучение модели

Мы собираемся использовать метод «подгонки» для обучения нашей модели. Сначала мы передаем независимую или входную переменную (X-километры) и целевую переменную (Y-мили).

С другой стороны, мы указываем количество эпох. В данном случае 250 эпох. Эпоха - это итерация по всем предоставленным данным X и Y.

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

Оценка модели

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

Из графика видно, что обучение модели с 250 шагами мало помогает и что ошибка не уменьшается после 50-й итерации.

Следовательно, оптимальное количество шагов для обучения этого алгоритма будет примерно 50 шагов.

Делая прогноз

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

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

Преобразование из Километров в Милли составляет 62,133785.

Проверка результата

Преобразование километров в мили с использованием математической формулы выглядит следующим образом: 62,13999999999999 Ошибка прогноза: 0,00621414

Последние мысли

В этом примере мы увидели, как использовать библиотеку TensorFlow для создания модели, которая научилась автоматически конвертировать километры в мили с небольшой ошибкой.

Математика, которую TensorFlow использует для выполнения этого процесса, довольно проста. По сути, в этом примере для создания модели используется линейная регрессия, поскольку входные переменные: километры и выходные переменные: мили коррелированы.

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

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

использованная литература



Https://pandas.pydata.org/pandas-docs/stable/getting_started/index.html



Https://colab.research.google.com/notebooks/welcome.ipynb?hl=en