В интернете много текстов на эту тему, этот пост как раз один из них.

Некоторые примечания (хорошо, чтобы избежать неправильного использования PCA)

  1. PCA предназначен не для того, чтобы регуляризация преодолела переобучение, хотя и уменьшает размерность вектора признаков.
  2. Избегайте PCA, прежде чем пытаться использовать обычную архитектуру моделирования.
  3. PCA не предназначен для генеративных целей, которые могут быть выполнены с помощью Ограниченной машины Больцмана или других архитектур автоэнкодера. Поэтому не используйте PCA в качестве неконтролируемого алгоритма обучения для создания изображений или ощущений.
  4. Используйте PCA для повышения производительности тренировок, когда возникают проблемы с памятью, скоростью, емкостью и т. д.…
  5. PCA не изучает регрессию, а только проецирует многомерные объекты на линию или гиперплоскость. Использование редукции упрощает визуализацию многомерных пространственных объектов. Наконец, сокращения будут восстановлены, даже если они больше никогда не будут использоваться.

Уменьшение размерности — это часть процесса извлечения признаков, который объединяет существующие признаки для создания более полезных. Целью уменьшения размерности является упрощение данных без потери слишком большого количества информации. Анализ основных компонентов (PCA) — один из самых популярных алгоритмов уменьшения размерности. Сначала он идентифицирует гиперплоскость, ближайшую к данным, а затем проецирует данные на нее. Таким образом, несколько многомерных объектов объединяются в один.

В sklearn мы можем очень легко сделать PCA:

pca = PCA(n_components = K)
x_ = pca.fit_transform(x)

Kколичество главных компонентов

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

В sklearn мы можем получить это через вызов pca.explained_variance_ratio_ .

Выбор правильного количества измерений

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

pca = PCA()
pca.fit(x)
cumsum = np.cumsum(pca.explained_variance_ratio_)
d = np.argmax(cumsum ›=0,99) + 1

Эти коды выполняют PCA без уменьшения размерности, а затем вычисляют минимальное количество измерений, необходимых для сохранения 95% дисперсии.

После получения d снова запустите коды с помощью pca = PCA(n_components=d).

Есть лучший способ: вместо того, чтобы указывать количество основных компонентов, которые вы хотите сохранить (интуитивно, несмотря на то, что они не уменьшаются массово и сохраняют достаточное количество функций), вы можете установить n_components как число с плавающей запятой от 0,0 до 1,0. , указывающее отношение дисперсии, которое вы хотите сохранить:

pca = PCA(n_components=0,99)
pca.fit_transform(x)

Внешнее чтение и просмотр

Sklearn в зоне ППШ чек.

проф.Нг курс

Лаборатория кода

Лаборатория по уменьшению размерности изображения с помощью PCA. Восстановите изображение с помощью PCA, оцените изменения интенсивности, включая проверку стоимости и общей вариации.