Порождение нелинейных регрессионных моделей (пример)
Материал из MachineLearning.
| Строка 13: | Строка 13: | ||
| [[Изображение:Clip_image001.gif|300px]] | [[Изображение:Clip_image001.gif|300px]] | ||
| - | Так, дереву '''А''' соответствует суперпозиция <tex>2(1(1),2(1,1))</tex>, а дереву '''Б''' – суперпозиция <tex>1(2(1,1))</tex>. | + | Так, дереву '''А''' соответствует суперпозиция <tex>2(1(1),2(1,1))</tex>, а дереву '''Б''' – суперпозиция <tex>1(2(1,1))</tex>. | 
| - | + | ||
| + | == Альтернативная интерпретация == | ||
| + | Эта интерпретация особенно ценна, если нельзя вызвать <tex>g^{_{(2)}}_i(x,x)</tex> в виде <tex>g^{_{(2)}}_i(x)</tex>. Изменение состоит в том, что листья дерева суперпозиции считаются не функциями, а свободными переменными. В этом случае дереву '''А''' будет соответствовать суперпозиция <tex>2(1(x), 2(x,x))</tex> дереву '''Б''' – суперпозиция <tex>1(2(x,x))</tex>. | ||
| == Порождение множества деревьев суперпозиций == | == Порождение множества деревьев суперпозиций == | ||
| Строка 23: | Строка 25: | ||
| Так, деревья '''А''' и '''В''' различны с точки зрения задаваемых суперпозиций, но деревья '''А''' и '''Б''' идентичны. Поэтому при машинной реализации можно вообще исключить деревья типа '''Б''', т.е. если из вершины исходит одно ребро, будем «рисовать» его «сверху вниз, справа налево», как в деревьях '''А''' и '''В'''.<br /> | Так, деревья '''А''' и '''В''' различны с точки зрения задаваемых суперпозиций, но деревья '''А''' и '''Б''' идентичны. Поэтому при машинной реализации можно вообще исключить деревья типа '''Б''', т.е. если из вершины исходит одно ребро, будем «рисовать» его «сверху вниз, справа налево», как в деревьях '''А''' и '''В'''.<br /> | ||
| Порождение деревьев осуществим по уровням глубины. Т.е. для задачи порождения деревьев высоты не больше <tex>n</tex> породим все деревья высоты не больше <tex>n-1</tex> и запишем их в список <tex>1</tex>. В список <tex>2</tex> поместим все деревья высоты ровно <tex>n-1</tex>. Далее возьмём дерево из списка <tex>2</tex>, построим всевозможные деревья высоты <tex>n</tex> из него, получаемые добавлением рёбер к вершинам нижнего уровня глубины, и поместим их в конец списка <tex>1</tex>. То же проделаем со всеми остальными деревьями списка <tex>2</tex>. | Порождение деревьев осуществим по уровням глубины. Т.е. для задачи порождения деревьев высоты не больше <tex>n</tex> породим все деревья высоты не больше <tex>n-1</tex> и запишем их в список <tex>1</tex>. В список <tex>2</tex> поместим все деревья высоты ровно <tex>n-1</tex>. Далее возьмём дерево из списка <tex>2</tex>, построим всевозможные деревья высоты <tex>n</tex> из него, получаемые добавлением рёбер к вершинам нижнего уровня глубины, и поместим их в конец списка <tex>1</tex>. То же проделаем со всеми остальными деревьями списка <tex>2</tex>. | ||
| + | |||
| + | |||
| + | == Обход дерева суперпозиции == | ||
| + | Следующий этап алгоритма – это получение по дереву задаваемой им суперпозиции в виде строки символов {<tex>,</tex> <tex>(</tex> <tex>)</tex> <tex>1</tex> <tex>2</tex>}, где <tex>1</tex> и <tex>2</tex> означают <tex>g^{_{(1)}}_i</tex> и <tex>g^{_{(2)}}_i</tex>. | ||
| + | |||
| + | [[Изображение:Clip_image003.gif|369px]] | ||
| + | |||
| + | Для этого совершим обход дерева в глубину и поставим вершине типа '''А''' в соответствие конструкцию <tex>2( , )</tex>, вершине '''В''' – <tex>1( )</tex>, вершине '''C''' – <tex>1</tex>. | ||
| + | |||
| + | |||
| + | == Уточнение типа функции == | ||
| + | Для порождения полного списка возможных суперпозиций, в которых вместо <tex>g_i^{_{(1)}}</tex> и <tex>g_i^{_{(2)}}</tex> стоят <tex>1</tex> и <tex>2</tex>, –  нужно, воспользовавшись тем, что <tex>g_i^{_{(2)}}(x,y)</tex> может быть вызвана как <tex>g_i^{_{(2)}}(x)</tex>, заменить в каждой строке суперпозиции всеми возможными способами цифру <tex>1</tex> на <tex>2</tex>. Это несложно реализуется полным перебором – в каждом вхождении <tex>1</tex> нужно выбрать, заменять её или нет.<br /><br /> | ||
| + | Этот этап будет излишним в реализации альтернативного варианта алгоритма. | ||
| + | |||
| + | |||
| + | == Подстановка номера функции == | ||
| + | Заключительный этап заключается в том, чтобы по двум спискам с номерами функций: в первом – номера <tex>g_i^{_{(1)}}(x)</tex>, во втором – <tex>g_i^{_{(2)}}(x,y)</tex> – и подготовленному на предыдущем шаге списку получить необходимый список суперпозиций. Осуществляется, опять же, полным перебором: рассматриваются все варианты замены <tex>1</tex> в каждом вхождении на номера из первого списка умножить на все варианты замены <tex>2</tex> в каждом вхождении на номера из второго списка.<br /><br /> | ||
| + | Список, полученный после этого шага, будет искомым. | ||
| + | |||
| + | |||
| + | == Выбор оптимальной модели == | ||
| + | Необходимо понять, на каком этапе прекращать работу алгоритма и как из полученного множества моделей выбрать нужную. Вопрос выбора встаёт по той причине, что данные всегда зашумлены и функция, идеально приближающая обучающую выборку, может оказаться слишком сложной и, как следствие, неподходящей. Основная идея в том, чтобы ввести два параметра <tex>R</tex> и <tex>C</tex>, характеризующие функцию. Параметр <tex>R</tex> характеризует степень приближения функцией данных на обучающей выборке (например, сумма квадратов остатков). Параметр <tex>C</tex> характеризует сложность функции. Выбор его может быть самым разнообразным и зависеть от самих функций (например, скорее всего, вес <tex>sin(x)</tex> или <tex>exp(x)</tex> много больше веса <tex>ax+b</tex>), или же от дерева суперпозиции, или от того и другого. При выборе зависимости <tex>C</tex> от дерева суперпозиции также есть варианты среди всевозможных характеристик дерева: высоты <tex>h</tex>, числа вершин <tex>|V|</tex>, длины наибольшего пути и др. Одна из характеристик (предложена Е.Владиславлевой) – сумма количеств вершин <tex>sum|V^i |</tex>  по всем поддеревьям <tex>T^i(V^i, X^i)</tex> дерева суперпозиции <tex>T(V, X)</tex>. Под поддеревом понимается дерево, состоящее из некоторой вершины и всех её потомков. | ||
| + | |||
| + | [[Изображение:Clip_image004.gif|600px]] | ||
| + | |||
| + | Например, на рисунках '''Б''' – '''Д''' обведены всевозможные поддеревья дерева '''А'''. Сложность по Владиславлевой дерева '''А''' равна <tex>1+2+1+4 = 8</tex>. | ||
Версия 17:20, 20 апреля 2010
Порождение нелинейных регрессионных моделей - порождение функций, зависящих от параметров и от одной или нескольких свободных переменных. Зависимость от параметров предполагается нелинейной.
| Содержание | 
Постановка задачи
Задана выборка из  пар 
. Задан набор порождающих функций одного и двух аргументов 
, которые зависят от параметров 
 и свободных переменных 
