🙌🏻Анализ главных компонент: 7 методов сокращения размерности в Scikit-Learn
Одна из главных проблем машинного обучения на больших наборах данных – это огромный размер вычислительных векторов. Поэтому способы снижения размерности для уменьшения количества переменных очень актуальны. Таким способом является анализ главных компонентов (PCA, Principal Component Analysis), суть которого в уменьшении размерности набора данных, сохранив при этом как можно больше «изменчивости», т.е. статистической информации.
PCA - это статистический метод преобразования данных большой размерности в данные низкой размерности путем выбора наиболее важных фич, которые собирают максимум информации о датасете. Фичи выбираются на основе отклонений, которые они вызывают в выходных данных. Признак, вызывающий наибольшую дисперсию, - это первый главный компонент. Признак, отвечающий за вторую по величине дисперсию, считается вторым главным компонентом и пр. Важно, что главные компоненты никак не связаны друг с другом. Помимо ускорения ML-алгоритмов, PCA позволяет визуализировать данные, проецируя их в более низкое измерение, чтобы отобразить в двухмерном или трехмерном пространстве.
Популярная Python-библиотека Scikit-learn включает модуль sklearn.decomposition.PCA, который реализован как объект-преобразователь для множества компонентов в методе fit(). Его также можно использовать для новых данных, чтобы проецировать их на эти компоненты. Чтобы воспользоваться методом PCA в библиотеке Scikit-Learn, следует выполнить 2 шага:
1. Инициализировать класс PCA, передав нужное количество компонентов конструктору;
2. вызвать методы подгонки, а затем преобразовать их, передав им набор фичей. Метод преобразования возвращает указанное количество основных компонентов.
Scikit-learn поддерживает несколько вариантов метода PCA:
• Kernel Principal Component Analysis (KPCA) - метод нелинейного уменьшения размерности с использованием ядра. Ядро PCA было разработано, чтобы помочь с классификацией данных, границы решения которых описываются нелинейной функцией. Идея состоит в том, чтобы перейти в пространство более высокого измерения, в котором граница принятия решения становится линейной. В модуле sklearn.decomposition есть разные ядра: линейное (linear), полиномиальное (poly), ядро гауссовой радиальной базисной функции (rbf), сигмоидальное (sigmoid') и пр. По умолчанию используется линейное (linear), что подходит, если данные линейно разделимы.
• Sparse PCA – разреженный вариант PCA, целью которого является извлечение набора разреженных компонентов, которые наилучшим образом восстанавливают данные. Обычно компоненты, извлеченные методом PCA, имеют исключительно плотные выражения, т.е. ненулевые коэффициенты как линейные комбинации исходных переменных. Это затрудняет интерпретацию результатов. На практике реальные главные компоненты можно более естественно представить как разреженные векторы, например, при распознавании лиц они могут отображать части лиц.
• Incremental Principal Component Analysis (IPCA) - инкрементный метод PCA, когда набор данных для декомпозиции слишком велик для размещения в памяти. IPCA строит приближение низкого ранга для входных данных, используя объем памяти, не зависящий от объема входной выборки. Он по-прежнему зависит от входных фичей, но изменение размера пакета позволяет контролировать использование памяти.
• Fast Independent Component Analysis (ICA) – быстрый независимый PCA используется для оценки источников с учетом зашумленных измерений и восстановления источников, поскольку классический PCA не работает с негауссовскими процессами.
Post #156
398