В интернете много текстов на эту тему, этот пост как раз один из них.
Некоторые примечания (хорошо, чтобы избежать неправильного использования PCA)
- PCA предназначен не для того, чтобы регуляризация преодолела переобучение, хотя и уменьшает размерность вектора признаков.
- Избегайте PCA, прежде чем пытаться использовать обычную архитектуру моделирования.
- PCA не предназначен для генеративных целей, которые могут быть выполнены с помощью Ограниченной машины Больцмана или других архитектур автоэнкодера. Поэтому не используйте PCA в качестве неконтролируемого алгоритма обучения для создания изображений или ощущений.
- Используйте PCA для повышения производительности тренировок, когда возникают проблемы с памятью, скоростью, емкостью и т. д.…
- 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, оцените изменения интенсивности, включая проверку стоимости и общей вариации.