. Функции гладкие параметрические. Требуется создать алгоритм, порождающий лексикографически упорядоченные суперпозиции возрастающей сложности. Каждая суперпозиция является регрессионной моделью одной независимой переменной. Сравнить качество моделей и регрессионные остатки на порожденном множестве.
Дополнительные предположения
Предполагается, что функции  корректно работают в случае вызова в виде 
.
Интерпретация на языке деревьев
Заметим вначале, что суперпозиция функций  может быть задана двоичным деревом 
, вершины которого 
∈
, корень – самая внешняя функция суперпозиции. Под глубиной вершины будем понимать расстояние от неё до корня. Если у вершины один потомок, то соответствующая функция запишется как 
, если два – то 
, если ноль – то 
 или 
.
Так, дереву А соответствует суперпозиция , а дереву Б – суперпозиция 
.
Альтернативная интерпретация
Эта интерпретация особенно ценна, если нельзя вызвать  в виде 
. Изменение состоит в том, что листья дерева суперпозиции считаются не функциями, а свободными переменными. В этом случае дереву А будет соответствовать суперпозиция 
 дереву Б – суперпозиция 
.
Порождение множества деревьев суперпозиций
Комбинаторная простота этого шага алгоритма заключается в том, что изоморфные деревья задают разные суперпозиции. Однако простые смещения вершин не дают новых деревьев.
Так, деревья А и В различны с точки зрения задаваемых суперпозиций, но деревья А и Б идентичны. Поэтому при машинной реализации можно вообще исключить деревья типа Б, т.е. если из вершины исходит одно ребро, будем «рисовать» его «сверху вниз, справа налево», как в деревьях А и В.
Порождение деревьев осуществим по уровням глубины. Т.е. для задачи порождения деревьев высоты не больше  породим все деревья высоты не больше 
 и запишем их в список 
