Введение

В этом посте рассматривается концепция анализа основных компонентов (PCA). PCA – это метод признака или размерности. Функции — это элементы, значения которых мы используем для каждой выборки данных, используемой для обучения. Рассмотрим следующий пример: мы хотим иметь модель машинного обучения (ML) для прогнозирования цен на дома на основе их других характеристик. Эти характеристики называются функциями. Характеристики также называются измерениями. Каждую функцию можно также рассматривать как ось, поэтому называть их измерениями — это еще один способ взглянуть на происходящее.

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

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

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

Фон

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

Дисперсия и стандартное отклонение

Дисперсия — это мера дисперсии (разброса), которая измеряет, насколько далеко набор чисел разбросан от их среднего значения.

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

Ковариация

Ковариация — это ко+вариантность. Когда префикс «co» появляется рядом со словом, это придает блюду собирательное значение. Ковариация — это мера совместной изменчивости двух переменных.

Различные значения ковариации показывают, как данные разбросаны по независимым переменным.

Корреляция

Корреляция относится к степени линейной связи пары переменных. Это ковариация двух переменных, деленная на произведение их стандартного отклонения.

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

Ковариационная матрица

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

Собственные значения и собственные векторы

Собственные векторы и собственные векторы преобразования (матрицы) показывают векторы и коэффициенты масштабирования, с которыми эти векторы масштабируются при этом преобразовании.

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

Как работает ПСА?

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

Шаг 1: вычисляется средний вектор

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

Шаг 2: Ковариационная матрица набора данных

На этом этапе вычисляется ковариационная матрица набора данных. Поскольку в этой матрице учитывается дисперсия, по этой причине мы упоминаем, что PCA рассматривает дисперсию данных как ключ. Если у нас есть N объектов, у нас будет ковариационная матрица N*N.

Шаг 3: Расчет собственных векторов и собственных значений набора данных

Далее вычисляются собственные векторы и собственные значения ковариационной матрицы. У нас будет матрица N*N, содержащая собственные векторы. Затем собственные векторы сортируются по размеру их собственных значений. Это важно, потому что собственные значения показывают дисперсию каждого собственного вектора, который мы называем главным компонентом (PC). Например, следующая формула показывает дисперсию каждого собственного вектора относительно его собственного значения. Она называется вариантной частью.

Следующая формула показывает, какая дисперсия сохраняется при сохранении первых k основных компонентов. Это называется кумулятивной дисперсией.

После визуализации эффекта сохранения определенного количества основных компонентов рисунок будет выглядеть следующим образом:

Шаг 4: Преобразование в скрытое пространство

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

Для переноса обратно в исходное пространство:

В следующем примере вы можете узнать, как выполнять PCA с помощью библиотеки Python и NumPy.

def mean_vec(dataset):
    mean_vector = []
    
    for i in range(dataset.shape[0]):
        tmp_mean_vector = np.mean(dataset[i, :])
        mean_vector.append(tmp_mean_vector)
        
    mean_vector = np.array(mean_vector)
    return mean_vector

def pca(dataset, k):
    ''''
    step 1: mean of features of all samples (it is assumed that features are on rows)
    step 2: calculating covariance matrix
    step 3: calculating eigenvalues and eigenvectors and sorting based on the eigenvalues
    step 4: choosing k vector to form the transformation matrix
    step 5: transforming the dataset with the transformation matrix
    '''
    # step 1
    mean_vector = mean_vec(dataset)
    
    # step 2
    covariance_matrix = np.cov([dataset[i,:] for i in range(dataset.shape[0])])
    
    # step 3
    eig_val_cm, eig_vec_cm = np.linalg.eig(covariance_matrix)
    
    # Make a list of (eigenvalue, eigenvector) tuples
    eig_pairs = [(np.abs(eig_val_cm[i]), eig_vec_cm[:,i]) for i in range(len(eig_val_cm))]

    # Sort the (eigenvalue, eigenvector) tuples from high to low
    eig_pairs.sort(key=lambda x: x[0], reverse=True)
    
    # step 4
    matrix_w = np.hstack([eig_pairs[i][1].reshape(dataset.shape[0], 1) for i in range(k)])
    
    return matrix_w
# consider you have a spreedsheet of data as dataset
matrix_w = pca(dataset, 10)
transformed_dataset = matrix_w.T.dot((dataset - mean_vector).T)

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

Ссылка







«Ковариационная матрица — Википедия
В теории вероятностей и статистике ковариационная матрица (также известная как автоковариационная матрица, дисперсионная матрица…en.wikipedia.org)