Веб-приложения с использованием моделей искусственного интеллекта

  • Обучение модели машинного обучения с помощью библиотек Python в блокноте Jupyter Notebook
  • Внедрение обученной модели машинного обучения в веб-приложение Streamlit

РАБОТА С МОДЕЛЯМИ МАШИННОГО ОБУЧЕНИЯ

Еще одна важная особенность Jupyter Notebooks, Python и Streamlit - возможность обучать модели машинного обучения и делать прогнозы. 

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

Если у вас есть опыт работы с искусственным интеллектом и работы с наборами данных с помощью блокнотов Jupyter Notebook, это будет хорошим следующим шагом для вас. 

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

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

DATASET

НАХОДИТ ЗАКОНОМЕРНОСТИ С ПОМОЩЬЮ АЛГОРИТМА ОБУЧЕНИЯ


ПРЕДСКАЗАНИЕ!

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

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

После того как вы создали модель, ее можно использовать для предсказания результата на основе новой информации. И снова Python предоставляет библиотеки, которые позволяют это сделать.

ПРЕДВАРИТЕЛЬНАЯ ОБРАБОТКА ДАННЫХ

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

Что включает в себя предварительная обработка? При работе с текстовым набором данных необходимо решить некоторые проблемы.

 

Нулевые значения

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

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

Outliers

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

Например, у вас может быть набор данных, в котором 95 % выборки составляют люди в возрасте 10-30 лет, но есть несколько случайных выборок, в которых люди старше 50 лет. Поскольку подавляющее большинство образцов относится к возрастной группе 10-30 лет, вы можете рассмотреть возможность удаления образцов из более старшей возрастной группы.

Стандартизация

Часто числа в большом наборе данных меняются в зависимости от того, какие характеристики в нем представлены. Например, у вас может быть возраст, который варьируется от 0 до 70, а также зарплата, которая варьируется от 0 до 500 000! Шкалы очень разные, поэтому один признак может иметь большее значение в модели.

Чтобы это исправить, можно стандартизировать данные, чтобы они находились в одной шкале. scikit-learn предоставляет StandardScaler, который обновляет каждую характеристику так, чтобы среднее значение было равно 0, а стандартное отклонение - 1.

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

Кодирование

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

Примером может служить уровень активности, с выборочными значениями "сидячий", "легкий", "умеренный", "высокий". Эти ответы можно закодировать в значения 0, 1, 2 и 3, что гораздо проще для алгоритма построения модели.

РАСЩЕПЛЕНИЕ ДАННЫХ

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

Существуют стандартные способы разделения (обычно 75 % для обучения и 25 % для тестирования), но вы можете разделить их по своему усмотрению. Опять же, предусмотрены функции, чтобы все это было автоматизировано. 

СОЗДАНИЕ МОДЕЛИ

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

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

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

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

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

нейронная сеть

Классификация

  • Дерево решений
  • Случайный лес 
  • K-Nearest Neighbors
  • Наивный Байес
  • Логистическая регрессия
  • Машина опорных векторов

Регрессия

  • Линейная регрессия
  • Гребневая регрессия
  • Регрессия Лассо
  • Полиномиальная регрессия
  • Байесовская линейная регрессия
  • Векторная регрессия с поддержкой

Обратите внимание, что некоторые алгоритмы относятся к обоим типам. Например, существует классификатор Decision Tree Classifier, а также Decision Tree Regressor. Машина опорных векторов работает для классификации, а регрессия опорных векторов - для регрессии. 

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

scitkit-learn предоставляет функции для всех этих алгоритмов, поэтому создание модели не составит труда. 

ОЦЕНКА МОДЕЛИ

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

Ошибка это разница между предсказанным моделью значением и правильным значением. 

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

Вы хотите добиться хорошего баланса между смещением и дисперсией.

Высокая погрешность -> недостаточная подгонка.

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

Высокая дисперсия -> чрезмерная подгонка.

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

Одним из методов проверки эффективности модели является кросс-валидация.

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

 

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

  • оценка точности = правильные прогнозы/общее количество прогнозов
  • точность = истинно положительные результаты/(истинно положительные результаты + ложноположительные результаты)
  • отзыв = истинно положительные результаты/(истинно положительные результаты + ложноотрицательные результаты)
  • Оценка F1 = (2 x точность x отзыв)/(точность + отзыв)
  • специфичность = истинно отрицательный результат/ (истинно положительный результат + ложноотрицательный результат)
  • Матрица смешения - показывает количество истинно положительных, истинно отрицательных, ложно положительных и ложно отрицательных результатов

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

