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

Важность чистых данных

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

Однако для следующего рисунка данные содержат выбросы, которые отрицательно влияют на модель.

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

Мусор внутри Мусор на выходе

При очистке данных выбросы — не единственная наша проблема. Шум и несбалансированные наборы данных усложняют жизнь. Обычно мы масштабируем наши данные, чтобы полагаться на изучение дисперсии (изменений), а не на фактические значения.

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

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

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

Разделение данных на наборы для обучения, проверки и тестирования

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

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

Ручная очистка/обработка данных

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

Автоматическая очистка/обработка данных

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

RANdom SAmple Consensus (RANSAC)

Этот подход направлен на исключение выбросов из набора данных с использованием выбранной модели. Этот алгоритм можно рассматривать как цикл из трех шагов:

  1. Выберите случайным образом количество точек, необходимое для соответствия модели
  2. Найти параметры модели с помощью образцов
  3. Оценка по доле инлайнеров в заданном пороге модели

Рассмотрим следующий фрагмент кода, выполняющий RANSAC для модели и данных. Точки — это данные, представляющие точки, определяющие границу зрачка на изображении. Эти данные извлекаются из изображений с применением методов обработки изображений. Поскольку зрачки выглядят как эллипсы, модель эллипса используется в качестве модели для тестирования RANSAC. Этот конкретный будет идти на 10 итераций. 60% данных выбираются случайным образом. На основе этого подмножества генерируются параметры модели эллипса (см. модель.оценка). Затем нам нужно проверить отклонение различных подмножеств от модели, подходящей для этого подмножества. Дистанция, которую мы там зададим, будет критерием выставления оценок, подмножество с наименьшим количеством отклонений дистанции.

Фрагмент был для демонстрации идеи с более низкого уровня. Однако RANSAC можно использовать из skimage.measure[ссылка].

Методы очистки бинарных изображений

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

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

значение пикселя = 0: черный | значение пикселя = 255 : белый

Вышеупомянутые методы называются «Методы морфологической обработки изображений». Основными морфологическими операциями являются расширение и эрозия. Они основаны на концепциях удара и подгонки. При перемещении структурного элемента (рассмотрите фильтр на изображениях), если все пиксели перекрывают пиксели структурного элемента, происходит подгонка, и когда хотя бы один из пикселей перекрывается, мы попали. В следующем примере A подходит, B попадает, а C не попадает.

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

Эрозия может быть полезна для разделения соединенных объектов и удаления выступов.

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

Расширение используется для исправления разрывов в формах.

Есть составные операции: Открытие, Закрытие. В отверстии делают эрозию, затем делают и дилатацию. Он сохраняет первоначальную форму и удаляет мелкие предметы.

Закрытие делает дилатацию, а затем эрозию.

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

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

Во-вторых, мы устанавливаем порог изображения в градациях серого:

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

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

Хорошо!

Нормализация данных, стандартизация, регуляризация?!

Если мы используем абсолютные значения наших данных, то есть значения, которые мы получаем из наблюдений. Различные функции будут иметь разные диапазоны изменения. Функции с большим диапазоном и значениями могут изменить то, как модель машинного обучения изучает закономерности в данных (изменяет параметры модели). Например, для градиентного спуска данные x представлены следующим образом:

Таким образом, это повлияет на размер шага градиентного спуска. Разница в диапазонах функций приведет к разным размерам шага для каждой функции. Другим хорошим примером могут служить алгоритмы расстояния, такие как KNN, K-means и SVM, на которые больше всего влияет набор функций. Это связано с тем, что за кулисами они используют расстояния между точками данных, чтобы определить их сходство.

С другой стороны, некоторые другие модели, такие как древовидные, нечувствительны к диапазону.

Нормализация. — это метод масштабирования, при котором значения сдвигаются и масштабируются таким образом, что в итоге они оказываются в диапазоне от 0 до 1. Он также известен как масштабирование минимум-максимум [ссылка scikit-learn для этой цели].

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

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

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

Ссылки и чтение дополнительных материалов