2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Быстрый поиск дискретного максимума довольно спец функции
Сообщение17.11.2022, 16:40 
Заслуженный участник
Аватара пользователя


11/03/08
10007
Москва
Ну, мне представляется простая процедура. Матрица C рассматривается, как совокупность n регрессоров, из которых надо выбрать 2 лучших. Строим n парных регрессий q на $c_{i,*}$, выбираем наилучшую по минимуму суммы квадратов отклонений (не по R). Затем считаем остатки от этой регрессии, строим регрессию их на те же регрессоры, выбираем второй.

 Профиль  
                  
 
 Re: Быстрый поиск дискретного максимума довольно спец функции
Сообщение18.11.2022, 15:02 


11/08/18
363
Евгений Машеров в сообщении #1570312 писал(а):
Ну, мне представляется простая процедура. Матрица $C$ рассматривается, как совокупность $n$ регрессоров, из которых надо выбрать 2 лучших. Строим $n$ парных регрессий $q$ на $c_{i,*}$, выбираем наилучшую по минимуму суммы квадратов отклонений (не по R). Затем считаем остатки от этой регрессии, строим регрессию их на те же регрессоры, выбираем второй.

Спасибо за ответ!

Так ведь не всегда будет работать (если я конечно правильно Вас понял).

Вот пусть у нас матрица $C$ состоит из дискретных векторов, которые мы получили от дискретизации гауссовых функций на отрезке $[0,n]$, причем ширина каждой такой функции существенно больше единицы. Тогда если в качестве $q$ у нас была сумма $i+1$ и $i-1$ гауссов, то наилучшей по минимуму суммы квадратов будет не один из них, а $i$, а остатком будет уже что-то совсем подальше, обычно $i+2$ или $i-2$, то есть вместо того, чтобы получить $i+1$ и $i-1$ мы получим $i$ и $i+2$, c очень не правильными весами, так как вес $i$ будетт почти равен весу суммы $i+1$ и $i-1$.

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

 Профиль  
                  
 
 Re: Быстрый поиск дискретного максимума довольно спец функции
Сообщение18.11.2022, 19:33 
Заслуженный участник
Аватара пользователя


11/03/08
10007
Москва
Ну, если задача представить q суммой двух гауссианов - может быть, вообще не морочиться с матрицами, а использовать нелинейную регрессию? Скажем, Левенберга-Марквардта, подбирая параметры гауссианов?

 Профиль  
                  
 
 Re: Быстрый поиск дискретного максимума довольно спец функции
Сообщение18.11.2022, 19:58 


11/08/18
363
Спасибо большое, Евгений Машеров за советы!

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

У меня почти всегда две соседние функции очень близки друг к другу, грубо говоря их скалярное произведение примерно равно 0.99 (сами функции нормированы на единицу). Но также для каждой функции есть еще несколько функций (не соседних!!!) скалярное произведение которых тоже близко к 0.99. Отсортировать в линейный список по близости друг к другу нельзя, там по физике это или 2Д или 3Д объект. Вернее конечно отсортировать-то можно, но все равно с каким-то шагом остаются тоже очень близкие в смысле скалярного произведения функции.

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

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

 Профиль  
                  
 
 Re: Быстрый поиск дискретного максимума довольно спец функции
Сообщение21.11.2022, 13:41 
Заслуженный участник
Аватара пользователя


11/03/08
10007
Москва
Ну, можно использовать более сложную процедуру пошаговой. В которой добавляем, пока F-критерий оправдывает добавление, при этом проверяем, нет ли резона исключить уже включённые ради увеличения его же. Но тут уже трудно быть уверенным, что сойдётся быстро (на практике быстро, но в общем случае неясно).
Ну и такая близость регрессоров, мультиколлинеарность - это плохо.

 Профиль  
                  
 
 Re: Быстрый поиск дискретного максимума довольно спец функции
Сообщение22.11.2022, 15:38 
Аватара пользователя


26/05/12
1700
приходит весна?
ilghiz, я правильно понимаю, что в матрице C у вас количество базисных векторов существенно меньше, чем число координат в каждом из этих векторов?