ПРЕДСКАЗАНИЕ!

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

Обычно предварительная обработка, создание и оценка модели выполняются на Python в среде, подобной Jupyter Notebooks. После этого вы можете экспортировать модель в файл.

Затем в приложении Streamlit вы можете загрузить модель и использовать ее для прогнозирования. 

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

ЗАДАНИЕ 1: ОБУЧЕНИЕ AI МОДЕЛИ В JUPYTER NOTEBOOK

Расчетное время: 60 минут

Изучение данных о риске инсульта для создания модели искусственного интеллекта

Следуйте за этим видео к:
  1. Загрузите набор данных для предсказания инсульта с сайта Kaggle.
  2. Работайте с данными в блокноте Jupyter Notebook, чтобы:
    • Проанализируйте данные
    • Предварительная обработка данных для подготовки их к работе с моделью
    • Создайте несколько различных моделей
    • Оцените и выберите модель для вашего приложения
    • Экспортируйте модель
Скачать блокнот

ГЛАВНАЯ

Попробуйте использовать модель, отличную от тех, что есть в Jupyter Notebook. 

  1. Изучите сайт scikit-learn на предмет других алгоритмов классификации, а также посмотрите примеры построения моделей на Kaggle.
  2. Выберите один алгоритм и добавьте код в свой блокнот, чтобы создать модель.  
  3. Используйте метрики scikit-learn для проверки точности. 

Как работает ваша модель? Лучше ли она, чем другие алгоритмы в блокноте?

ЗАДАЧА 2: СОЗДАНИЕ ПРИЛОЖЕНИЯ ДЛЯ ПРОГНОЗИРОВАНИЯ

Расчетное время: 45 минут

Используйте свою модель в приложении Streamlit App

Следуя этому видео, вы сможете создать веб-приложение, которое будет предсказывать риск инсульта на основе данных, введенных пользователем.

ГЛАВНАЯ

Набор данных Iris - это классический набор данных, который классифицирует цветы ириса на 3 вида (setosa, versicolor и virginica) на основе размеров лепестков и чашелистиков.

  1. Проведите исследование набора данных, чтобы узнать его особенности и цели. 
  2. Вы можете скачать набор данных и создать свою собственную модель или воспользоваться этой моделью(pickle-файл), созданной с помощью K-nearest neighbors. Обратите внимание, что для этого набора данных не требовалось никакого масштабирования. Файл pickle содержит только модель.
  3. Импортируйте модель и создайте приложение Streamlit для предсказания вида радужной оболочки на основе четырех характеристик набора данных.

ВДОХНОВЕНИЕ ТЕХНОВАЦИИ

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

РЕФЛЕКСИЯ

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

отражение
Как вы думаете, какой тип модели вам понадобится для решения - классификация или регрессия?
Какие моменты показались вам сложными для понимания?
Какие шаги вы можете предпринять прямо сейчас, чтобы узнать больше и создать свое решение?
Предыдущий слайд
Следующий слайд

ОБЗОР ОСНОВНЫХ ТЕРМИНОВ

  • Предварительная обработка - Взятие набора данных и проверка того, что содержащиеся в нем данные подходят для обучения модели машинного обучения
  • Алгоритм классификации - Алгоритм, используемый для обучения модели машинного обучения, которая будет классифицировать или предсказывать дискретные значения
  • Алгоритм регрессии - Алгоритм, используемый для обучения модели машинного обучения для прогнозирования значения в непрерывном диапазоне
  • Bias - разница между прогнозируемым значением модели и правильным значением, обусловленная неверными предположениями, упрощающими модель
  • Вариация - Величина изменчивости в прогнозах модели, когда модель не способна обобщать данные при столкновении с новыми данными
  • Оверфиттинг - когда модель слишком хорошо подходит к обучающим данным, что не позволяет ей хорошо предсказывать новые данные, что вызвано высокой дисперсией модели
  • Недооценка - когда модель слишком упрощена и не показывает хороших результатов ни на обучающих, ни на тестовых данных, что вызвано высокой погрешностью или допущениями в модели
  •  

ДОПОЛНИТЕЛЬНЫЕ РЕСУРСЫ

Машинное обучение 

  • Geeks for Geeks Machine Learning Tutorial - дает отличное введение и обзор некоторых процессов и терминологии машинного обучения
  • Учебник Scikit-Learn от Simplilearn - рассматривает набор данных о качестве вина, чтобы попрактиковаться в использовании scikit-learn в Jupyter Notebook
  • Машинное обучение с scikit-learn - полный плейлист Youtube от Data School

Streamlit