Ответ
Процент потерянной дисперсии — это доля информации (дисперсии), которая не сохранилась после проецирования данных на выбранные главные компоненты. Он рассчитывается как 1 - сумма объяснённой дисперсии выбранных компонент.
В scikit-learn объяснённая дисперсия для каждой компоненты хранится в атрибуте explained_variance_ratio_.
Пример расчёта:
from sklearn.decomposition import PCA
import numpy as np
# Генерация синтетических данных
np.random.seed(42)
X = np.random.randn(100, 10) # 100 объектов, 10 признаков
# Применяем PCA, оставляя 3 главные компоненты
pca = PCA(n_components=3)
X_transformed = pca.fit_transform(X)
# Суммарная объяснённая дисперсия
explained_variance_total = np.sum(pca.explained_variance_ratio_)
# Потерянная дисперсия
lost_variance = 1 - explained_variance_total
print(f"Объяснённая дисперсия: {explained_variance_total:.2%}")
print(f"Потерянная дисперсия: {lost_variance:.2%}")
Практическое применение: Этот показатель помогает принять решение о количестве компонент. Например, можно подбирать n_components так, чтобы потерянная дисперсия не превышала заданный порог (например, 5%).