В этой главе мы обсудим алгоритмы уменьшения размерности (анализ главных компонентов (PCA) и линейный дискриминантный анализ (LDA)).

Эта глава состоит из 5 частей:

  1. Что такое уменьшение размерности?
  2. Как работает анализ главных компонентов (PCA)?
  3. Как работает линейный дискриминантный анализ (LDA)?
  4. Практическая реализация анализа основных компонентов (PCA).
  5. Практическое применение линейного дискриминантного анализа (LDA).

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

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

Мы рассмотрим два основных алгоритма уменьшения размерности

  1. Анализ основных компонентов (PCA)
  2. Линейный дискриминантный анализ (LDA)

2: Как работают алгоритмы уменьшения размерности?

2.1: Анализ главных компонентов (PCA).

2.1.1: Что такое анализ основных компонентов (PCA)?

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

Вы можете задать вопрос: «Как мне взять все переменные. Я собрал и сосредоточился только на некоторых из них? С технической точки зрения, вы хотите «уменьшить размер вашего пространства функций». Уменьшая размер вашего пространства функций, у вас будет меньше взаимосвязей между переменными, которые нужно учитывать, и меньше вероятность перегрева вашей модели.

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

· Устранение признаков

· Извлечение признаков

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

Извлечение признаков: PCA - это метод извлечения признаков. Таким образом, он объединяет наши входные переменные особым образом, после чего мы можем отбросить «наименее важные» переменные, сохраняя при этом наиболее ценные части всех переменных.

Когда мне следует использовать PCA?

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

2. Вы хотите убедиться, что ваши переменные независимы друг от друга?

3. Комфортно ли вам сделать вашу независимую переменную менее интерпретируемой?

2.1.2: Как работает анализ основных компонентов (PCA)?

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

Затем мы разделим эту матрицу на два отдельных компонента: направление и величину. тогда мы сможем понять направление наших данных и их величину.

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

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

Как бы здесь выглядела наиболее подходящая линия:

1. Рассчитайте ковариационную матрицу X точек данных.

2. Вычислить собственные векторы и соответствующие собственные значения.

3. Отсортируйте собственные векторы в соответствии с их заданными значениями в порядке убывания.

4. Выберите первые k собственных векторов, и это будут новые k измерений.

5. Преобразуйте исходные n-мерные точки данных в k_dimensions.

Давайте погрузимся в математику:

Набор данных:

Размер выборки n = 10

Переменные p = 2

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

Итак, корреляция

Положительная корреляция с высокой избыточностью

Среднее значение наших переменных

Теперь

Шаг 1:

· Вычтите среднее значение из соответствующего компонента данных, чтобы обновить набор данных.

· Восстановите диаграмму рассеяния для просмотра.

· Запишите «скорректированные» данные в виде матрицы X.

Примечание: этот «скорректированный» набор данных будет иметь нулевое значение.

Теперь запишите «скорректированные» данные как матрицу X.

Примечание: скорректированный набор данных будет иметь нулевые значения.

Шаг 2:

Вычислите образец ковариационной матрицы дисперсии C.

Шаг 3:

Вычислить собственные значения лямбда 1 и собственное значение

Из C упорядочить соответствующие пары от самого высокого до самого низкого собственных значений.

После решения этой матрицы мы получаем значение собственного вектора

Итак, наконец

Теперь собственный вектор

В Eigen Vector1 двигайтесь вправо, и 0,735 направления вверх

В Eigen Vector2 двигайтесь вправо и -0,678 направления вверх

Это может быть доказано

Общая дисперсия выборки = сумма собственных значений

= 1.28 +0.0490

=1.33

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

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

Шаг 4:

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

Выберите оба компонента, затем

Так что отбросьте менее значимый компонент (мы берем ПК1, который на 96% захватывает информацию).

Шаг 5:

Разделите новый набор данных, взяв

Y = XV

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

Теперь снова отбросим значимую составляющую

Теперь

В этом случае PCA уменьшает одно измерение.

Таким образом работает PCA.

Примечание. Если вы хотите эту статью, посетите мой профиль academia.edu.

2.2: Линейный дискриминантный анализ (LDA).

2.2.1: Что такое линейный дискриминантный анализ (LDA)?

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

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

Фундаментальная идея линейных комбинаций восходит к 1960-м годам с помощью Z-баллов Альтмана для банкротства и других прогностических конструкций. Теперь LDA помогает получать профилактические данные для более чем двух классов, когда логистической регрессии недостаточно. Линейный дискриминантный анализ берет среднее значение для каждого класса и рассматривает варианты, чтобы сделать прогнозы с учетом гауссова распределения.

Максимизация осей компонентов для разделения классов.

2.2.2: Как работает линейный дискриминантный анализ (LDA)?

Первые общие шаги для выполнения линейного дискриминантного анализа

1. Вычислите d-мерный средний вектор для различных классов из набора данных.

2. Вычислить матрицу разброса (между классами и внутри матрицы разброса классов).

3. Отсортируйте собственный вектор, уменьшив собственное значение, и выберите k собственного вектора с наибольшим собственным значением из размерной матрицы w d x k (где каждый столбец представляет собственный вектор).

4. Используется матрица собственных векторов d * k для преобразования выборки в новое подпространство.

Это можно резюмировать умножением матриц.

Y = X x W (где X - размерная матрица n * d, представляющая n выборок, а вы преобразованы в n * k размерных выборок в новое подпространство.

Давайте погрузимся в математику

Набор данных:

Здесь W1 и W 2 Два разных класса w1 принадлежат классу 1, а W 2 принадлежит классу 2.

Решение:

Для класса 1

Для класса 2

Теперь

Таким образом, уравнение применяется к приведенной выше таблице, и мы получаем

Аналогично процедура для других строк

Теперь

Теперь найдите собственное значение и собственную матрицу

Примените квадратичную формулу, и мы получим 2 лямбда-значения, эти значения являются собственными значениями.

Сейчас с w1

Сейчас с w2

Найдя S1 и S2, мы можем Sw

Таким образом работает LDA.

Примечание. Если вы хотите получить эту статью, посетите мой профиль academia.edu.

3: Практическая реализация уменьшения размерности.

3.1: Практическая реализация PCA

Описание набора данных:

Эти данные являются результатом химического анализа вин, выращенных в одном и том же регионе Италии, но полученных из трех разных сортов. Анализ определил количество 13 компонентов, содержащихся в каждом из трех типов вин. В исходном наборе данных было около 30 переменных, но по какой-то причине была только 13-мерная версия. Атрибуты: 1) Спирт 2) Яблочная кислота 3) Зола 4) Щелочность золы 5) Магний 6) Всего фенолов 7) Флаваноиды 8) Нефлаваноидные фенолы 9) Проантоцианы 10) Интенсивность цвета 11) Оттенок 12) OD280 / OD315 разбавленного вина 13) Пролин. Все атрибуты являются непрерывными: статистика отсутствует, но предлагается стандартизировать переменные для определенных целей (например, для использования с классификаторами, которые НЕ масштабируются инвариантно). ПРИМЕЧАНИЕ. 1-й атрибут - это идентификатор класса (1–3). Я использую технику PCA для уменьшения размерности набора данных вина.

Часть 1. Предварительная обработка данных:

1.1 Импорт библиотек

На этом этапе мы импортируем три библиотеки в часть предварительной обработки данных. Библиотека - это инструмент, который можно использовать для выполнения конкретной работы. Прежде всего, мы импортируем библиотеку numpy, используемую для многомерного массива, затем импортируем библиотеку pandas, используемую для импорта набора данных, и, наконец, импортируем matplotlib. библиотека, используемая для построения графика.

1.2 Импортировать набор данных

На этом этапе мы импортируем набор данных, для этого мы используем библиотеку pandas. После импорта нашего набора данных мы определяем наш предиктор и целевой атрибут. мы называем здесь предиктор «X» и целевой атрибут, который мы называем здесь «y».

1.3. Разделите набор данных для тестирования и обучения

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

Масштабирование функций

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

Здесь мы используем стандартный импорт Scaler из библиотеки Sklearn.

Часть 2. Применение анализа главных компонентов

В этой части мы используем PCA для уменьшения размерности.

2.1 Импорт библиотек

На этом этапе мы импортируем модель PCA из библиотеки Scikit Learn.

2.2 Инициализировать нашу модель

На этом этапе мы используем число компонентов = 2, которые имеют высокую ковариацию.

3.3 Подбор модели

На этом этапе мы подгоняем данные X в модель.

3.4. Проверка отклонения

На этом этапе мы объясняем нашу дисперсию (n_componets = 2)

Часть 3. Применение модели после этапа уменьшения размерности.

3.1 Импорт библиотек

На этом этапе мы создаем нашу модель, чтобы сделать это, сначала мы импортируем модель из Scikit Learn Library.

3.2 Инициализируйте нашу модель логистической регрессии

На этом этапе мы инициализируем нашу модель логистической регрессии.

3.3 Подбор модели

На этом этапе мы подгоняем обучающие данные в нашу модель X_train, y_train - это наши обучающие данные.

Часть 4. Прогнозирование и визуализация результата.

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

4.1. Прогнозирование результата набора тестов

На этом этапе мы прогнозируем результат нашего тестового набора.

