Классификация изображений (image classification) — это задача машинного обучения с учителем. Есть набор изображений (наши признаки) и описание того, что представлено на этих изображениях (наша целевая переменная).
Дано: классический датасет MNIST, содержащий изображения написанных от руки цифр от 0 до 9.
Задача: модель самостоятельно определяет, что представлено на изображении
- В данном случае классов десять (т.е. речь идёт о мультиклассовой классификации).
Решение:
- В качестве алгоритма использован метод опорных векторов (support vector machine или SVM).
Принцип этого классификатора заключается в том, чтобы построить плоскость (а вернее гиперплоскость, потому что мы работа в многомерном пространстве) между несколькими точками каждого класса. Эти точки называются опорными векторами (support vectors).
лоскость строится таким образом, чтобы максимизировать «зазор» или расстояние между опорными векторами.
В случае если линейную плоскость провести невозможно, алгоритм предварительно трансформирует данные так, чтобы их все-таки можно было разделить с помощью гиперплоскости, т.е. линейно.
Это называется kernel trick (метод ядра). Помимо возведения в квадрат существуют и другие функции ядра.
Подход к решению задачи:
-
Проанализировать изображения (посмотреть встроенный набор данных, сколько изображений, вывести матрицу первого изображения и т.д.).
-
Рассмотрим первые 4 изображения.
-
Подготовка данных.
- Двумерные матрицы каждого изображения нужно преобразовать в одномерные.
- Матрицы нужно соединить и тогда все изображения поместятся в один двумерный массив.
-
Теперь цифровые изображения ничем не отличаются от стандартных данных в задачах классификации (по горизонтали отложены изображения, т.е. точки данных, по вертикали — признаки (оттенки пикселей)).
-
В процессе обучения модели изначально необходимо разбить данные на обучающую и тестовую выборки.
-
Затем использовать метод опорных векторов для обучения модели и формирования прогноза.
-
С помощью атрубута support_ посмотреть на индексы точек (изображений), которые использовались в качестве опорных векторов при обучении модели.
-
Использовать индексы support_ к нашему датасету, выбрать (отфильтровать) изображения, которые использовал классификатор.
-
Произвести оценку качества модели (использовать метрику accuracy).
Она показывает долю правильных предсказаний. В случае с мультиклассовой классификацией она рассчитывается как среднее арифметическое accuracy по всем классам.
-
Создать матрицу ошибок (удобнее смотреть аccuracy по каждому классу).
-
Визуализировать результаты работы