. В список 
 поместим все деревья высоты ровно 
. Далее возьмём дерево из списка 
, построим всевозможные деревья высоты 
 из него, получаемые добавлением рёбер к вершинам нижнего уровня глубины, и поместим их в конец списка 
. То же проделаем со всеми остальными деревьями списка 
.
Обход дерева суперпозиции
Следующий этап алгоритма – это получение по дереву задаваемой им суперпозиции в виде строки символов { 
 
 
 
}, где 
 и 
 означают 
 и 
.
Для этого совершим обход дерева в глубину и поставим вершине типа А в соответствие конструкцию , вершине В – 
, вершине C – 
.
Уточнение типа функции
Для порождения полного списка возможных суперпозиций, в которых вместо  и 
 стоят 
 и 
, –  нужно, воспользовавшись тем, что 
 может быть вызвана как 
, заменить в каждой строке суперпозиции всеми возможными способами цифру 
 на 
. Это несложно реализуется полным перебором – в каждом вхождении 
 нужно выбрать, заменять её или нет.
Этот этап будет излишним в реализации альтернативного варианта алгоритма.
Подстановка номера функции
Заключительный этап заключается в том, чтобы по двум спискам с номерами функций: в первом – номера , во втором – 
 – и подготовленному на предыдущем шаге списку получить необходимый список суперпозиций. Осуществляется, опять же, полным перебором: рассматриваются все варианты замены 
 в каждом вхождении на номера из первого списка умножить на все варианты замены 
 в каждом вхождении на номера из второго списка.
Список, полученный после этого шага, будет искомым.
Выбор оптимальной модели
Необходимо понять, на каком этапе прекращать работу алгоритма и как из полученного множества моделей выбрать нужную. Вопрос выбора встаёт по той причине, что данные всегда зашумлены и функция, идеально приближающая обучающую выборку, может оказаться слишком сложной и, как следствие, неподходящей. Основная идея в том, чтобы ввести два параметра  и 
, характеризующие функцию. Параметр 
 характеризует степень приближения функцией данных на обучающей выборке (например, сумма квадратов остатков). Параметр 
 характеризует сложность функции. Выбор его может быть самым разнообразным и зависеть от самих функций (например, скорее всего, вес 
 или 
 много больше веса 
), или же от дерева суперпозиции, или от того и другого. При выборе зависимости 
 от дерева суперпозиции также есть варианты среди всевозможных характеристик дерева: высоты 
, числа вершин 
, длины наибольшего пути и др. Одна из характеристик (предложена Е.Владиславлевой) – сумма количеств вершин 
  по всем поддеревьям 
 дерева суперпозиции 
. Под поддеревом понимается дерево, состоящее из некоторой вершины и всех её потомков.
Например, на рисунках Б – Д обведены всевозможные поддеревья дерева А. Сложность по Владиславлевой дерева А равна .