4.2 Показатель путаницы

На этом этапе мы делаем метрику путаницы для результата нашего тестового набора, чтобы импортировать матрицу путаницы из sklearn.metrics, затем в матрицу путаницы мы передаем два параметра: сначала y_test, который является фактическим результатом набора тестов, а второй - y_pred, который прогнозирует результат .

4,3 балла точности

На этом этапе мы вычисляем оценку точности на основе фактического результата теста и прогнозируем результаты теста.

Примечание: точность невысока, но наша миссия - попытаться понять, как наша модель работает на практике.

4.4 Визуализируйте результаты нашего набора тестов

На этом этапе мы визуализируем результат нашего набора тестов.

Если вам нужен набор данных и код, вы также можете проверить мой профиль Github.

3.2: Практическая реализация LDA.

Описание набора данных:

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

Эти данные являются результатом химического анализа вин, выращенных в одном и том же регионе Италии, но полученных из трех разных сортов. Анализ определил количество 13 компонентов, содержащихся в каждом из трех типов вин. В исходном наборе данных было около 30 переменных, но по какой-то причине была только 13-мерная версия. Атрибуты: 1) Спирт 2) Яблочная кислота 3) Зола 4) Щелочность золы 5) Магний 6) Всего фенолов 7) Флаваноиды 8) Нефлаваноидные фенолы 9) Проантоцианы 10) Интенсивность цвета 11) Оттенок 12) OD280 / OD315 разбавленного вина 13) Пролин. Все атрибуты являются непрерывными: статистика отсутствует, но предлагается стандартизировать переменные для определенных целей (например, для использования с классификаторами, которые НЕ масштабируются инвариантно). ПРИМЕЧАНИЕ. 1-й атрибут - это идентификатор класса (1–3). Я использую технику PCA для уменьшения размерности набора данных вина.

Часть 1. Предварительная обработка данных:

1.1 Импорт библиотек

На этом этапе мы импортируем три библиотеки в часть предварительной обработки данных. Библиотека - это инструмент, который можно использовать для выполнения конкретной работы. Прежде всего, мы импортируем библиотеку numpy, используемую для многомерного массива, затем импортируем библиотеку pandas, используемую для импорта набора данных, и, наконец, импортируем matplotlib. библиотека, используемая для построения графика.

1.2 Импортировать набор данных

На этом этапе мы импортируем набор данных, для этого мы используем библиотеку pandas. После импорта нашего набора данных мы определяем наш предиктор и целевой атрибут. мы называем здесь предиктор «X» и целевой атрибут, который мы называем здесь «y».

1.3. Разделите набор данных для тестирования и обучения

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

Масштабирование функций

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

Здесь мы используем стандартный импорт Scaler из библиотеки Sklearn.

Часть 2. Применение линейного дискриминантного анализа

В этой части мы используем LDAA для уменьшения размерности.

2.1 Импорт библиотек

На этом этапе мы импортируем модель LDA из библиотеки Scikit Learn.

2.2 Инициализировать нашу модель

На этом этапе мы используем число компонентов = 2, которые имеют высокую ковариацию.

2.3 Подбор модели

На этом этапе мы подгоняем данные X в модель.

Часть 3. Применение модели после уменьшения размерности

3.1 Импорт библиотек

На этом этапе мы создаем нашу модель, чтобы сделать это, сначала мы импортируем модель из Scikit Learn Library.

3.2 Инициализируйте нашу модель логистической регрессии

На этом этапе мы инициализируем нашу модель логистической регрессии.

3.3 Подбор модели

На этом этапе мы подгоняем обучающие данные в нашу модель X_train, y_train - это наши обучающие данные.

Часть 4. Прогнозирование и визуализация результата

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

4.1. Прогнозирование результата набора тестов

На этом этапе мы прогнозируем результат нашего тестового набора.

4.2 Показатель путаницы

На этом этапе мы делаем метрику путаницы для результата нашего тестового набора, чтобы импортировать матрицу путаницы из sklearn.metrics, затем в матрицу путаницы мы передаем два параметра: сначала y_test, который является фактическим результатом набора тестов, а второй - y_pred, который прогнозирует результат .

4.3 Визуализируйте результаты нашего набора тестов

На этом этапе мы визуализируем результат нашего набора тестов.

Если вам нужен набор данных и код, вы также можете проверить мой профиль Github.

Конечные примечания:

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

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

Вы также можете подписаться на меня на Github, чтобы увидеть код и набор данных, следите за этой статьей на Aacademia.edu, Twitter и Напишите мне напрямую или найдите меня в LinkedIn. Я хотел бы получить известие от вас.

Это все, ребята, хорошего дня :)