Для алгоритма машинного обучения

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

Но зачем нам это нужно с изображениями?

Изображения инкапсулируют много информации, но за это приходится платить: высокая размерность. Например, небольшая картинка размером 200 на 100 пикселей с 3 каналами (красный, зеленый, синий) уже представляет собой вектор признаков с 60 000 измерений.

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

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

Проклятие размерности

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

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

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

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

Чтобы понять, как количество измерений влияет на нашу метрику расстояния, мы можем взглянуть на соотношение между объемом внутри и снаружи n-мерного шара (n-шара), вписанного в гиперкуб.

На этом графике видно, что объем за пределами n-шара займет большую часть пространства. Это очень нелогично и не похоже на двух- или трехмерное пространство, которое мы привыкли осваивать.

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

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

Итак, как мы можем решить эту проблему?

Уменьшить размер изображения

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

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

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

Гистограмма ориентированного градиента

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

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

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

В приведенном выше примере входное изображение имеет 20 000 размеров (100 на 200 пикселей), а функция HOG имеет 2400 размеров для ячейки 8 на 8 пикселей и 576 для ячейки 16 на 16 пикселей. Это снижение на 88% и 97% соответственно.

Анализ главных компонентов

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

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

Есть несколько моментов, о которых следует помнить при использовании PCA:

  • PCA лучше всего использовать как инструмент для уменьшения размерности, а не для выбора признаков.
  • При использовании PCA для уменьшения размерности важно сначала нормализовать данные.
  • PCA — это линейное преобразование, поэтому оно не сможет зафиксировать нелинейные отношения в данных.
  • Чтобы уменьшить до N измерений, вам нужно как минимум N-1 наблюдений

Я рекомендую прочитать следующую статью, чтобы лучше понять PCA и его ограничения:



Многообразное обучение

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

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

Есть несколько вещей, о которых следует помнить при работе с многообразным обучением:

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

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

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

Закодированное положение:

Закодированное вращение:

Заключение

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

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

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

Я надеюсь, что вы нашли этот пост полезным! Если у вас есть вопросы о том, как построить граф k-NN, предлагаю прочитать следующую статью:



Хотите узнать больше о работе и проектах Энтони? Следите за ним в Medium, LinkedIn и Twitter.

Нужен технический писатель? Отправьте запрос на https://amigocci.io.