Описан алгоритм построения кусочно-постоянной зависимости переменной yот взвешенной суммы x = w_1x_1 + ... + w_px_p, минимизирующей сумму квадратов отклонений yот средних значений на диапазонах изменения величины x.

Пример разделения точек на диапазоны
Пример разделения точек на диапазоны

Мотивация

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

Формальная постановка

Входные данные - множество точек (x_i, y_i), i=1..n и количество диапазонов m.

Определим целевую функцию

J=\sum_{k=1}^m\sum_{i\in I_k}(y_i - c_k)^2,

зависящую от диапазонов изменения величины x, где в k-й диапазон попадают точки с индексами из множества I_k, и c_k - это среднее арифметическое значений y_i, где i \in I_k.

  1. Требуется оптимальным образом разбить точки x_i на диапазоны и найти такое разбиение, при котором J минимально.

  2. Требуется найти такие весовые коэффициенты w_k,k=1..p, при которых указанный минимум, найденный при заданных w_k, будет наименьшим.

Алгоритм

Первая задача решается методом динамического программирования. Упорядочим точки (x_i,y_i) по возрастанию координаты x. Выделим подзадачи с параметрами (i,k) - разбить точки с индексами от 1 до i на k диапазонов. Зная решение подзадачи (i,k), пытаемся улучшить решение подзадач (i+j,k+1) для j=0..n-i, заполняя матрицы f_{ik} - минимум целевой функции, r_{ik} - размер последнего диапазона в оптимальном разбиении. Окончательно f_{nm} будет равно минимуму целевой функции, а само разбиение можно будет восстановить по значениям r_{ik}.

Вторая задача является дискретной, и поскольку значение целевой функции зависит только от порядка следования точек x_i, то в зависимости от аргументов w_k целевая функция носит кусочно-постоянный характер, поэтому стандартные нелинейные оптимизаторы здесь неприменимы.

Для подбора коэффициентов w_k предлагается следующий итерационный метод. В качестве начального приближения выбираются коэффициенты w_k, вычисленные из множественной линейной регрессии. Затем на каждой итерации алгоритма будем вычислять оптимальное разбиение при найденных весовых коэффициентах, после чего зафиксируем размеры диапазонов разбиения и оптимизируем весовые коэффициенты при заданных размерах диапазонов.

Таким образом, приходим к следующей подзадаче:

  1. Требуется найти коэффициенты w_k, при которых целевая функция будет минимальна среди всех разбиений на диапазоны, имеющих заданный размер.

Эту задачу предлагается решать наискорейшим покоординатным спуском по каждой переменной w_k. Итак, определим функции z_i(w)=a_i+x_iw. Требуется найти такое w, при котором значение целевой функцииJ (при заданных размерах диапазонов), вычисленный для точек (z_i(w),y_i), окажется наименьшим.

Последняя задача относится к вычислительной геометрии и может быть решена по-разному. Наивный метод состоит в переборе всех точек пересечения графиков функций z_i(w) и z_j(w) и вычислении для каждой точки значения целевой функции J с последующим выбором наилучшего w. Сложность алгоритма составит O(n^3).

Другой способ похож на алгоритм заворачивания подарка для выпуклой оболочки. Этот метод строит графики порядковых статистик множеств z_i(w) по нарастанию w. Нас интересует всё множество событий, когда при постепенном увеличении w содержимое диапазонов изменится вследствие перестановки точки на границе диапазонов с точкой из соседнего диапазона. Поскольку таких событий не более O(nm), то сложность алгоритма составит O(n^2m).

И наконец, можно, как в алгоритме Грэхема, упорядочить все точки по возрастанию координаты x_i и добавлять точки по одной, обновляя каждый раз решение подзадачи построения графиков порядковых статистик в зависимости от w для уже рассмотренных точек. Поскольку n порядковых статистик можно построить за время O(n^2), то нахождение минимума целевой функции займет такое же время.

Таким образом, чтобы оптимизировать значение целевой функции J при заданных размерах диапазонов по коэффициентам w_k, будем оптимизировать по очереди коэффициент в каждом слагаемом в наборе точек x_i=w_1x_{i1}+\ldots+w_px_{ip}, беря остальные слагаемые в этой сумме в качестве свободного члена a_i.

Комментарии (8)


  1. mikko_kukkanen
    01.09.2023 21:09

    Почему кусочно-постоянная, а не, например, кусочно-линейная? Или "криволинейная" типа кривых безье?


    1. lapkin25 Автор
      01.09.2023 21:09

      Да, кусочно-линейная тоже рассматривается часто. Но если взять для примера данные, представленные на рисунке, то видно, что параметр наклона внутри каждого диапазона несущественен за счет разброса точек по игреку.


  1. spidersarecute
    01.09.2023 21:09
    +1

    Не понял постановку задачи...

    Описан алгоритм построения кусочно-постоянной зависимости переменной yот взвешенной суммы x = w_1x_1 + ... + w_px_p

    Может быть, в формуле должно быть y = w1 x1 + w2 x2 ... ? И непонятно, что такое p.

    Требуется найти такие весовые коэффициенты w_k,k=1..p, при которых указанный минимум, найденный при заданных w_k, будет наименьшим.

    Здесь тоже не понял. У вас в формулу для J коэффициенты wk никак не входят.


    1. lapkin25 Автор
      01.09.2023 21:09

      p - это число признаков (независимых переменных), через x обозначена взвешенная сумма координат x_k. На рисунке по горизонтальной оси отложена взвешенная сумма, по вертикальной - зависимая переменная. Ищем зависимость вида y = f(x), для этого промежуток изменения величины x разбивается на интервалы. Далее можно анализировать распределение точек внутри каждого интервала в отдельности - например, как точки каждого интервала зависят от дополнительных факторов z1, z2, ... В формулу для J коэффициенты w_k входят за счет того, что I_k - это диапазон - возможность объединения значений x в диапазоны зависит от их порядка, а порядок следования взвешенных сумм координат каждой точки зависит от коэффициентов w_k.


      1. spidersarecute
        01.09.2023 21:09
        +1

        Ищем зависимость вида y = f(x), для этого промежуток изменения величины x разбивается на интервалы

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


        1. lapkin25 Автор
          01.09.2023 21:09

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


  1. 120gramm
    01.09.2023 21:09

    Юлий, какое практическое применение данной регрессии?


    1. lapkin25 Автор
      01.09.2023 21:09

      Такое же, как и у любой другой обобщенной линейной модели. Здесь каждый диапазон изменения интегрального признака (взвешенной суммы) - это своего рода кластер. А точки, относящиеся к каждому кластеру, можно изучать по отдельности.