Поиск…


Сокращение размера с помощью анализа основных компонентов

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

Общий метод понижения размерности является использование только K первых таких линейных комбинаций. Предположим, что функции представляют собой матрицу X из n строк и m столбцов. Первые k линейных комбинаций образуют матрицу β k из m строк и k столбцов. Продукт X β имеет n строк и k столбцов. Таким образом, полученную матрицу β k можно рассматривать как уменьшение от m до k размерностей, сохраняя части с высокой дисперсией исходной матрицы X.

В scikit-learn , PCA выполняется с помощью sklearn.decomposition.PCA . Например, предположим, что мы начинаем с матрицы 100 X 7, построенной так, чтобы дисперсия содержалась только в первых двух столбцах (путем уменьшения числа последних 5 столбцов):

import numpy as np
np.random.seed(123) # we'll set a random seed so that our results are reproducible
X = np.hstack((np.random.randn(100, 2) + (10, 10), 0.001 * np.random.randn(100, 5)))

Давайте сделаем сокращение до 2-х измерений:

from sklearn.decomposition import PCA
pca = PCA(n_components=2)
pca.fit(X)

Теперь давайте проверим результаты. Во-первых, вот линейные комбинации:

pca.components_
# array([[ -2.84271217e-01,  -9.58743893e-01,  -8.25412629e-05,
#           1.96237855e-05,  -1.25862328e-05,   8.27127496e-05,
#          -9.46906600e-05],
#        [ -9.58743890e-01,   2.84271223e-01,  -7.33055823e-05,
#          -1.23188872e-04,  -1.82458739e-05,   5.50383246e-05,
#           1.96503690e-05]])

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

Чтобы проверить соотношение дисперсии, объясненную этим СПС, мы можем рассмотреть pca.explained_variance_ratio_ :

pca.explained_variance_ratio_
# array([ 0.57039059,  0.42960728])


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow