Connect with us

ИИ 101

Что такое уменьшение размерности?

mm

Что такое уменьшение размерности?

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

Больше размерностей приводит к переобучению

Размерность относится к количеству признаков/столбцов в наборе данных.

Часто предполагается, что в машинном обучении больше признаков – лучше, поскольку это создает более точную модель. Однако больше признаков не обязательно переводится в лучшую модель.

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

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

Общие методы уменьшения размерности

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

Выбор и инженерия признаков можно выполнять программно или вручную. При ручном выборе и инженерии признаков обычно визуализируется данные, чтобы обнаружить корреляции между признаками и классами. Выполнение уменьшения размерности таким образом может быть довольно трудоемким, поэтому некоторые из наиболее распространенных способов уменьшения размерности включают использование алгоритмов, доступных в библиотеках, таких как Scikit-learn для Python. Эти общие алгоритмы уменьшения размерности включают: анализ главных компонентов (PCA), сингулярное разложение (SVD) и линейный дискриминантный анализ (LDA).

Алгоритмы, используемые в уменьшении размерности для задач несупervised обучения, обычно являются PCA и SVD, а для задач supervised обучения – LDA и PCA. В случае моделей supervised обучения новые сгенерированные признаки просто подают в классификатор машинного обучения. Обратите внимание, что описанные здесь использования являются лишь общими случаями и не единственными условиями, при которых эти методы могут быть использованы. Алгоритмы уменьшения размерности, описанные выше, являются просто статистическими методами и используются вне моделей машинного обучения.

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

Фото: Матрица с выделенными главными компонентами

Анализ главных компонентов (PCA) – это статистический метод, который анализирует характеристики/признаки набора данных и суммирует признаки, которые наиболее влиятельны. Признаки набора данных объединяются вместе в представления, которые сохраняют большинство характеристик данных, но分布уются по меньшему количеству размерностей. Можно представить это как “сжатие” данных из представления с более высокой размерностью в представление с только несколькими размерностями.

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

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

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

Сингулярное разложение

Фото: By Cmglee – Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=67853297

Сингулярное разложение (SVD) – это используется для упрощения значений внутри матрицы, уменьшая матрицу до ее составных частей и делая вычисления с этой матрицей проще. SVD можно использовать как для действительных, так и для комплексных матриц, но для целей этого объяснения мы рассмотрим, как разложить матрицу действительных значений.

Предположим, что у нас есть матрица, состоящая из действительных данных, и我们的 цель – уменьшить количество столбцов/признаков внутри матрицы, аналогично цели PCA. Как и PCA, SVD сожмет размерность матрицы, сохраняя при этом максимально возможное количество вариативности матрицы. Если мы хотим работать с матрицей A, мы можем представить матрицу A как три другие матрицы, называемые U, D и V. Матрица A состоит из исходных x * y элементов, а матрица U состоит из элементов X * X (это ортогональная матрица). Матрица V – это другая ортогональная матрица, содержащая y * y элементов. Матрица D содержит элементы x * y и является диагональной матрицей.

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

Когда матрица A разлагается на матрицы U, D и V, они содержат данные, найденные в матрице A. Однако левые столбцы матриц будут содержать большинство данных. Мы можем взять только эти первые несколько столбцов и получить представление матрицы A, которое имеет намного меньше размерностей и большинство данных в A.

Линейный дискриминантный анализ

 

Слева: Матрица до LDA, Справа: Ось после LDA, теперь разделяема

Линейный дискриминантный анализ (LDA) – это процесс, который берет данные из многомерной графики и проектирует их на линейную графику. Можно представить это, подумав о двумерной графике, заполненной данными, принадлежащими двум разным классам. Предположим, что точки распределены так, что никакая линия не может быть проведена, чтобы аккуратно разделить два разных класса. Чтобы справиться с этой ситуацией, точки, найденные в 2D-графике, можно уменьшить до 1D-графики (линии). Эта линия будет иметь все точки данных, распределенные по ней, и ее можно, возможно, разделить на две секции, представляющие лучшее возможное разделение данных.

Когда выполняется LDA, есть две основные цели. Первая цель – минимизировать дисперсию для классов, а вторая цель – максимизировать расстояние между средними значениями двух классов. Эти цели достигаются путем создания новой оси, которая будет существовать в 2D-графике. Новая ось создается для разделения двух классов на основе вышеуказанных целей. После создания оси точки, найденные в 2D-графике, размещаются вдоль оси.

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

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

Блогер и программист с специализацией в Machine Learning и Deep Learning темах. Daniel надеется помочь другим использовать силу ИИ для социального блага.