2.2. Manifold learning¶
Manifold learning - это подход к нелинейному сокращению размерности.
Алгоритмы для решения этой задачи основаны на идее, что размерность многих наборов данных лишь искусственно завышена.
2.2.1. Введение¶
Высокоразмерные наборы данных бывает очень сложно визуализировать. В то время как данные в двух или трех измерениях могут быть построены на графике, чтобы показать присущую им структуру, эквивалентные графики высокоразмерных данных гораздо менее интуитивны. Чтобы облегчить визуализацию структуры набора данных, необходимо каким-то образом снизить его размерность.
Простейшим способом снижения размерности является случайная проекция данных. Хотя это и позволяет в некоторой степени визуализировать структуру данных, случайность выбора оставляет желать лучшего. В случайной проекции, скорее всего, будет потеряна более интересная структура данных.
Для решения этой проблемы был разработан ряд контролируемых и неконтролируемых алгоритмов линейного сокращения размерности, таких как анализ главных компонент (PCA), анализ независимых компонент (Independent Component Analysis), Линейный Дискриминантный Анализ (Linear Discriminant Analysis) и другие. Эти алгоритмы определяют конкретные рубрики для выбора “интересной” линейной проекции данных. Эти методы могут быть мощными, но часто не учитывают важную нелинейную структуру данных.
Manifold learning можно рассматривать как попытку обобщить линейные структуры, такие как PCA, чтобы они были чувствительны к нелинейной структуре данных. Хотя существуют и контролируемые варианты, типичная проблема обучения manifold является неконтролируемой: она изучает высокоразмерную структуру данных из самих данных, без использования заранее определенных классификаций.
Ниже приведена краткая информация о реализациях manifold обучении, доступных в scikit-learn.
2.2.2. Isomap¶
Одним из самых ранних подходов к изучению manifold является алгоритм Isomap, сокращение от Isometric Mapping. Isomap можно рассматривать как расширение многомерного шкалирования (MDS) или Kernel PCA.
Isomap ищет более низкоразмерное вложение, которое сохраняет геодезические расстояния между всеми точками.
Isomap можно выполнить с помощью объекта Isomap
.
Алгоритм Isomap состоит из трех этапов: 1. Поиск ближайших соседей. Isomap использует Наиболее эффективными известными алгоритмами для этого являются алгоритм Дейкстры, который приблизительно равен \(O[N^2(k + \log(N))]\), или алгоритм Флойда-Уоршалла, который равен \(O[N^3]\). Алгоритм может быть выбран пользователем с помощью ключевого слова Частичное разложение по собственным значениям. Ембединги кодируется в собственные векторы, соответствующие наибольшим собственным значениям \(d\) ядра isomap \(N \times N\). Для плотного алгоритма стоимость составляет примерно \(O[d N^2]\). Часто эту стоимость можно улучшить, используя алгоритм Общая сложность Isomap составляет \(O[D \log(k) N \log(N)] + O[N^2(k + \log(N))] + O[d N^2]\). \(N\) : количество точек обучающих данных. \(D\) : размерность входных данных \(k\) : количество ближайших соседей \(d\) : выходная размерность
Сложность
Click for more details
¶
BallTree
для эффективного поиска соседей.
Сложность составляет приблизительно \(O[D \log(k) N \log(N)]\), для \(k\) ближайших соседей из \(N\) точек в \(D\) измерениях.
path_method
в Isomap
. Если он не указан, код пытается выбрать наилучший алгоритм для входных данных.ARPACK
. Eigensolver может быть задан пользователем с помощью ключевого слова eigen_solver
в Isomap
. Если он не указан, код пытается выбрать наилучший алгоритм для входных данных.
2.2.3. Локально-линейные ембединги¶
Локально-линейные ембединги (Locally linear embedding - LLE) ищет более низкоразмерную проекцию данных, которая сохраняет расстояния в локальных окрестностях. Его можно представить как серию локальных анализов главных компонент (Principal Component Analyses), которые глобально сравниваются для нахождения наилучшего нелинейного ембединга.
Локально-линейные ембединги можно выполнить с помощью функции locally_linear_embedding
или ее объектно-ориентированного аналога LocallyLinearEmbedding
.
Стандартный алгоритм LLE состоит из трех этапов: Поиск ближайших соседей. См. обсуждение в разделе Isomap выше. Построение матрицы весов. \(O[D N k^3]\). Построение матрицы весов LLE включает в себя решение линейного уравнения \(k \times k\) для каждой из \(N\) локальных окрестностей. Частичное разложение по собственным значениям. См. обсуждение в разделе Isomap выше. Общая сложность стандартного LLE составляет \(O[D \log(k) N \log(N)] + O[D N k^3] + O[d N^2]\). \(N\): количество точек обучающих данных. \(D\) : размерность входных данных \(k\) : количество ближайших соседей \(d\) : выходная размерность
Сложность
Click for more details
¶
2.2.4. Модифицированное Локально-линейные ембединги¶
Одной из известных проблем LLE является проблема регуляризации. Когда число соседей превышает число размерностей входных данных, матрица, определяющая каждую локальную окрестность, оказывается рангово-дефицитной. Чтобы решить эту проблему, в стандартном LLE применяется произвольный параметр регуляризации \(r\), который выбирается относительно следа матрицы локальных весов. Хотя формально можно показать, что при \(r \to 0\) решение сходится к желаемому ембедингу, нет никакой гарантии, что оптимальное решение будет найдено при \(r > 0\). Эта проблема проявляется в ембедингах, искажающих геометрию многообразия.
Одним из методов решения проблемы регуляризации является использование нескольких весовых векторов в каждой окрестности.
В этом заключается суть модифицированного Локально-линейного Ембединги (MLLE).
MLLE можно выполнить с помощью функции locally_linear_embedding
или ее объектно-ориентированного аналога LocallyLinearEmbedding
, с ключевым словом method = 'modified'
. Для этого требуется n_neighbors > n_components
.
Алгоритм MLLE состоит из трех этапов: Поиск ближайших соседей. Аналогично стандартному LLE Построение матрицы весов. Приблизительно \(O[D N k^3] + O[N (k-D) k^2]\). Первый термин в точности эквивалентен тому, что есть в стандартном LLE. Второй член связан с построением матрицы весов из множества весов. На практике дополнительные затраты на построение весовой матрицы MLLE относительно невелики по сравнению с затратами на этапы 1 и 3. Частичное разложение по собственным значениям. Аналогично стандартному LLE Общая сложность MLLE составляет \(O[D \log(k) N \log(N)] + O[D N k^3] + O[N (k-D) k^2] + O[d N^2]\). \(N\): количество точек обучающих данных. \(D\) : размерность входных данных \(k\) : количество ближайших соседей \(d\) : выходная размерность
Сложность
Click for more details
¶
2.2.5. Собственное отображение Гессиана¶
Hessian Eigenmapping (также известный как Hessian-based LLE: HLLE) - это еще один метод решения проблемы регуляризации LLE.
Он основан на использовании квадратичной формы на основе гессиана в каждой окрестности, которая используется для восстановления локально линейной структуры.
Хотя другие реализации отмечают его плохое масштабирование с размером данных, sklearn
реализует некоторые алгоритмические улучшения, которые делают его стоимость сравнимой с другими вариантами LLE для малой размерности вывода.
HLLE можно выполнить с помощью функции locally_linear_embedding
или ее объектно-ориентированного аналога LocallyLinearEmbedding
, с ключевым словом method = 'hessian'
.
Для этого требуется n_neighbors > n_components * (n_components + 3) / 2
.
Алгоритм HLLE состоит из трех этапов: Поиск ближайших соседей. Аналогично стандартному LLE Построение матрицы весов. Приблизительно \(O[D N k^3] + O[N d^6]\). Первый член отражает стоимость, аналогичную стоимости стандартного LLE. Второй член получается из QR-разложения локальной модели гессиана. Частичное разложение по собственным значениям. Аналогично стандартному LLE Общая сложность стандартного HLLE составляет
\(O[D \log(k) N \log(N)] + O[D N k^3] + O[N d^6] + O[d N^2]\). \(N\): количество точек обучающих данных \(D\) : размерность входных данных \(k\) : количество ближайших соседей \(d\) : выходная размерность
Сложность
Click for more details
¶
2.2.6. Спектральные ембединги¶
Спектральные ембединги (Spectral Embedding) - это подход к вычислению нелинейных ембедингов.
Scikit-learn реализует Laplacian Eigenmaps, который находит низкоразмерное представление данных, используя спектральное разложение лапласиана графа. Полученный граф можно рассматривать как дискретную аппроксимацию низкоразмерного многообразия в высокоразмерном пространстве. Минимизация функции стоимости на основе графа гарантирует, что точки, близкие друг к другу на многообразии, будут отображены близко друг к другу в низкоразмерном пространстве с сохранением локальных расстояний. Спектральные ембединги можно получить с помощью функции spectral_embedding
или ее объектно-ориентированного аналога SpectralEmbedding
.
Алгоритм Спектральные ембединги(Laplacian Eigenmaps) состоит из трех этапов: Построение взвешенного графика. Преобразование исходных данных в граф, используя представление матрицы близости (смежности) (affinity (adjacency) matrix). Построение лапласиана графа. ненормированный лапласиан графа строится как \(L = D - A\) для, а нормированный как \(L = D^{-\frac{1}{2}} (D - A) D^{-\frac{1}{2}}\). Частичное разложение по собственным значениям. Разложение по собственным значениям выполняется на лапласиане графа Общая сложность спектрального вложения составляет \(O[D \log(k) N \log(N)] + O[D N k^3] + O[d N^2]\). \(N\): количество точек обучающих данных. \(D\) : размерность входных данных \(k\) : количество ближайших соседей \(d\) : выходная размерность
Сложность
Click for more details
¶
2.2.7. Локальное выравнивание касательного пространства (Local Tangent Space Alignment)¶
Хотя технически это не вариант LLE, Локальное выравнивание касательного пространства (Local Tangent Space Alignment- LTSA) алгоритмически достаточно похоже на LLE, чтобы его можно было отнести к этой категории.
Вместо того чтобы сосредоточиться на сохранении расстояний между соседями, как в LLE, LTSA стремится охарактеризовать локальную геометрию в каждой окрестности через ее касательное пространство и выполняет глобальную оптимизацию для выравнивания этих локальных касательных пространств, чтобы получить ембединги. LTSA можно выполнить с помощью функции locally_linear_embedding
или ее объектно-ориентированного аналога LocallyLinearEmbedding
, с ключевым словом method = 'ltsa'
.
Алгоритм LTSA состоит из трех этапов: Поиск ближайших соседей. Аналогично стандартному LLE Построение матрицы весов. Приблизительно \(O[D N k^3] + O[k^2 d]\). Первый член отражает стоимость, аналогичную стоимости стандартного LLE. Частичное разложение по собственным значениям. Аналогично стандартному LLE Общая сложность стандартного LTSA составляет
\(O[D \log(k) N \log(N)] + O[D N k^3] + O[k^2 d] + O[d N^2]\). \(N\): количество точек обучающих данных. \(D\) : размерность входных данных \(k\) : количество ближайших соседей \(d\) : выходная размерность
Сложность
Click for more details
¶
2.2.8. Многомерное масштабирование (Multi-dimensional Scaling - MDS)¶
Многомерное масштабирование (MDS
) ищет низкоразмерное представление данных, в котором расстояния хорошо соответствуют расстояниям в исходном высокоразмерном пространстве.
В целом, MDS
- это техника, используемая для анализа данных о сходстве или несходстве. Она пытается смоделировать данные о сходстве или несходстве как расстояния в геометрических пространствах. В качестве данных могут выступать рейтинги сходства между объектами, частоты взаимодействия молекул или торговые индексы между странами.
Существует два типа алгоритма MDS: метрический и неметрический. В scikit-learn класс MDS
реализует оба типа. В метрическом MDS входная матрица сходства образуется из метрики (и, следовательно, соблюдается треугольное неравенство), расстояния между двумя точками на выходе устанавливаются как можно ближе к данным сходства или несходства. В неметрической версии алгоритмы пытаются сохранить порядок расстояний и, следовательно, ищут монотонную связь между расстояниями в ембединг пространстве и сходством/несходством.
Пусть \(S\) - матрица сходства, а \(X\) - координаты \(n\) входных точек. Неравенства \(\hat{d}_{ij}\) - это преобразования сходств, выбранные некоторым оптимальным образом. Цель, называемая напряжением, определяется \(\sum_{i < j} d_{ij}(X) - \hat{d}_{ij}(X)\).
В простейшей метрической модели Чаще всего неравенство задается в виде \(\hat{d}_{ij} = b S_{ij}\).
Метрическая модель MDS
Click for more details
¶
MDS
, называемой абсолютной MDS, неравенство определяется \(\hat{d}_{ij} = S_{ij}\).
При абсолютной MDS значение \(S_{ij}\) должно точно соответствовать расстоянию между точками \(i\) и \(j\) в точке вложения.
Не метрическая Тривиальным решением этой проблемы является установка всех точек на начало координат. Чтобы избежать этого, неравенство \(\hat{d}_{ij}\) нормализуются. Обратите внимание, что поскольку нас интересует только относительное упорядочивание, наша задача должна быть инвариантна к простому переводу и масштабированию, однако напряжение, используемое в метрической MDS, чувствительно к масштабированию.
Для решения этой проблемы в неметрических MDS может использоваться нормированное напряжение, известное как Stress-1, определяемое как Использование нормализованного Stress-1 можно включить, задав
Не метрическая модель MDS
Click for more details
¶
MDS
фокусируется на упорядочивании данных.
Если \(S_{ij} > S_{jk}\), то ембединг должен обеспечивать \(d_{ij} < d_{jk}\).
По этой причине мы обсуждаем его в терминах несходства (\(\delta_{ij}\)), а не сходства (\(S_{ij}\)).
Заметим, что несходство легко получить из сходства с помощью простого преобразования, например, \(\delta_{ij}=c_1-c_2 S_{ij}\) для некоторых вещественных констант \(c_1, c_2\).
Простой алгоритм для обеспечения надлежащей упорядоченности заключается в использовании монотонной регрессии \(d_{ij}\) на \(\delta_{ij}\), дающей дисперсии \(\hat{d}_{ij}\) в том же порядке, что и \(\delta_{ij}\).normalized_stress=True
, однако это совместимо только с неметрической задачей MDS и будет игнорироваться в метрическом случае.
2.2.9. Стохастическое вложение соседей с t-распределением (t-distributed Stochastic Neighbor Embedding - t-SNE)¶
t-SNE (TSNE
) преобразует родственные точки данных в вероятности. Родственные точки в исходном пространстве представлены гауссовскими совместными вероятностями, а родственные данные во встроенном пространстве - t-распределениями Стьюдента. Это позволяет t-SNE быть особенно чувствительным к локальной структуре и имеет ряд других преимуществ перед существующими методами:
Выявление структуры на многих масштабах на одной карте
Выявление данных, которые лежат в нескольких, различных, многообразий или кластеров
Уменьшение тенденции к слиянию точек в центре
В то время как Isomap, LLE и другие варианты лучше всего подходят для разворачивания одного непрерывного многообразия низкой размерности, t-SNE фокусируется на локальной структуре данных и стремится выделить кластерные локальные группы образцов, как показано на примере S-кривой. Такая способность группировать образцы на основе локальной структуры может оказаться полезной для визуального расчленения набора данных, состоящего сразу из нескольких многообразий, как в случае с набором данных по цифрам.
Расхождение Куллбэка-Лейблера (Kullback-Leibler - KL) между совместными вероятностями в исходном пространстве и встроенном пространстве будет минимизировано градиентным спуском. Обратите внимание, что расхождение KL не является выпуклым, т.е. несколько перезапусков с разными инициализациями приведут к локальным минимумам расхождения KL. Поэтому иногда полезно попробовать разный сид (случайную инициализацию) и выбрать вложение с наименьшей KL-дивергенцией.
Недостатки использования t-SNE заключаются в следующем:
t-SNE требует больших вычислительных затрат и может занять несколько часов на наборах данных с миллионными выборками, где PCA завершается за несколько секунд или минут.
Метод Барнса-Хута t-SNE ограничен двух- или трехмерными вложением.
Алгоритм стохастический, и несколько перезапусков с разными сидами могут дать разные вложения. Однако вполне законно выбрать вложение с наименьшей ошибкой.
Глобальная структура не сохраняется в явном виде. Эта проблема решается инициализацией точек с помощью PCA (с помощью
init='pca'
).
Основная цель t-SNE - визуализация высокоразмерных данных. Следовательно, он лучше всего работает, когда данные будут вложены в два или три измерения. Оптимизация расхождения KL иногда может быть немного сложной. Существует пять параметров, которые управляют оптимизацией t-SNE и, следовательно, качеством полученного вложения: перплексия (perplexity) коэффициент раннего “преувеличения” скорость обучения (learning rate) максимальное количество итераций угол (не используется в точном методе) Перплексия определяется как \(k=2^{(S)}\), где \(S\) - энтропия Шеннона условного распределения вероятностей.
Перплексия с \(k\) сторонами равно \(k\), так что \(k\) - это число ближайших соседей, которое t-SNE учитывает при генерации условных вероятностей. Большие сложности приводят к большему числу ближайших соседей и менее чувствительны к малой структуре.
И наоборот, при меньшей сложности учитывается меньшее число соседей, а значит, игнорируется больше глобальной информации в пользу локальной.
При увеличении размера набора данных для получения разумной выборки локальной окрестности потребуется больше точек, поэтому может потребоваться большее значение перплексии.
Аналогично, более шумные наборы данных потребуют больших значений перплексии, чтобы охватить достаточное количество локальных соседей и увидеть их за пределами фонового шума. Максимальное число итераций обычно достаточно велико и не требует настройки.
Оптимизация состоит из двух фаз: фазы раннего “преувеличения” и финальной оптимизации.
Во время раннего “преувеличения” совместные вероятности в исходном пространстве искусственно увеличиваются путем умножения на заданный коэффициент.
Большие коэффициенты приводят к увеличению разрывов между естественными кластерами в данных.
Если коэффициент слишком велик, расхождение KL может увеличиться на этом этапе.
Обычно его не нужно настраивать. Важным параметром является скорость обучения. Если она слишком низкая, градиентный спуск застрянет в плохом локальном минимуме.
Если она слишком высока, то расхождение KL будет увеличиваться во время оптимизации.
Эвристика, предложенная в работе Белкиной и др. (2019), заключается в том, чтобы установить скорость обучения на размер выборки, деленный на коэффициент раннего “преувеличения”.
Мы реализуем эту эвристику как аргумент “Как эффективно использовать t-SNE” содержит хорошее обсуждение влияния различных параметров, а также интерактивные графики для изучения влияния различных параметров.
Оптимизация t-SNE
Click for more details
¶
learning_rate='auto'
. Больше советов можно найти в FAQ Лоренса ван дер Маатена (см. ссылки).
Последний параметр, угол, является компромиссом между производительностью и точностью.
Большие углы означают, что мы можем аппроксимировать большие области одной точкой, что приводит к большей скорости, но менее точным результатам.
Реализованный здесь t-SNE Барнса-Хута (Barnes-Hut) обычно работает гораздо медленнее, чем другие алгоритмы обучения множеств.
Оптимизация довольно сложна, а вычисление градиента составляет \(O[d N log(N)]\), где \(d\) - число размерностей вывода, а \(N\) - число выборок. Метод Барнса-Хута улучшает точный метод, где сложность t-SNE составляет \(O[d N^2]\), но имеет несколько других заметных отличий: Реализация Barnes-Hut работает только в том случае, если размерность цели равна 3 или меньше. Двумерный случай типичен для построения визуализаций. Barnes-Hut работает только с плотными входными данными. Разреженные матрицы данных могут быть встроены только точным методом или могут быть аппроксимированы плотной низкоранговой проекцией, например, с помощью Barnes-Hut является аппроксимацией точного метода. Аппроксимация параметризуется параметром angle, поэтому параметр angle не используется, если method=”exact” Barnes-Hut значительно лучше масштабируется. Barnes-Hut можно использовать для встраивания сотен тысяч точек данных, в то время как точный метод может обрабатывать тысячи образцов, прежде чем станет невыполнимым с вычислительной точки зрения Для целей визуализации (что является основной областью применения t-SNE) настоятельно рекомендуется использовать метод Барнса-Хута. Точный метод t-SNE полезен для проверки теоретических свойств вложения, возможно, в пространстве более высокой размерности, но ограничен небольшими наборами данных из-за вычислительных ограничений. Также обратите внимание, что метки цифр примерно соответствуют естественной группировке, найденной с помощью t-SNE, в то время как линейная 2D-проекция модели PCA дает представление, в котором области меток в значительной степени перекрываются.
Это сильный признак того, что эти данные могут быть хорошо разделены нелинейными методами, ориентированными на локальную структуру (например, SVM с гауссовым RBF-ядром). Однако неспособность визуализировать хорошо разделенные однородно помеченные группы с помощью t-SNE в 2D не обязательно означает, что данные не могут быть правильно классифицированы с помощью обученых моделей.
Возможно, 2 измерения недостаточно высоки для точного представления внутренней структуры данных.
Метод Барнса-Хута (Barnes-Hut) t-SNE
Click for more details
¶
PCA
.
2.2.10. Советы по практическому использованию¶
Убедитесь, что для всех признаков используется один и тот же масштаб. Поскольку методы многомерного обучения основаны на поиске ближайших соседей, в противном случае алгоритм может работать плохо. Удобные способы масштабирования разнородных данных см. в StandardScaler.
Ошибка реконструкции, вычисленная каждой процедурой, может быть использована для выбора оптимальной размерности вывода. Для \(d\)-мерного многообразия, вложенного в \(D\)-мерное пространство параметров, ошибка реконструкции будет уменьшаться по мере увеличения
n_components
, покаn_components == d
.Обратите внимание, что зашумленные данные могут “замыкать” многообразие, по сути, выступая в качестве моста между частями многообразия, которые в противном случае были бы хорошо разделены. Изучение многообразий на зашумленных и/или неполных данных является активной областью исследований.
Определенные конфигурации входных данных могут привести к сингулярным весовым матрицам, например, когда более двух точек в наборе данных идентичны, или когда данные разбиты на разобщенные группы. В этом случае
solver='arpack'
не сможет найти нулевое пространство. Самый простой способ решить эту проблему - использоватьsolver='dense'
, который будет работать с сингулярной матрицей, хотя это может быть очень медленно в зависимости от количества входных точек. В качестве альтернативы можно попытаться понять источник сингулярности: если она вызвана непересекающимися множествами, то увеличениеn_neighbors
может помочь. Если она вызвана идентичными точками в наборе данных, может помочь удаление этих точек.
См. также
Ембединги (Embedding) совершенно случайных деревьев также может быть полезен для получения нелинейных представлений пространства признаков, однако он не выполняет снижение размерности.