|
|
|
kulibinka |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 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 - конкретное число. Есть некоторая формула, которая на вход получает информацию о всех объектах, и потом сортирует эти объекты. Есть практически неограниченное количество данных вида: реальные цифры - как их рассортировала наша формула. Все, больше ничего нет Подскажите пожалуйста следующее: 1. как узнать какие именно из параметров важнее других и насколько 2. как узнать что это за формула Это сообщение отредактировал(а) kulibinka - 16.3.2007, 04:05 |
|||
|
||||
Bitter |
|
|||
Опытный лентяй Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 4 Всего: 27 |
типичная задача "черный ящик".
Существуют следующие методы, описания которых в тернете полно: 1. Генетические алгоритмы (ГА). Или их подвид Селективные алгоритмы. Решение в кратце такое: выбирается полином, запукается указанный алгоритм, и он подбирает коэфициенты полинома так, чтобы результат совпал с Вами указанным. Этот полином и есть искомая функция. 2. Нейросети. Обучив нейросеть на таких данных, как Вы представили, в дальнейшем она будет сортировать любые другие наборы данных. Однако, функцию в явном виде Вы не получите. 3. МНК или МНВК - методы для восстановления функций по некоторым данным. 4. Интерполяция Вообще надо Вам почитать теорию систем и системного управления. И методы параметрической идентификации. Это сообщение отредактировал(а) Bitter - 16.3.2007, 20:22 |
|||
|
||||
kulibinka |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 191 Регистрация: 20.11.2006 Репутация: 2 Всего: 4 |
Спасибо, теперь вижу что задача имеет решение.
Много методов это хорошо Но для моей конкретной задачи 1. какой из вариантов проще всего в реализации? 2. Не подскажете конкретную литературу по этому варианту? Или никакой особо избранной литературы нет, и просто спросить у гугля? Это сообщение отредактировал(а) kulibinka - 16.3.2007, 21:46 |
|||
|
||||
Bitter |
|
|||
Опытный лентяй Профиль Группа: Завсегдатай Сообщений: 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 |
|||
|
||||
kulibinka |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 191 Регистрация: 20.11.2006 Репутация: 2 Всего: 4 |
Спасибо большое за объяснения, пошел разбираться.
|
|||
|
||||
esperant0 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 714 Регистрация: 20.5.2005 Репутация: 4 Всего: 14 |
Помоему задача не имеет решения в общем случае.
-------------------- Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором а затем стерто и которое он - пользователь не мог видеть. |
|||
|
||||
SoWa |
|
|||
Харекришна Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
В общем нет- так как ни один из приведенных методов не дает 100% результат для всех случаев, а дает для конкретного.
А вот определить, какие данные важнее- это вам помогут приведенные выше алгоритмы. -------------------- Всем добра |
|||
|
||||
_Y_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Мне кажется, что в данной ветке не было произнесено (хотя подразумевалось) нескольких важных вещей:
-------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
esperant0 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 714 Регистрация: 20.5.2005 Репутация: 4 Всего: 14 |
Почему только? Можно получить формулу не точно апроксимирующую данные. Потом для того чтобы говорить о точности надо задавать метрику. Это сообщение отредактировал(а) esperant0 - 19.3.2007, 14:21 -------------------- Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором а затем стерто и которое он - пользователь не мог видеть. |
|||
|
||||
sergejzr |
|
|||
Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 4 Всего: 360 |
Формула будет чтото вроде:
SUM(@1*a1+@2*a2+...@n*an) Имхо, если принять "важность" параметров за константы, и их независимость друг от друга, можно кое что попробовать.. Необходимо найти коеффициенты @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 Узнаем важность каждого коеффициента ПС: Это я всё так .. набросал думать Вам |
|||
|
||||
sergejzr |
|
|||
Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 4 Всего: 360 |
Продолжение..
Итак, начинаем с identity matrix I (Это у которой еденицы по диагонали) Сортируем наши обьекты. Берём самый маленький обьект O0 и увеличиваем его коеффициент с шагом ß до тех пор, пока функция не отсортирует его лучше, обьекта О1. На самом деле идеальным будет найти коеффициент, который приравняет О1 к к О0 Проверить равенство можно запустив эти два обьекта в сортировку в разном порядке. Если на выходе порядок сохранился, - обьекты равны. Всё это проделать с каждым обьектом, пока они все не будут равны. Таким образом найдём абсолютно точные коеффициенты @ и абсолютно точную функцию сортировки Для определения шага существует куча алгов. Так как тут имеем дело с линеарной разницей коеффоф, подойдёт метод половинок. То есть каждый шаг увеличиваем в два раза, пока порядок сортировки остаётся прежним. А как только он поменяется, берём середину разницы между последним и предпоследним и прибавляем её к предпоследнему. Ну впринципе, надежды оправдались Если в условии задачи коефы целые числа, то проблема решается со 100%. Если дробные - как повезёт, но можно максинально приблизится к 100%. |
|||
|
||||
Earnest |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 7 Всего: 183 |
sergejzr, а кто сказал, что функция линейная (по параметрам)?
Метод наименьших квадратов для линейного случая самый простой - всего-то решение системы линейных уравнений - это, конечно, если степень аппроксимирующего полинома известна, и известно, что это полином. Для нелинейных случаев общего решения вроде нет. В любом случае, чтобы искать параметры, нужно знать или предполагать "параметры чего". -------------------- ... |
|||
|
||||
VictorTsaregorodtsev |
|
|||
Опытный Профиль Группа: Участник Сообщений: 274 Регистрация: 28.7.2006 Репутация: 3 Всего: 8 |
Получим Какие проблемы записать нейросетку в виде набора формул? А еще любой приличный нейропакет позволяет по обученной сети сгенерировать код на языке программирования (на том же С, к примеру), который будет реализовывать эту НС и позволит вставить её в программу пользователя - это та же самая запись функции в явном виде, только уже переведенная с языка математики на язык программирования. Поскольку было сказано, что данных вагон и маленькая тележка, то всегда можно будет выделить из общего массива данных некоторую тестовую выборку, идентифицировать функцию по оставшейся части и проверить точность работы на тестовой выборке. И разбиение на обучающую-тестовую части можно менять столько раз, сколько захочется - и получим некоторую вероятностную оценку ошибки предсказания для данных, не участвующих на этапе идентификации параметров модели. И может оказаться так, что ошибка предсказания устраивает не с теоретической точки зрения (та ли функция или не та), а с практической, т.е. позволит решить задачу. sergejzr, +1. Методы планирования эксперимента рулят. А одновременное изменение переменных (при сохранении ортогональности плана, т.е. эталонных векторов), позволит поймать полиномиальные взаимодействия переменных вида xi*xj, xi*xj*xk в сортирующей функции. |
|||
|
||||
esperant0 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 714 Регистрация: 20.5.2005 Репутация: 4 Всего: 14 |
Можно по подробней? Что такое накоторая вероятностная оценка. А главное на каком вероятностном пространстве вы собираетесь ее задавать? -------------------- Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором а затем стерто и которое он - пользователь не мог видеть. |
|||
|
||||
VictorTsaregorodtsev |
|
|||
Опытный Профиль Группа: Участник Сообщений: 274 Регистрация: 28.7.2006 Репутация: 3 Всего: 8 |
Имелись в виду статистики ошибок предсказания - средний модуль ошибки, максимум модуля ошибки, дисперсия, изучение сходимости ошибки при росте размера выборки и т.д. Вероятностные - в том плане, что если Монте-карла говорит, что на большой куче испытаний какая-то статистика не принимает значений выше или ниже какого-то уровня, то значит такую величину погрешности можно считать за достоверную границу точности сверху или снизу (и решать вопрос о приемлемости такой точности предсказания для дальнейшей работы) |
|||
|
||||
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |