Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как по данным и результатам узнать формулу 
:(
    Опции темы
kulibinka
Дата 16.3.2007, 04:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Есть объекты.
Есть информация о параметрах каждого объекта в виде строчки "ai1     ai2    ...ain"

Так в общем виде выглядит вся информация о наших объектах:
a11    a12    a13    ... a1n
a21    a22    a23    ... a2n
a31    a32    a33    ... a3n
...
ak1    ak2    ak3    ... akn

, где аij - конкретное число.

Есть некоторая формула, которая на вход получает информацию о всех объектах, и потом сортирует эти объекты.
Есть практически неограниченное количество данных вида: реальные цифры - как их рассортировала наша формула.

Все, больше ничего нет smile

Подскажите пожалуйста следующее: 
    1. как узнать какие именно из параметров важнее других и насколько
    2. как узнать что это за формула

Это сообщение отредактировал(а) kulibinka - 16.3.2007, 04:05
PM MAIL   Вверх
Bitter
Дата 16.3.2007, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 4
Всего: 27



типичная задача "черный ящик".
Существуют следующие методы, описания которых в тернете полно:

1. Генетические алгоритмы (ГА). Или их подвид Селективные алгоритмы. Решение в кратце такое: выбирается полином, запукается указанный алгоритм, и он подбирает коэфициенты полинома так, чтобы результат совпал с Вами указанным. Этот полином и есть искомая функция.

2. Нейросети. Обучив нейросеть на таких данных, как Вы представили, в дальнейшем она будет сортировать любые другие наборы данных. Однако, функцию в явном виде Вы не получите.

3. МНК или МНВК - методы для восстановления функций по некоторым данным.
4. Интерполяция

Вообще надо Вам почитать теорию систем и системного управления. И методы параметрической идентификации.

Это сообщение отредактировал(а) Bitter - 16.3.2007, 20:22
PM MAIL ICQ Skype   Вверх
kulibinka
Дата 16.3.2007, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Спасибо, теперь вижу что задача имеет решение.

Цитата

Вообще надо Вам почитать теорию систем и системного управления. И методы параметрической идентификации.



Много методов это хорошо smile
Но для моей конкретной задачи
1. какой из вариантов проще всего в реализации?
2. Не подскажете конкретную литературу по этому варианту? Или никакой особо избранной литературы нет, и просто спросить у гугля?

Это сообщение отредактировал(а) kulibinka - 16.3.2007, 21:46
PM MAIL   Вверх
Bitter
Дата 17.3.2007, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 4
Всего: 27



Цитата

для моей конкретной задачи


То, что Вы описали не конкреная задача, а общая постановка задачи черного ящика. По этому какой вариант больше подходит решать Вам. Могу лишь привести несколько ссылок:

1. ГА - http://algolist.manual.ru/ai/ga/index.php

2. Нейросети - http://algolist.manual.ru/ai/neuro/index.php

3. Метод наименьших квадратов (МНК) - http://iglin.exponenta.ru/All/ContData/lsqm.html

4. Интерполяция - 
    http://matlab.exponenta.ru/spline/book1/10.php
    http://www.tspu.tula.ru/ivt/old_site/umr/chislmet/lab7.htm
PM MAIL ICQ Skype   Вверх
kulibinka
Дата 17.3.2007, 05:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Спасибо большое за объяснения, пошел разбираться.
PM MAIL   Вверх
esperant0
Дата 17.3.2007, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



Помоему задача не имеет решения в общем случае.


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
SoWa
Дата 17.3.2007, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



В общем нет- так как ни один из приведенных методов не дает 100% результат для всех случаев, а дает для конкретного.

А вот определить, какие данные важнее- это вам помогут приведенные выше алгоритмы.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
_Y_
Дата 19.3.2007, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Мне кажется, что в данной ветке не было произнесено (хотя подразумевалось) нескольких важных вещей:
  • Истинную формулу (т.е. формулу, соответствующую физическому закону, определяющему полученные величины) получить невозможно. Точнее - можно наткнуться на нее случайно, но ничто не укажет, что получена именно она.
  • Получена может быть только формула наиболее точно аппроксимируящая данные.
  • Если задачу можно переформулировать из получить формулу из "ниоткуда" в выбрать формулу из заранее предложенных вариантов, то тут уже можно вполне достоверно говорить о нахождении истинной формулы. Число вариантов формулы в начальном списке может быть очень большое, при условии, что и данных очень много.
  • Метод "в обход": получить формулу "из ниоткуда", а потом придумать для нее физический смысл smile




--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
esperant0
Дата 19.3.2007, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



Цитата(_Y_ @ 19.3.2007,  14:09)
 
[*]Получена может быть только формула наиболее точно аппроксимируящая данные.
 

Почему только? Можно получить формулу не точно апроксимирующую данные. Потом для того чтобы говорить о точности надо задавать метрику.

Это сообщение отредактировал(а) esperant0 - 19.3.2007, 14:21


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
sergejzr
Дата 19.3.2007, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Формула будет чтото вроде:

SUM(@1*a1+@2*a2+...@n*an)

Цитата(esperant0 @  17.3.2007,  18:51 Найти цитируемый пост)
Помоему задача не имеет решения в общем случае. 

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


Необходимо найти коеффициенты @1..@n (которые по условийу задачи одинаковы, потому что и представляют собой "важность" параметра)

Остальное - дело техники. сортируем N обьектов, выписываем матрицу.

@1*ai1|@2*ai2|...|@n*ain| 0
@1*a(i+1)1|@2*ai(i+1)2|...|@n*a(i+1)n| 1
:
:
@1*a(i+N)1|@2*a(i+N)2|...|@n*a(i+N)n| N

N должно быть N>= n

Упрощаем матрицу в треугольник Гауссом и находим коеффициенты @1..@n

Теперь можем отсортировать любой обьект. Не уверен, что наша функция сортировки будет всегда давать 100 правильный ответ, но соотношение между важностью параметров определим довольно точно.

Для оптимизации надо возможно специально подбирать обьекты со спец. @

Кстати, почему бы нам не просортировать такие обьекты:

0 0 0 0 1
0 0 0 1 0
0 0 1 0 1
0 1 0 0 0
1 0 0 0 0

Узнаем важность каждого коеффициента smile

ПС:
Это я всё так .. набросал думать Вам smile




--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
sergejzr
Дата 19.3.2007, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Продолжение.. smile

Итак, начинаем с identity matrix I (Это у которой еденицы по диагонали)

Сортируем наши обьекты. Берём самый маленький обьект O0 и увеличиваем его коеффициент с шагом ß до тех пор, пока функция не отсортирует его лучше, обьекта О1. На самом деле идеальным будет найти коеффициент, который приравняет О1 к к О0 Проверить равенство можно запустив эти два обьекта в сортировку в разном порядке. Если на выходе порядок сохранился,  - обьекты равны. 

Всё это проделать с каждым обьектом, пока они все не будут равны.

Таким образом найдём абсолютно точные коеффициенты @ и абсолютно точную функцию сортировки smile

Для определения шага существует куча алгов. Так как тут имеем дело с линеарной разницей коеффоф, подойдёт метод половинок. То есть каждый шаг увеличиваем в два раза, пока порядок сортировки остаётся прежним. А как только он поменяется, берём середину разницы между последним и предпоследним и прибавляем её к предпоследнему.




Цитата(sergejzr @  19.3.2007,  13:43 Найти цитируемый пост)
Цитата(esperant0 @  17.3.2007,  18:51 Найти цитируемый пост)
Помоему задача не имеет решения в общем случае. 

Имхо, если принять "важность" параметров за константы, можно кое что попробовать..


Ну впринципе, надежды оправдались smile
Если в условии задачи коефы целые числа, то проблема решается со 100%. Если дробные - как повезёт, но можно максинально приблизится к 100%.



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Earnest
Дата 19.3.2007, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 7
Всего: 183



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



--------------------
...
PM   Вверх
VictorTsaregorodtsev
Дата 20.3.2007, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 28.7.2006

Репутация: 3
Всего: 8



Цитата(Bitter @  16.3.2007,  20:20 Найти цитируемый пост)
Нейросети. Обучив нейросеть на таких данных, как Вы представили, в дальнейшем она будет сортировать любые другие наборы данных. Однако, функцию в явном виде Вы не получите

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

Цитата(_Y_ @  19.3.2007,  14:09 Найти цитируемый пост)
Истинную формулу (т.е. формулу, соответствующую физическому закону, определяющему полученные величины) получить невозможно. Точнее - можно наткнуться на нее случайно, но ничто не укажет, что получена именно она.

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

sergejzr, +1. Методы планирования эксперимента рулят. А одновременное изменение переменных (при сохранении ортогональности плана, т.е. эталонных векторов), позволит поймать полиномиальные взаимодействия переменных вида xi*xj, xi*xj*xk в сортирующей функции.
PM MAIL WWW   Вверх
esperant0
Дата 20.3.2007, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



Цитата(VictorTsaregorodtsev @ 20.3.2007,  10:45)
  - и получим некоторую вероятностную оценку ошибки  

Можно по подробней? Что такое накоторая вероятностная оценка. А главное на каком вероятностном пространстве вы собираетесь ее задавать?


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
VictorTsaregorodtsev
Дата 21.3.2007, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 28.7.2006

Репутация: 3
Всего: 8



Цитата(esperant0 @  20.3.2007,  17:00 Найти цитируемый пост)
Что такое накоторая вероятностная оценка

Имелись в виду статистики ошибок предсказания - средний модуль ошибки, максимум модуля ошибки, дисперсия, изучение сходимости ошибки при росте размера выборки и т.д.
Вероятностные - в том плане, что если Монте-карла говорит, что на большой куче испытаний какая-то статистика не принимает значений выше или ниже какого-то уровня, то значит такую величину погрешности можно считать за достоверную границу точности сверху или снизу (и решать вопрос о приемлемости такой точности предсказания для дальнейшей работы)
PM MAIL WWW   Вверх
Artemios
Дата 26.3.2007, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: 1
Всего: 50



Цитата(kulibinka @  16.3.2007,  05:00 Найти цитируемый пост)
Есть информация о параметрах каждого объекта в виде строчки "ai1     ai2    ...ain"

Есть некоторая формула, которая на вход получает информацию о всех объектах, и потом сортирует эти объекты.
Есть практически неограниченное количество данных вида: реальные цифры - как их рассортировала наша формула.


Если переформулировать, задача: поиск бинарного отношения линейного порядка на множестве целочисленных векторов Z^n.
На Z^n существуют стандартные порядки: лексикография, обратная лексикография, по полной степени -пост-лексикография (или обратная) и т.д.
В общем случае любой сохраняющий сложение порядок (т.е. если a>b, то a+c>b+c при a,b,c \in Z^n) на Z^n можно определить матрицей n x n, задающей весовые коэффициенты и перестановки для перехода в стандартную лексикографию  ( \exists W - матрица \forall a<b: Wa <_{lex} Wb), и в этом случае как нельзя лучше подходит предложение sergejzr, а при неограниченном количестве входных данных результат будет практически 100-прроцентный.

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

Это сообщение отредактировал(а) Artemios - 26.3.2007, 10:17


--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
Promitheus
Дата 29.3.2007, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 28.3.2007

Репутация: нет
Всего: 1



Цитата

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


Мне кажется kulibinka хочет чтобы была формула в виде f(x)=ax^3+ bx^2+cx+d, нейропакеты в таком виде не выдают формулы (могу конечно ошибаться). Потом если неугадать с функцией активации: то либо будет большая погрешность апроксимирования искомой функции, либо будет работать в пределах икса скажем [0;10] вне этих пределов мусор который даже что-то похожее не будет выдавать.

Цитата

1. как узнать какие именно из параметров важнее других и насколько


Это надо заниматься факторным анализом, скажем в Статистике были примеры на этот счёт. Можно попробовать загнать данные в сеть Кохонена и посмотреть на сколько классов будут разделены данные, далее посмотреть чем они кардинально различаются.

Такие задачи на мой взгляд требуют опыт от решающего, чтобы можно было интуитивно оцениить достоверность результатов, а потом найти рациональное объяснение.

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

PS Как было уже сказано: в результате одного из методов будет получена функция, которая выдаёт тоже что и надо, но она врят ли будет иметь физический смысл.
PM MAIL ICQ   Вверх
VictorTsaregorodtsev
Дата 29.3.2007, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 28.7.2006

Репутация: 3
Всего: 8



Цитата(Promitheus @  29.3.2007,  10:25 Найти цитируемый пост)
Мне кажется kulibinka хочет чтобы была формула в виде f(x)=ax^3+ bx^2+cx+d, нейропакеты в таком виде не выдают формулы (могу конечно ошибаться). Потом если неугадать с функцией активации: то либо будет большая погрешность апроксимирования искомой функции, либо будет работать в пределах икса скажем [0;10] вне этих пределов мусор который даже что-то похожее не будет выдавать.

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

Цитата(Promitheus @  29.3.2007,  10:25 Найти цитируемый пост)
Цитата

1. как узнать какие именно из параметров важнее других и насколько


Это надо заниматься факторным анализом, скажем в Статистике были примеры на этот счёт. 

Ну, не только этот способ возможен. Можно посчитать значимость параметров и исходя из "субъективного" "мнения" именно той функции-формулы, которая будет построена (например, банально посмотреть на частные производные - насколько быстро меняется зависимая переменная при изменении независимой). Т.е. есть возможности оценивания как с точки зрения выведенной формулы, так без всяких предположений об этой формуле (взять, например, банальные парные корреляции или парные/множественные условные энтропии) 
PM MAIL WWW   Вверх
Artemios
Дата 31.3.2007, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: 1
Всего: 50



Цитата(Promitheus @  29.3.2007,  11:25 Найти цитируемый пост)
Мне кажется kulibinka хочет чтобы была формула в виде f(x)=ax^3+ bx^2+cx+d

Точнее было бы f(x1,x2)=... , причем область значений функции примерно {-1,0,1}

Добавлено через 8 минут и 38 секунд
Или даже {true,false}  :
f(x1,x2) = x1>x2



--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0759 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.