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

Что такое уменьшение размерности?
Уменьшение размерности – это процесс, используемый для уменьшения размерности набора данных, принимая многие признаки и представляя их как меньшее количество признаков. Например, уменьшение размерности можно использовать для уменьшения набора данных из двадцати признаков до нескольких признаков. Уменьшение размерности обычно используется в задачах несупervised обучения для автоматического создания классов из многих признаков. Чтобы лучше понять почему и как используется уменьшение размерности, мы рассмотрим проблемы, связанные с высокоразмерными данными, и наиболее популярные методы уменьшения размерности.
Больше размерностей приводит к переобучению
Размерность относится к количеству признаков/столбцов внутри набора данных.
Часто предполагается, что в машинном обучении больше признаков лучше, поскольку это создает более точную модель. Однако больше признаков не обязательно переводится в лучшую модель.
Признаки набора данных могут сильно различаться по своей полезности для модели, и многие признаки могут быть мало важны. Кроме того, чем больше признаков содержит набор данных, тем больше образцов необходимо для обеспечения того, чтобы разные комбинации признаков были хорошо представлены в данных. Следовательно, количество образцов увеличивается пропорционально количеству признаков. Больше образцов и больше признаков означают, что модель должна быть более сложной, и поскольку модели становятся более сложными, они становятся более чувствительными к переобучению. Модель учится закономерностям в обучающих данных слишком хорошо и не может обобщаться на данные вне выборки.
Уменьшение размерности набора данных имеет несколько преимуществ. Как упоминалось, более простые модели менее склонны к переобучению, поскольку модель должна делать меньше предположений о том, как признаки связаны между собой. Кроме того, меньше размерностей означает, что требуется меньше вычислительной мощности для обучения алгоритмов. Аналогично, меньше места хранения требуется для набора данных, имеющего меньшую размерность. Уменьшение размерности набора данных также может позволить использовать алгоритмы, которые не подходят для наборов данных с многими признаками.
Общие методы уменьшения размерности
Уменьшение размерности можно осуществить путем выбора признаков или инженерии признаков. Выбор признаков – это когда инженер определяет наиболее актуальные признаки набора данных, а инженерия признаков – это процесс создания новых признаков путем комбинации или преобразования других признаков.
Выбор и инженерия признаков можно выполнять программно или вручную. При ручном выборе и инженерии признаков типично визуализировать данные, чтобы обнаружить корреляции между признаками и классами. Выполнение уменьшения размерности таким образом может быть довольно трудоемким, и поэтому некоторые из наиболее распространенных способов уменьшения размерности включают использование алгоритмов, доступных в библиотеках, таких как Scikit-learn для Python. Эти общие алгоритмы уменьшения размерности включают: анализ главных компонент (PCA), сингулярное разложение (SVD) и линейный дискриминантный анализ (LDA).
Алгоритмы, используемые в уменьшении размерности для задач несупervised обучения, обычно являются PCA и SVD, а для задач супervised обучения – LDA и PCA. В случае моделей супervised обучения новые сгенерированные признаки просто подают в классификатор машинного обучения. Обратите внимание, что описанные здесь использования являются только общими случаями и не единственными условиями, при которых эти методы могут быть использованы. Алгоритмы уменьшения размерности, описанные выше, являются просто статистическими методами и используются вне моделей машинного обучения.
Анализ главных компонент

Фото: Матрица с выделенными главными компонентами
Анализ главных компонент (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 не может эффективно разделить классы с помощью линейной оси, если средние значения распределений перекрываются.












