заглушки Что такое уменьшение размерности? - Unite.ИИ
Свяжитесь с нами:
Мастер-класс по ИИ:

AI 101

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

mm
обновленный on

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

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

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

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

Часто считается, что в машинном обучении чем больше функций, тем лучше, поскольку создается более точная модель. Однако большее количество функций не обязательно означает лучшую модель.

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

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

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

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

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

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

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

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

Анализ главных компонентов (PCA) это статистический метод, который анализирует характеристики/функции набора данных и суммирует наиболее важные функции. Функции набора данных объединяются в представления, которые сохраняют большинство характеристик данных, но распределяются по меньшему количеству измерений. Вы можете думать об этом как о «сжатии» данных из представления более высокого измерения в представление с несколькими измерениями.

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

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

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

Разложение по единственному значению

Фото: Cmglee — собственная работа, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=67853297

Разложение по сингулярным значениям (SVD) is используется для упрощения значений в матрице, сводя матрицу к составным частям и упрощая вычисления с этой матрицей. 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. Однако самые левые столбцы матриц будут содержать большую часть данных. Мы можем взять только эти первые несколько столбцов и получить представление матрицы А, которое имеет гораздо меньше измерений и большую часть данных в А.

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

 

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

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

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

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

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