Занятие № 2. Классификация и регрессия
Две классические задачи машинного обучения - классификация и регрессия.
Классификация - это предсказание категории или класса к которому принадлежит объект на основе набора его характеристик.
Примеры задач: спам-фильтр, классификация изображений, анализ настроения.
Регрессия - это предсказание непрерывного числового значения на основе входных данных.
Примеры задач: прогнозирование температуры, цен на жильё.
Задание № 1. Рукописный ввод
Почтовое отделение хочет внедрить автоматическую систему сортировки писем. Для этого нужно обучить модель машинного обучения распознавать рукописную запись цифр. Цифры записываются в следующем виде:
Научим модель распознавать цифры 1, 2 и 3.
Откройте сайт Scratch в новой вкладке. Нажмите кнопку Начать, чтобы приступить к созданию проекта.
Нажмите кнопку Попробовать сейчас. Вы перейдёте к странице со списком проектов. Нажмите кнопку Добавить новый проект. В поле Название проекта запишите “Почта”. В списке Тип проекта выберите Распознавание изображения. В списке Хранение выберите вариант В веб браузере. Нажмите кнопку Создать. В списке должен появиться новый проект:
Кликните по вновь созданному проекту, чтобы приступить к его реализации.
Работа над проектом состоит из трёх этапов:
- Определиться с количеством и названием классов (меток) и собрать обучающую выборку - набор данных для каждого типа классифицируемых объектов.
- Обучить модель на обучающей выборке и проверить модель на тестовой выборке данных.
- Использовать обученную модель для разработки приложения.
На основе образцов изображений из каждого класса, модель научится распознавать класс незнакомого изображения:
После того, как на вход обученной модели попадает неизвестный рисунок, на её выходах будет вероятность принадлежности изображения к тому или иному классу:
Сбор обучающей выборки
Нажмите кнопку Обучить. Нажмите кнопку Добавить новую метку, дайте ей имя odin и нажмите кнопку Добавить. Аналогично создайте ещё две метки с именами dva и tri.
Созданные метки можно воспринимать как контейнеры для хранения данных определённого класса. Например в контейнере метки odin мы разместит изображения написанной от руки единицы.
Образцы для обучения добавлены. Теперь нужно обучить модель на основе этих данных.
Обучение модели и тестирование
Проверим качество обучения модели.
Нажмите кнопку Проверить рисунком. На появившемся холсте нарисуйте единицу и нажмите кнопку Тест. Ниже появится название метки и то, с какой вероятностью, тестовый рисунок к ней относится:
Попробуйте нарисовать единицу не в центре холста или повёрнутой. Сравните процент точности классификации в этих случаях.
Проверьте точность классификации по всем трём меткам.
Разработка приложения
Перейдите по ссылке Назад к проекту. Нажмите кнопку Создать. Выберите Scratch 3. Нажмите кнопку Открыть в Scratch 3.
В новой вкладке откроется среда программирования с новой категорией блоков под именем Почта. В этой категории собраны блоки с помощью которых мы будем взаимодействовать с обученной на предыдущем этапе моделью.
Нажмите на чтобы запустить скрипт рисования. Зажмите левую кнопку мыши, чтобы начать рисование на сцене. Нажав ↓Down можно очистить сцену.
После нажатия Space спрайт прячется и блок save screenshot to costume
(1) добавит в спрайт костюм с текущим изображением сцены, включающим рисунок от руки. С помощью блока costume image
(2) мы передаёт изображение текущего костюма в обученную ранее модель. Точность распознавания сохраняем в переменной. Распознанную метку будем сохранять только если процент точности превышает 80% (3). Сравниваем распознанную метку с одной из описанных в процессе обучения (4). Снова показываем спрайт и меняем костюм на изображение карандаша (5).
Протестируйте распознавание цифр, которые вы нарисуете.
Задание № 2. Студенческая успеваемость
С помощью данных о подготовке студентов к тесту, предскажите возможный балл по набору характеристик.
В этой задаче модель машинного обучения будет использоваться для регрессии - предсказания непрерывного значения по ряду характеристик. Обучение будем проводить на данных из csv-файла, содержащих 1000 строк со следующими столбцами:
Свойство | Описание |
---|---|
ch_uch | Время в часах, затраченное на подготовку к тесту. |
pred_oc | Оценка за предыдущий тест. |
facult | Присутствие на дополнительных консультация (1- да, 0 - нет). |
son | Количество часов сна перед тестом. |
test | Количество пробных попыток пройти тест. |
nov_oc | Итоговая отметка. |
В столбце nov_oc хранится значение, которое модель будет предсказывать по незнакомому набору входных данных.
Для решения задачи регрессии на вход модели машинного обучения передается набор данных - свойства и ожидаемый для них результат:
После обучения модели, мы можем подать на её вход набор значений свойств которых не было в обучающей выборке и получить на выходе наиболее вероятное значение для данного набора свойств:
Скачайте файл student.csv и сохраните его на рабочем диске. Для этого нажмите по ссылке правой кнопкой мыши и выберите Сохранить ссылку как…
Создадим новый проект.
Перейдите по ссылке, чтобы открыть список проектов. Нажмите кнопку Добавить новый проект. В поле Название проекта напишите Успеваемость, в списке Тип проекта выберите прогнозирование чисел, в списке Хранение выберите В веб браузере. Нажмите кнопку Создать.
Кликните по вновь созданному проекту, чтобы перейти к его настройке.
Первый этап - обучить модель на данных из файла student.csv
.
Нажмите кнопку Обучить. На открывшейся странице нажмите кнопку Add column (Добавить столбец). В появившемся окне впишите имя первой характеристики - ch_uch и нажмите кнопку Добавить. Колонка с этим именем появится в таблице.
Самостоятельно добавьте все остальные характеристики (см. Таблица 1). После этого страница должна выглядеть следующим образом:
Таблица подготовлена. Теперь нужно загрузить данные из файла. Важно, чтобы названия характеристик в файла совпадали с именами колонок, добавленных на сайте.
Следующий шаг - обучить модель машинного обучения на загруженных из файла данных.
Нажмите кнопку Узнать & Проверить. Нажмите кнопку Обучить новую модель машинного обучения. Дождитесь, пока статус модели изменится на Available (Доступна).
Сразу после обучения можно проверить, какое значение получится при вводе данных, которых нет в обучающей выборке.
Переходим к созданию Scratch-проекта, который будет использовать обученную модель.
Нажмите кнопку Создать. Затем нажмите кнопку Scratch 3. Нажмите кнопку Открыть в Scratch 3. В новой вкладке откроется среда разработки Scratch с новой категорией блоков .
Для прогнозирования возможной оценки за тест будем использовать блок predict
(предсказать) из категории блоков student:
Добавьте в скрипт два фона. Красочный фон показывается, если прогнозируемая оценка больше 60, а грустный фон отображается в ином случае.