-- 22.11.2022, 15:50 --

Если да, то в процессе поиска $$\min\limits_X^{}||Y-CX||^2$$ вне зависимости от ограничений на X вас будут интересовать две величины $$Y^TC;\quad C^TC$$ обе из которых вам так или иначе придётся посчитать, если вы хотите решить задачу честно. Однако, если ширина матрицы базисных векторов C много меньше её высоты, то в конечном итоге работы то вам делать придётся не так уж и много, потому что все суммирования по самому "длинному" индексу уже выполнены. Или вам и эту работу делать слишком затратно?

 Профиль  
                  
 
 Re: Быстрый поиск дискретного максимума довольно спец функции
Сообщение22.11.2022, 18:30 


11/08/18
363
Спасибо большое, Евгений Машеров и B@R5uk за комментарии и советы!

B@R5uk в сообщении #1570954 писал(а):
ilghiz, я правильно понимаю, что в матрице C у вас количество базисных векторов существенно меньше, чем число координат в каждом из этих векторов?

не, наоборот!

B@R5uk в сообщении #1570954 писал(а):
Если да, то в процессе поиска $$\min\limits_X^{}||Y-CX||^2$$ вне зависимости от ограничений на X вас будут интересовать две величины $$Y^TC;\quad C^TC$$ обе из которых вам так или иначе придётся посчитать, если вы хотите решить задачу честно.

да, верно, более того, в моем первом сообщении в этой ветке я обозначил
$$A = C^TC, ~~ b = Y^TC$$
и по началу специально не заострял внимание откуда взялись эти $A$ и $b$, чтобы не обсуждать наименшие квадраты. У нас с Вами кстати путаница в обозначении транспонированности матрицы $C$.

У меня есть память для $A$, у меня есть возможность изначально выполнить сколько угодно много предварительных операций, но вот потом у меня появляются векторы $Y$, и я хочу с минимальными затратами получать позиции ненулей в решении ($X$), и пытаюсь придумать что-то гарантированное, что могло бы максимально быстро решать такую задачу.

Исходная формула поиска максимума конечно позволяет на каждую пару $i,j$ выполнить ну очень немного арифметических операций, особенно если запоминать

$\displaystyle \frac{2a_{ij}}{1-a_{ij}^2}~~$ и $~~\displaystyle\frac{1}{1-a{ij}^2}$

но таких вычислений всяко надо сделать $\displaystyle\frac{N(N-1)}{2}$ и от этой асимптотики как раз и хотелось бы избавиться.

 Профиль  
                  
 
 Re: Быстрый поиск дискретного максимума довольно спец функции
Сообщение23.11.2022, 01:54 
Аватара пользователя


26/05/12
1700
приходит весна?
Интуитивно кажется, что не получится от квадратичной сложности избавиться в общем случае. Только если вам что-то очень хорошее известно про базисные столбцы в матрице C. В доказательство можно следующее нестрогое рассуждение провести.

Если бы у нас все базисные столбцы были ортогональны, то минимум бы доставляла та пара столбцов, которые имеют наибольшие (по модулю) скалярные произведения на столбец данных Y. То есть, для решения надо было бы посчитать N скалярных произведений и выбрать наибольшее по модулю и следующее по величине модуля. Так как у нас нет ортогональности, то для выбора первого наибольшего скалярного произведения придётся рассмотреть не только все базисные столбцы, но и все возможные нормированные разности базисных столбцов. Потому что каждая пара базисных столбцов задаёт двумерное пространство, таких пространств порядка $N^2$ и проекция вектора данных может оказаться наибольшей на любое из таких пространств (если, опять же, вам что-то хорошее про ваши базисные вектора не известно). Чтобы учесть проекции на эти пространства более полно необходимо рассматривать все возможные нормированные разностные столбцы.

У вас матрица C какого ранга, N? Линейно зависимых базисных столбцов нет? Если есть, то можно попытаться как-то это использовать. Хотя так на вскидку ничего не видится, кроме ускорения расчёта скалярных произведений.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу Пред.  1, 2

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group