Объяснение и реализация PCA на Python

Содержание

  • Вступление
  • Что такое уменьшение размерности?
  • Линейная комбинация
  • Разработка функций и выбор функций
  • Данные
  • PCA
    - Интуиция
    - Математическая разбивка
    - Преимущества
    - Недостатки
    - Реализация
  • Резюме
  • Ресурсы

Введение

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

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

Прежде чем перейти к уменьшению размерности, давайте сначала определим, что такое измерение. Для матрицы A размерность матрицы равна количеству строк по количеству столбцов. Если A имеет 3 строки и 5 столбцов, A будет матрицей 3x5.

A = [1, 2, 3]   --> 1 row, 3 columns
The dimension of A is 1x3

Проще говоря, уменьшение размерности - это именно то, на что это похоже: вы уменьшаете размерность матрицы до чего-то меньшего, чем она есть сейчас. Учитывая квадратную (n на n) матрицу A, цель состоит в том, чтобы уменьшить размер этой матрицы до меньшего, чем n x n.

Current Dimension of A : n
Reduced Dimension of A : n - x, where x is some positive integer

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

Линейная комбинация

Без глубокого погружения в математику, лежащую в основе линейной алгебры, самый простой способ уменьшить размерность матрицы A - это умножить ее на вектор / матрицу X так, чтобы произведение было равно b. Формула будет Ax=B, эта формула будет иметь решение тогда и только тогда, когда B является линейной комбинацией столбцов A.

Пример

The goal is to reduce the matrix 4x4 dimension matrix A to a matrix of 4x2 dimensions. The values below are from a random example.
A = [[1,2,3,4],      x = [[1,2],
     [3,4,5,6],           [3,4],
     [4,5,6,7],           [0,1],
     [5,6,7,8]]           [4,0]]
Ax = [[23,13],
      [39,27],
      [47,34],
      [55,41]]
The output B now has a dimension of 4x2.

Разработка функций и выбор функций

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

Feature 1 | Feature 2 | Feature 3 | Feature 4 | Feature 5 и вы обнаружили, что вы можете комбинировать набор функций без потери информации об этих функциях, выполняя некоторые арифметические операции. Тогда новая функция заменит пары функций, из которых она была создана. Процесс создания новых функций с помощью некоторых средств предварительной обработки известен как проектирование функций, а процесс выбора конкретных функций для целей обучения модели известен как выбор функций.

Example
Feature 1 + Feature 2 = Feature 6
Now your new features are : 
Feature 3 | Feature 4 | Feature 5 | Feature 6

Данные

Я покажу вам, как реализовать PCA через sklearn с использованием данных NBA. Вы можете загрузить данные прямо из моего репозитория GitHub здесь или загрузить их из исходного источника с Kaggle здесь

Анализ основных компонентов (PCA)

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

Интуиция

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

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

Математическая разбивка

Математически PCA можно разбить на 4 простых шага.

  1. Определите центр данных и переместите данные и центр в начало координат
    - Это можно сделать, взяв среднее значение каждого столбца и вычтя исходные данные из этого среднего
  2. Вычислить ковариационную матрицу центрированной матрицы
  3. Вычислить собственный вектор ковариационной матрицы
  4. Спроецируйте собственные векторы на ковариационную матрицу через скалярное произведение

Математически это проекция объекта более высокой размерности в векторное пространство меньшей размерности.

Преимущества

  • Удаляет коррелированные признаки
  • Позволяет упростить визуализацию
  • Помогает уменьшить переобучение

Недостатки

  • Переменные становятся менее интерпретируемыми
  • Потеря информации
  • Стандартизация данных

Реализация

Примечание. Возможно, вам придется изменить путь в строке 11, связанный с местом, где вы сохранили данные.

Резюме

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

Ресурсы

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