Обсуждение статьи "Нейросети — это просто (Часть 17): Понижение размерности"

 

Опубликована статья Нейросети — это просто (Часть 17): Понижение размерности:

Мы продолжаем рассмотрение моделей искусственного интеллекта. И, в частности, алгоритмов обучения без учителя. Мы уже познакомились с одним из алгоритмов кластеризации. А в этой статье я хочу поделиться с Вами вариантом решения задач понижения размерности.

Метод анализа главных компонент был изобретён английским математиком Карлом Пирсоном ещё в 1901 году. С тех пор он успешно применяется во многих областях науки.

Для понимания сути самого метода предлагаю взять упрощенную задачу понижения размерности 2-мерного массива данных до вектора. С геометрической точки зрения это можно представить как проекция точек некой плоскости на прямую.

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

Такая линия называется главной компонентой. Отсюда и название метода — анализ главных компонент.

С математической точки зрения, каждая главная компонента является числовым вектором с размером, равным размерности исходных данных. Произведение вектора исходных данных описания одного состояния системы на соответствующий вектор главной компоненты и даёт точку проекции анализируемого состояния на прямой.

В зависимости от размерности исходных данных и требований к сжатию данных таких главных компонент может быть несколько, но не более размерности исходных данных. При визуализации объемной проекции их будет 3. А при сжатии данных исходят из допустимой погрешности обычно берется потеря до 1% данных.

Метод главных компонент

Наверное, следует обратить внимание, что это визуально как бы похоже на линейную регрессию. Но это абсолютно разные методы и дают различные результаты.

Автор: Dmitriy Gizlyk

 

Ещё одна область использования методов понижения размерности — это визуализация данных. К примеру, у Вас есть данные описания состояний некой системы, представленные 10 параметрами. И Вам необходимо найти способ визуализировать эти данные. Для восприятия человеком наиболее предпочтительными являются 2-х и 3-мерные изображения. Конечно, можно сделать несколько слайдов с различными вариациями 2-3 параметров. Но это не даст полного представления о картине состояний системы. И в большинстве случаев различные состояния в различных слайдах будут сливаться в 1-ну точку. И не всегда это будут одни и те же состояния.

Поэтому, нам бы хотелось найти такой алгоритм, который помог бы нам перевести все наши состояния системы из 10 параметров в 2-х или 3-мерное пространство. И при этом максимально возможно разделил бы наши состояния системы с сохранение их взаимного расположения. И конечно, при этом с минимальной потерей информации.

Дмитрий, спасибо за статью!

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

Поможет ли метод главных компонент в этом случае? Как будет выглядеть график после понижения размерности? Как из него можно будет извлечь значения того или иного параметра в каждой точке? 

 
Andrey Khatimlianskii #:

Дмитрий, спасибо за статью!

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

Поможет ли метод главных компонент в этом случае? Как будет выглядеть график после понижения размерности? Как из него можно будет извлечь значения того или иного параметра в каждой точке? 

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

ЗЫ, статья зачет, автору респект.
 
Valeriy Yastremskiy #:

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

Видимо, нужно быть в теме, чтобы понять ответ.

По осям расположены параметры стратегии, они могут иметь очень разные значения, быть связанными или независимыми. Хочется анализировать 1 чарт и видеть сразу все взаимосвязи.

 

"Понижая размерность" можно быстро загнать себя в двумерный угол если не понимать, что это работает только "in sample" в большинстве случаев :)

но статья клевая в плане переноса PCA на MQL, хотя он есть в alglib
 
Andrey Khatimlianskii #:

Видимо, нужно быть в теме, чтобы понять ответ.

По осям расположены параметры стратегии, они могут иметь очень разные значения, быть связанными или независимыми. Хочется анализировать 1 чарт и видеть сразу все взаимосвязи.

Нет, сразу все взаимосвязи РСА не даст, только средний некий результат. Он выделит наиболее сильные. Если от параметров результат на долгосроке не зависит, т.е. постоянен, то РСА не поможет. Если влияние параметров на результат ступенчато, или волнообразно постоянно, то тоже не поможет, если конечно анализ не производится в пределах одной волны / ступени) 

 
Maxim Dmitrievsky #:

"Понижая размерность" можно быстро загнать себя в двумерный угол если не понимать, что это работает только "in sample" в большинстве случаев :)

но статья клевая в плане переноса PCA на MQL, хотя он есть в alglib

тенденцию можно узрить)))

 
Andrey Khatimlianskii #:

Дмитрий, спасибо за статью!

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

Поможет ли метод главных компонент в этом случае? Как будет выглядеть график после понижения размерности? Как из него можно будет извлечь значения того или иного параметра в каждой точке? 

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

 
Dmitriy Gizlyk #:

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

Спасибо за ответ.

Если по оси Х будет значение параметра, а по оси Y — результат прогона в деньгах, то после преобразования много информации теряется.

И самое не понятное, как это может выглядеть на 3д чарте. Каким образом будет понижена размерность?

И для 4д? Что получится в итоге?

Наверное, тут нужна хорошая фантазия или глубокое понимание всех процессов )

 
Andrey Khatimlianskii #:

Спасибо за ответ.

Если по оси Х будет значение параметра, а по оси Y — результат прогона в деньгах, то после преобразования много информации теряется.

И самое не понятное, как это может выглядеть на 3д чарте. Каким образом будет понижена размерность?

И для 4д? Что получится в итоге?

Наверное, тут нужна хорошая фантазия или глубокое понимание всех процессов )

Это упрощенный пример совсем, конечно когда у нас 2 параметра и один результат этот метод не сильно нужен. Это когда параметров больше 5, тогда есть проблема визуализации. 4 параметра можно представить видео (один параметр как время) 3 параметра объемное изображение. А результат, плотность или цвет в объемном изображении

из вики неплохое объяснение

Формальная постановка задачи СРА

Задача анализа главных компонент имеет, как минимум, четыре базовые версии:

  • аппроксимировать данные линейными многообразиями меньшей размерности;
  • найти подпространства меньшей размерности, в ортогональной проекции на которые разброс данных (то есть среднеквадратичное отклонение от среднего значения) максимален;
  • найти подпространства меньшей размерности, в ортогональной проекции на которые среднеквадратичное расстояние между точками максимально;
  • для данной многомерной случайной величины построить такое ортогональное преобразование координат, в результате которого корреляции между отдельными координатами обратятся в нуль.
Причина обращения: