Конструктивное построение множества суперпозиций
Материал из MachineLearning.
(→Задача 4, множество суперпозиций функций одного и двух аргументов) |
|||
(14 промежуточных версий не показаны.) | |||
Строка 9: | Строка 9: | ||
Нужно отметить, что примеры суперпозиций не предназначены для интерпретации, | Нужно отметить, что примеры суперпозиций не предназначены для интерпретации, | ||
так как они являются преобразованиями строк символов. | так как они являются преобразованиями строк символов. | ||
- | |||
- | |||
== Введение == | == Введение == | ||
Строка 38: | Строка 36: | ||
где <tex>i_\cdot</tex> - число-индекс переменной, <tex>i\in\{1,\ldots,N\}</tex> и <tex>r_\cdot</tex> - число, степень переменной, <tex>r\in\{1,\ldots,R\}</tex>. | где <tex>i_\cdot</tex> - число-индекс переменной, <tex>i\in\{1,\ldots,N\}</tex> и <tex>r_\cdot</tex> - число, степень переменной, <tex>r\in\{1,\ldots,R\}</tex>. | ||
- | + | Заданы следующие ограничения: | |
- | + | * каждый полином не должен содержать тождественных мономов, т.е. <tex>i_a^{r_1}i_b^{r_2}+i_b^{r_2}i_a^{r_1} \mapsto i_a^{r_1}i_b^{r_2}.</tex> | |
+ | * Среди построенных полиномов не должно быть совпадающих. | ||
Например, задано множество <tex>\mathfrak{N}=\{1,2\}</tex> (и множество свободных переменных <tex>\mathfrak{G}=\{x,y\}</tex>). | Например, задано множество <tex>\mathfrak{N}=\{1,2\}</tex> (и множество свободных переменных <tex>\mathfrak{G}=\{x,y\}</tex>). | ||
Множество всех полиномов степени не более <tex>R=2</tex> имеет вид: | Множество всех полиномов степени не более <tex>R=2</tex> имеет вид: | ||
- | <center><tex> | + | <center><tex>\mathfrak{S}=\left\{\begin{array}{l}1,\\ 2,\\ 1+2,\\ 1^2,\\ 2^2,\\ 1\cdot 2\\ 1^2 + 1\\ 1^2 + 2\\ 1^2 + 1 + 2\\ 2^2 + 1\\ 2^2 + 2\\ 2^2 + 1 + 2\\ 1\cdot 2 + 1\\ 1\cdot 2 + 2\\ 1\cdot 2 + 1 + 2\\ 1^2 + 2^2\\ 1^2 + 2^2 + 1\\ 1^2 + 2^2 + 2\\ 1^2 + 2^2 + 1 + 2\\ 1^2 + 1\cdot 2\\ 1^2 + 1\cdot 2 + 1\\ 1^2 + 1\cdot 2 + 2\\ 1^2 + 1\cdot 2 + 1 + 2\\ 2^2 + 1\cdot 2\\ 2^2 + 1\cdot 2 + 1\\ 2^2 + 1\cdot 2 + 2\\ 2^2 + 1\cdot 2 + 1 + 2\\ 1^2 + 2^2 + 1\cdot 2\\ 1^2 + 2^2 + 1\cdot 2 + 1\\ 1^2 + 2^2 + 1\cdot 2 + 2\\ 1^2 + 2^2 + 1\cdot 2 + 1 + 2\end{array} \right\},\qquad\mathfrak{G}=\left\{\begin{array}{l}x,\\ y,\\ x+y,\\ x^2,\\ y^2,\\ x\cdot y\\ x^2 + x\\ x^2 + y\\ x^2 + x + y\\ y^2 + x\\ y^2 + y\\ y^2 + x + y\\ x\cdot y + x\\ x\cdot y + y\\ x\cdot y + x + y\\ x^2 + y^2\\ x^2 + y^2 + x\\ x^2 + y^2 + y\\ x^2 + y^2 + x + y\\ x^2 + x\cdot y\\ x^2 + x\cdot y + x\\ x^2 + x\cdot y + y\\ x^2 + x\cdot y + x + y\\ y^2 + x\cdot y\\ y^2 + x\cdot y + x\\ y^2 + x\cdot y + y\\ y^2 + x\cdot y + x + y\\ x^2 + y^2 + x\cdot y\\ x^2 + y^2 + x\cdot y + x\\ x^2 + y^2 + x\cdot y + y\\ x^2 + y^2 + x\cdot y + x + y\end{array} \right\}.</tex></center> |
- | \mathfrak{S}=\left\{ \begin{array}{l} | + | |
- | 1,\\ | + | |
- | 2,\\ | + | |
- | 1+2,\\ | + | |
- | 1^2,\\ | + | |
- | 2^2,\\ | + | |
- | 1\cdot 2\\ | + | |
- | 1^2 + 1\\ | + | |
- | 1^2 + 2\\ | + | |
- | 1^2 + 1 + 2\\ | + | |
- | 2^2 + 1\\ | + | |
- | 2^2 + 2\\ | + | |
- | 2^2 + 1 + 2\\ | + | |
- | 1\cdot 2 + 1\\ | + | |
- | 1\cdot 2 + 2\\ | + | |
- | 1\cdot 2 + 1 + 2\\ | + | |
- | 1^2 + 2^2\\ | + | |
- | 1^2 + 2^2 + 1\\ | + | |
- | 1^2 + 2^2 + 2\\ | + | |
- | 1^2 + 2^2 + 1 + 2\\ | + | |
- | 1^2 + 1\cdot 2\\ | + | |
- | 1^2 + 1\cdot 2 + 1\\ | + | |
- | 1^2 + 1\cdot 2 + 2\\ | + | |
- | 1^2 + 1\cdot 2 + 1 + 2\\ | + | |
- | 2^2 + 1\cdot 2\\ | + | |
- | 2^2 + 1\cdot 2 + 1\\ | + | |
- | 2^2 + 1\cdot 2 + 2\\ | + | |
- | 2^2 + 1\cdot 2 + 1 + 2\\ | + | |
- | 1^2 + 2^2 + 1\cdot 2\\ | + | |
- | 1^2 + 2^2 + 1\cdot 2 + 1\\ | + | |
- | 1^2 + 2^2 + 1\cdot 2 + 2\\ | + | |
- | 1^2 + 2^2 + 1\cdot 2 + 1 + 2 | + | |
- | \end{array} \right\},\qquad | + | |
- | \mathfrak{G}=\left\{ \begin{array}{l} | + | |
- | x,\\ | + | |
- | y,\\ | + | |
- | x+y,\\ | + | |
- | x^2,\\ | + | |
- | y^2,\\ | + | |
- | x\cdot y \\ | + | |
- | x^2 + x\\ | + | |
- | x^2 + y\\ | + | |
- | x^2 + x + y\\ | + | |
- | y^2 + x\\ | + | |
- | y^2 + y\\ | + | |
- | y^2 + x + y\\ | + | |
- | x\cdot y + x\\ | + | |
- | x\cdot y + y\\ | + | |
- | x\cdot y + x + y\\ | + | |
- | x^2 + y^2\\ | + | |
- | x^2 + y^2 + x\\ | + | |
- | x^2 + y^2 + y\\ | + | |
- | x^2 + y^2 + x + y\\ | + | |
- | x^2 + x\cdot y\\ | + | |
- | x^2 + x\cdot y + x\\ | + | |
- | x^2 + x\cdot y + y\\ | + | |
- | x^2 + x\cdot y + x + y\\ | + | |
- | y^2 + x\cdot y\\ | + | |
- | y^2 + x\cdot y + x\\ | + | |
- | y^2 + x\cdot y + y\\ | + | |
- | y^2 + x\cdot y + x + y\\ | + | |
- | x^2 + y^2 + x\cdot y\\ | + | |
- | x^2 + y^2 + x\cdot y + x\\ | + | |
- | x^2 + y^2 + x\cdot y + y\\ | + | |
- | x^2 + y^2 + x\cdot y + x + y | + | |
- | \end{array} \right\}. </tex></center> | + | |
== Задача 2, множество сумм произведений переменных заданной степени == | == Задача 2, множество сумм произведений переменных заданной степени == | ||
Строка 115: | Строка 48: | ||
Задано множество <tex>\mathfrak{P}</tex> степеней переменных. | Задано множество <tex>\mathfrak{P}</tex> степеней переменных. | ||
Требуется построить все возможные суммы произведений переменных, имеющих степени из <tex>\mathfrak{P}</tex>. | Требуется построить все возможные суммы произведений переменных, имеющих степени из <tex>\mathfrak{P}</tex>. | ||
- | + | Ограничения предыдущей задач сохряняются. | |
Легко заметить, что эта задача - вариант предыдущей. | Легко заметить, что эта задача - вариант предыдущей. | ||
Строка 135: | Строка 68: | ||
<center><tex>\left\{ g_1, g_2, g_1(g_1), g_2(g_2), g_1(g_2), g_2(g_1) \right\}.</tex></center> | <center><tex>\left\{ g_1, g_2, g_1(g_1), g_2(g_2), g_1(g_2), g_2(g_1) \right\}.</tex></center> | ||
- | == Задача | + | == Задача 4, упрощение элементов суперпозиции функций одного аргумента == |
- | Требуется упростить суперпозиции из множества | + | Требуется упростить суперпозиции из входного множества <tex>\mathfrak{S}</tex> суперпозиций функций одного аргумента из множества <tex>\mathfrak{G}</tex> в соответствии с множеством подстановок <tex>\mathfrak{T}</tex>. |
- | Для этого | + | Для этого подстановки из <tex>\mathfrak{T}</tex> определены на множестве функций из <tex>\mathfrak{G}</tex> и заданы в виде |
списка <tex>\{g_i(g_j)\mapsto g_k\}</tex>. | списка <tex>\{g_i(g_j)\mapsto g_k\}</tex>. | ||
Например, суперпозицию элементов <tex>g_1(g_2)</tex> можно заменить на некоторый другой элемент <tex>g_3</tex>, | Например, суперпозицию элементов <tex>g_1(g_2)</tex> можно заменить на некоторый другой элемент <tex>g_3</tex>, | ||
- | если определена | + | если в <tex>\mathfrak{T}</tex> определена подстановка <tex>g_1(g_2)\mapsto g_3</tex>. |
- | Так как удобнее работать с индексами функций, то | + | Так как удобнее работать с индексами функций, то множество подстановок из <tex>\mathfrak{T}</tex> определено на числах из <tex>\mathfrak{N}</tex> |
- | и | + | и состоит из подстановок вида <tex>\{i_1(i_2)\mapsto i_3\}</tex>. |
- | == Задача | + | == Задача 5, множество суперпозиций функций одного и двух аргументов == |
Задано множество функций одного и двух аргументов. | Задано множество функций одного и двух аргументов. | ||
Требуется построить все суперпозиции этих функций, число функций в каждой суперпозиции не превышает заданное <tex>R</tex>. | Требуется построить все суперпозиции этих функций, число функций в каждой суперпозиции не превышает заданное <tex>R</tex>. | ||
Строка 155: | Строка 88: | ||
Например, если <tex>1,2</tex> - функции одной переменной, а <tex>3</tex> - функция двух переменных, то выражение | Например, если <tex>1,2</tex> - функции одной переменной, а <tex>3</tex> - функция двух переменных, то выражение | ||
<tex>1(2,2)</tex> - некорректно, в то время как выражение <tex>3(1, 3(2))</tex> - корректно. В самом деле, выражению <tex>3(1, 3(2))</tex> | <tex>1(2,2)</tex> - некорректно, в то время как выражение <tex>3(1, 3(2))</tex> - корректно. В самом деле, выражению <tex>3(1, 3(2))</tex> | ||
- | можно, например, | + | можно поставить в соответсвие, например, функцию <tex>3(1(x), 3(2(x),x))</tex> аргумента <tex>x</tex>. |
- | == Задача | + | == Задача 6, множество преобразований элементов полиномов == |
Задано множество <tex>\mathfrak{G}</tex> из <tex>N</tex> функций одного аргумента и множество полиномов. | Задано множество <tex>\mathfrak{G}</tex> из <tex>N</tex> функций одного аргумента и множество полиномов. | ||
Множество полиномов, например, может быть получено в результате решения задач 1 или 2. | Множество полиномов, например, может быть получено в результате решения задач 1 или 2. | ||
- | Требуется для каждого полинома найти все суперпозиции, полученные преобразованием | + | Требуется для каждого полинома найти все суперпозиции, полученные преобразованием: |
- | * сомножителей мономов | + | * сомножителей мономов |
- | * мономов | + | * мономов |
* полинома | * полинома | ||
- | одним | + | одним элементами из множества <tex>\mathfrak{G}</tex>. |
== Программная реализация == | == Программная реализация == | ||
Строка 180: | Строка 113: | ||
Задача 3 | Задача 3 | ||
<source lang="matlab"> | <source lang="matlab"> | ||
- | S = InductOneArg(N1, R | + | S = InductOneArg(N1, R); |
</source> | </source> | ||
Задача 4 | Задача 4 | ||
<source lang="matlab"> | <source lang="matlab"> | ||
- | S = | + | S = SimplifySuperpositions(Sup, T); |
</source> | </source> | ||
Задача 5 | Задача 5 | ||
<source lang="matlab"> | <source lang="matlab"> | ||
- | S = | + | S = InductOneTwoArg(N1, N2, R); |
+ | </source> | ||
+ | |||
+ | Задача 6 | ||
+ | |||
+ | Порождение полиномов путем суперпозиции сомножителей мономов: | ||
+ | <source lang="matlab"> | ||
+ | S = InductOneArgPolynomials_MonomsComponents(N, SP); | ||
+ | </source> | ||
+ | Порождение полиномов путем суперпозиции мономов: | ||
+ | <source lang="matlab"> | ||
+ | S = InductOneArgPolynomials_Monoms(N, SP); | ||
+ | </source> | ||
+ | Порождение полиномов путем суперпозиции полиномов: | ||
+ | <source lang="matlab"> | ||
+ | S = InductOneArgPolynomials_Polynoms(N, SP); | ||
</source> | </source> | ||
Строка 200: | Строка 148: | ||
R - максимальная степень полинома, число элементов в суперпозиции; | R - максимальная степень полинома, число элементов в суперпозиции; | ||
P - множество степеней переменных; | P - множество степеней переменных; | ||
- | T - множество подстановок суперпозиций, множество троек (i1, i2, i3) | + | T - множество подстановок суперпозиций, множество троек (i1, i2, i3); |
+ | Sup - множество суперпозиций; | ||
SP - множество полиномов S. | SP - множество полиномов S. | ||
</source> | </source> |
Текущая версия
Методы индуктивного построения регрессионных моделей, например, метод группового учета аргументов или символьная регрессия, используют в качестве моделей-претендентов различные суперпозиции свободных переменных. В частности, МГУА использует линейные комбинации произведений свободных переменных, а символьная регрессия - их произвольные суперпозиции.
Ниже приведены несколько задач, иллюстрирующих способы построения суперпозиций. Нужно отметить, что примеры суперпозиций не предназначены для интерпретации, так как они являются преобразованиями строк символов.
Введение
Пусть заданы множество первых натуральных чисел. Также задан набор множеств чисел из , разделенных скобками, знаками сложения, умножения и возведения в степень.
Например, , где , , .
Задано множество , элементы которого - функции или переменные, принимающие значения на числовой прямой, а их индексы - элементы множества . Алгоритм построения суперпозиций - это отображение множества на множество . Для каждой суперпозиции алгоритм определяет порядок следования индексов функций из .
Например, используя множество определённое в примере выше, и множество получаем множество суперпозиций , где , , .
Цель
Требуется создать несколько алгоритмов, которые конструктивно строят суперпозиции по заданным правилам.
Задача 1, множество полиномов от свободных переменных
Задано множество из переменных, принадлежащих действительной прямой. Требуется построить все полиномы степени не больше . Результат работы алгоритма - множество строк вида , где - число-индекс переменной, и - число, степень переменной, .
Заданы следующие ограничения:
- каждый полином не должен содержать тождественных мономов, т.е.
- Среди построенных полиномов не должно быть совпадающих.
Например, задано множество (и множество свободных переменных ). Множество всех полиномов степени не более имеет вид:
Задача 2, множество сумм произведений переменных заданной степени
Задано множество из переменных, принадлежащих положительным действительным числам. Задано множество степеней переменных. Требуется построить все возможные суммы произведений переменных, имеющих степени из . Ограничения предыдущей задач сохряняются. Легко заметить, что эта задача - вариант предыдущей.
Например, .
Задача 3, множество суперпозиций функций одного аргумента
Найти все суперпозиции функций одного аргумента из конечного множества. При этом число функций в суперпозиции не должно превышать заданное .
Например, дано
Найти отображение
множества индексов переменных в множество наборов , соответствующих суперпозициям с числом элементов, не превосходящим .
Результат -соответствующее множество суперпозиций -
Задача 4, упрощение элементов суперпозиции функций одного аргумента
Требуется упростить суперпозиции из входного множества суперпозиций функций одного аргумента из множества в соответствии с множеством подстановок . Для этого подстановки из определены на множестве функций из и заданы в виде списка .
Например, суперпозицию элементов можно заменить на некоторый другой элемент , если в определена подстановка .
Так как удобнее работать с индексами функций, то множество подстановок из определено на числах из и состоит из подстановок вида .
Задача 5, множество суперпозиций функций одного и двух аргументов
Задано множество функций одного и двух аргументов. Требуется построить все суперпозиции этих функций, число функций в каждой суперпозиции не превышает заданное . Эта задача является вариантом задачи 3 и использует элементы задачи 1.
Некорректными суперпозициями будем считать все выражения в которых на вход функции от переменных подано более чем аргументов. Все прочие суперпозиции будем считать корректными. Например, если - функции одной переменной, а - функция двух переменных, то выражение - некорректно, в то время как выражение - корректно. В самом деле, выражению можно поставить в соответсвие, например, функцию аргумента .
Задача 6, множество преобразований элементов полиномов
Задано множество из функций одного аргумента и множество полиномов. Множество полиномов, например, может быть получено в результате решения задач 1 или 2. Требуется для каждого полинома найти все суперпозиции, полученные преобразованием:
- сомножителей мономов
- мономов
- полинома
одним элементами из множества .
Программная реализация
Задача 1
S = InductPolynomials(N, R);
Задача 2
S = InductSumOfProducts(N, R, P);
Задача 3
S = InductOneArg(N1, R);
Задача 4
S = SimplifySuperpositions(Sup, T);
Задача 5
S = InductOneTwoArg(N1, N2, R);
Задача 6
Порождение полиномов путем суперпозиции сомножителей мономов:
S = InductOneArgPolynomials_MonomsComponents(N, SP);
Порождение полиномов путем суперпозиции мономов:
S = InductOneArgPolynomials_Monoms(N, SP);
Порождение полиномов путем суперпозиции полиномов:
S = InductOneArgPolynomials_Polynoms(N, SP);
Здесь
S - массив строк символов: "Число, (, ), +, *, ^"; N - число переменных или функций; N1, N2 - число функций от одного или двух аргументов; R - максимальная степень полинома, число элементов в суперпозиции; P - множество степеней переменных; T - множество подстановок суперпозиций, множество троек (i1, i2, i3); Sup - множество суперпозиций; SP - множество полиномов S.