Как стать автором
Обновить

Множественная кусочно-постоянная регрессия

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров2.9K

Описан алгоритм построения кусочно-постоянной зависимости переменной 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. Здесь множество I_k содержит индексы точек, попавших в диапазон значений величины x: I_k = \{i\colon x_i \in (t_{k-1}, t_k]\}, где t_k - это границы диапазонов на оси x. Таким образом, функция J зависит от порядка следования индексов координат x_i в упорядоченной последовательности чисел x_i.

  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.

Теги:
Хабы:
Всего голосов 6: ↑6 и ↓0+6
Комментарии13

Публикации

Ближайшие события