Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сложение сигналов в самый "узкий"
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Страницы: 1, 2, 3, 4
getch
Цитата(Oldring @ Sep 8 2010, 20:53) *
Потому что минимум будет другим. Выделение первого вектора при этом нарушает симметрию между веаторами.

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

Допустим, первый коэффициент равен Const1, и мы находим решение Vector1.
Если первый коэффициент равен Const2, находим решение Vector2.
При этом есть замечательное свойство: Vector2 = Vector1 * Const2 / Const1.

Поэтому решаю задачу так:
Первый коэффициент делаю единицей и нахожу решение Vector. Затем домножаю Vector на коэффициент, чтобы сумма квадратов его элементов была единица. Тем самым нахожу однозначное симметричное решение симметричной задачи.

Или я где-то что-то сильно упускаю?
Oldring
Цитата(getch @ Sep 8 2010, 23:44) *
Или я где-то что-то сильно упускаю?


Да. Сделайте константой второй коэффициеинт. Получите в общем случае другой оптимальный вектор. Непропорциональный первому.
getch
Цитата(Oldring @ Sep 9 2010, 01:56) *
Да. Сделайте константой второй коэффициеинт. Получите в общем случае другой оптимальный вектор. Непропорциональный первому.

Действительно, получаются непропорциональные решения.
При сумме квадратов коэффициентов равной единице однозначно выразить коэффициент через другие не получается. При этом еще и дифференцирование крайне затруднительно.
И система уравнений получается вовсе не линейная. Тут, видимо, надо использовать какой-то численный метод решения. МНК подходит для этого?

Цитата(Oldring @ Sep 9 2010, 01:56) *
Да. Сделайте константой второй коэффициеинт. Получите в общем случае другой оптимальный вектор. Непропорциональный первому.

И все же совершенно не понимаю природу этого.
Делаю так:
Определеляю первый коэффициент единицей, нахожу оптимальный вектор Vector1.
Заново решаю задачу, но уже определяю константой второй коэффициент, равным второму элементу из Vector1. Получаю оптимальный вектор Vector2.
Почему Vector1 не равен Vector2?!
Похоже, понял причину.
getch
Вроде, это задача квадратичного программирования. Пока смотрю материал на тему седловой точки функции Лагранжа. Загруз еще тот... Определиться бы с направлением.

Напоминаю формулировку задачи:
Найти такой вектор V, чтобы дисперсия вектора (Matrix*V) была минимальна.
При этом сумма КВАДРАТОВ элементов вектора V равна единице.
Мат. ожидание столбцов матрицы Matrix равно нулю.
Oldring
Цитата(getch @ Sep 9 2010, 10:49) *
Действительно, получаются непропорциональные решения.
При сумме квадратов коэффициентов равной единице однозначно выразить коэффициент через другие не получается. При этом еще и дифференцирование крайне затруднительно.
И система уравнений получается вовсе не линейная. Тут, видимо, надо использовать какой-то численный метод решения. МНК подходит для этого?


Нет, не подходит. С квадратичным ограничением задача сразу становится иная. Но также полностью обсосанная. Напишу еще раз, что решение есть собственный вектор, соответствующий минимальному собственному значению корреляционной матрицы. Собственные значения с собственными векторами - это также очень важные понятия из линейной алгебры, для их поиска разработаны свои эффективные и устойчивые алгоритмы, которые по своей природе итеративные, в отличие от решения системы линейных уравнений. В Матлабе их находит функция eig, для матрицы 10х10 она работает мгновенно. Но можете искать минимум квадратичной формы при квадратичном ограничении и явно. Или, например, вот таким способом, работающим для матриц с не слишком большыми числами обусловленностями:

1. Вычислить корреляционную матрицу сигналов: A=V'*V;
2. Найти обратную матрицу: B=inv(A);
3. Несколько раз возвести обратную матрицу в квадрат, не забывая её при этом перенормировать: B=B/max(max(abs(B )));B=B*B;
Скорее всего десятка итераций окажется достаточно, но лучше вычислять какую-либо норму разности между итерациями и итерировать, пока разность остается существенной.
4. Найти столбец x матрицы B с наибольшей суммой квадратов элементов. Перенормировать его на равенство суммы квадратов единице: x=x/sqrt(x'*x). Найденный x и есть искомый столбец коэффициентов, минимизирующий дисперсию.
getch
Цитата(Oldring @ Sep 9 2010, 12:28) *
Нет, не подходит. С квадратичным ограничением задача сразу становится иная. Но также полностью обсосанная. Напишу еще раз, что решение есть собственный вектор, соответствующий минимальному собственному значению корреляционной матрицы. Собственные значения с собственными векторами - это также очень важные понятия из линейной алгебры, для их поиска разработаны свои эффективные и устойчивые алгоритмы, которые по своей природе итеративные, в отличие от решения системы линейных уравнений. В Матлабе их находит функция eig, для матрицы 10х10 она работает мгновенно.

Корреляционная матрица составляется, как корреляция между соответствующими столбцами входной матрицы?

Цитата(Oldring @ Sep 9 2010, 12:28) *
Но можете искать минимум квадратичной формы при квадратичном ограничении и явно.

Под явный поиск что имеете в виду?

Цитата(Oldring @ Sep 9 2010, 12:28) *
Или, например, вот таким способом, работающим для матриц с не слишком большыми числами обусловленностями:

1. Вычислить корреляционную матрицу сигналов: A=V'*V;
2. Найти обратную матрицу: B=inv(A);
3. Несколько раз возвести обратную матрицу в квадрат, не забывая её при этом перенормировать: B=B/max(max(abs(B )));B=B*B;
Скорее всего десятка итераций окажется достаточно, но лучше вычислять какую-либо норму разности между итерациями и итерировать, пока разность остается существенной.
4. Найти столбец x матрицы B с наибольшей суммой квадратов элементов. Перенормировать его на равенство суммы квадратов единице: x=x/sqrt(x'*x). Найденный x и есть искомый столбец коэффициентов, минимизирующий дисперсию.

Что здесь обозначает V и abs? Перенормировка B на каждой итерации?
Oldring
Цитата(getch @ Sep 9 2010, 15:58) *
Корреляционная матрица составляется, как корреляция между соответствующими столбцами входной матрицы?


Да. Произведение V'*V

Цитата(getch @ Sep 9 2010, 15:58) *
Что здесь обозначает V и abs? Перенормировка B на каждой итерации?


Да. abs - абсолютное значение элементов матрицы. Точный вид нормировки не важен.
getch
Цитата(Oldring @ Sep 9 2010, 12:28) *
3. Несколько раз возвести обратную матрицу в квадрат, не забывая её при этом перенормировать: B=B/max(max(abs(B )));B=B*B;

Дважды max - это опечатка?
Oldring
Цитата(getch @ Sep 9 2010, 16:25) *
Дважды max - это опечатка?


Это функции Матлаба.
getch
Цитата(Oldring @ Sep 9 2010, 12:28) *
1. Вычислить корреляционную матрицу сигналов: A=V'*V;
2. Найти обратную матрицу: B=inv(A);
3. Несколько раз возвести обратную матрицу в квадрат, не забывая её при этом перенормировать: B=B/max(max(abs(B )));B=B*B;
Скорее всего десятка итераций окажется достаточно, но лучше вычислять какую-либо норму разности между итерациями и итерировать, пока разность остается существенной.
4. Найти столбец x матрицы B с наибольшей суммой квадратов элементов. Перенормировать его на равенство суммы квадратов единице: x=x/sqrt(x'*x). Найденный x и есть искомый столбец коэффициентов, минимизирующий дисперсию.

Воспроизвел, спасибо!. Ресурсоемкость минимальная при таком подходе.
Не знаю, правда, является ли найденный вектор оптимальным.
Если я правильно понял, то описанный вами метод - это общий численный метод нахождения собственного вектора, соответствующего минимальному собственному значению корреляционной матрицы.
Подскажите, где можно почитать на эту тему? Или это все тот же MIT-курс лекций освещает?

Цитата(Oldring @ Sep 9 2010, 12:28) *
3. Несколько раз возвести обратную матрицу в квадрат, не забывая её при этом перенормировать: B=B/max(max(abs(B )));B=B*B;
Скорее всего десятка итераций окажется достаточно, но лучше вычислять какую-либо норму разности между итерациями и итерировать, пока разность остается существенной.

Мне хватает и 5-и итераций (корреляционная матрица 6x6). При такой быстрой сходимости норму разности между итерациями можно использовать простейшую: сумма квадратов элементов.
Oldring
Цитата(getch @ Sep 9 2010, 18:04) *
Подскажите, где можно почитать на эту тему? Или это все тот же MIT-курс лекций освещает?


Не помню, упоминает ли явно. Максимальное собственное значение обратной матрицы соответствует минимальному собственному значению исходной. Обращение матрицы обращает её собственные значения. Возведение матрицы в степень возводит в степень её собственные значения, не изменяя собственных векторов. И это всё изучается в любом нормальном курсм линейной алгебры.
getch
Цитата(Oldring @ Sep 9 2010, 17:16) *
Не помню, упоминает ли явно. Максимальное собственное значение обратной матрицы соответствует минимальному собственному значению исходной. Обращение матрицы обращает её собственные значения. Возведение матрицы в степень возводит в степень её собственные значения, не изменяя собственных векторов. И это всё изучается в любом нормальном курсм линейной алгебры.

Но где здесь упоминание итерационного подхода?
Еще не сообразил, почему берется именно корреляционная матрица.
И нужно ли приводить столбцы исходной матрицы к нулевому МО? Такое же преобразование на корреляционную матрицу не должно повлиять?
Oldring
Цитата(getch @ Sep 9 2010, 18:55) *
Но где здесь упоминание итерационного подхода?


Возведение в степень выделяет максимальное собственное значение. С учетом перенормировки результата остальные собственные значения обуляются.

Цитата(getch @ Sep 9 2010, 18:55) *
Еще не сообразил, почему берется именно корреляционная матрица.
И нужно ли приводить столбцы исходной матрицы к нулевому МО? Такое же преобразование на корреляционную матрицу не должно повлиять?


Потому что дисперсия есть результат квадратичной формы с ковариационной матрицей на векторе коэффициентов.
Нужно приводить, иначе будет минимизироваться не дисперсия, а сумма квадратов результата. И матрица V'*V получится совсем не ковариационная.
getch
Цитата(Oldring @ Sep 9 2010, 18:13) *
Потому что дисперсия есть результат квадратичной формы с ковариационной матрицей на векторе коэффициентов.
Нужно приводить, иначе будет минимизироваться не дисперсия, а сумма квадратов результата. И матрица V'*V получится совсем не ковариационная.

Так все таки ковариационная или корреляционная матрица? Во втором случае мы зависим от дисперсии столбцов исходной матрицы. Надо ли их дисперсию приводить к единице?
Oldring
Цитата(getch @ Sep 9 2010, 20:14) *
Так все таки ковариационная или корреляционная матрица? Во втором случае мы зависим от дисперсиис столбцоа исходной матрицы. Надо ли их дисперсию приводить к единице?


Нет, ни в коем случае. Именно ковариационная. Именно V'*V.
getch
Цитата(Oldring @ Sep 9 2010, 19:16) *

Генерировал десятки тысяч случайных векторов, сумма квадратов которых равна единице. И сравнивал дисперсии с найденной по Вашей методике. Ваш вектор всегда оказывался оптимальным.

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

Честно признаюсь, просил помощи на нескольких форумах мат. направленности, но нигде мне ничего вразуметильного не ответили. Был приятно поражен отзывчивостью форумчан до селе неизвестного мне форума Electronix.
Всем ответившим огромное спасибо, и, конечно, еще раз отдельная благодарность Oldring!

Возникло огромное желание овладеть хотя бы основами линейной алгебры. К сожалению не владею техническим английским на уровне понимания рекомендуемого Oldring MIT-курса. Воспользуюсь книгами, упоминавшимися в этой ветке.
Oldring
Похвала всегда приятна, спасибо.
getch
Для меня понятно одно свойство решения, но раньше мог и ошибаться, поэтому спрашиваю:
При добавлении любого нового столбца в исходную матрицу, дисперсия нового оптимального решения увеличиваться не будет?
Oldring
Цитата(getch @ Sep 10 2010, 12:12) *
Для меня понятно одно свойство решения, но раньше мог и ошибаться, поэтому спрашиваю:
При добавлении любого нового столбца в исходную матрицу, дисперсия нового оптимального решения увеличиваться не будет?


Нет, только уменьшаться в случае появления новых недиагональных элементов корреляционной матрицы. Которые будут почти всегда на реальных данных.
getch
Цитата(Oldring @ Sep 9 2010, 18:13) *
Цитата(getch @ Sep 9 2010, 17:55) *

И нужно ли приводить столбцы исходной матрицы к нулевому МО? Такое же преобразование на корреляционную матрицу не должно повлиять?

Нужно приводить, иначе будет минимизироваться не дисперсия, а сумма квадратов результата. И матрица V'*V получится совсем не ковариационная.

На ковариационную матрицу МО столбцов никакого влияния не оказывает(т.к. cvar(V1, V2) == cvar(V1 + Scalar1, V2 + Scalar2)). Но решение будет верно с такой ковариационной матрицей только для столбцов с нулевым МО.
getch
Столкнулся с необъяснимой ситуацией. Исходных векторов всего два (длина 288). Вот так они выглядят и решение задачи:

Посмотрите, какое решение получилось. Вектор (0; 1)! Разве может такое быть?! Ведь теоретически такое возможно, только когда дисперсия одного из исходных векторов равна нулю.
Брал сотни тысяч случайных альтернативных векторов. Все они показывали NewVector с более высокой дисперсией.
Но все же не объяснить, как такое возможно?!
На всякий случай прилагаю файл с исходными векторами: Analyse.rar
Oldring
Цитата(getch @ Sep 30 2010, 11:51) *
Посмотрите, какое решение получилось. Вектор (0; 1)! Разве может такое быть?! Ведь теоретически такое возможно, только когда дисперсия одного из исходных векторов равна нулю.


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

В ваших данных явно видна проблема нехватки статистики. Корреляцию и дисперсию определяют одно - два больших изменения сигнала в начале записи. В зависимости от того, где произвольно начата запись, результат может получиться почти любым. smile.gif
getch
Цитата(Oldring @ Sep 30 2010, 11:07) *
Нет, теоретически такое возможно, когда коэффициент корреляции двух векторов вблизи нуля. В этом случае наименьшую дисперсию суммы даёт вектор с наименьшей дисперсией.

Посмотрел корреляцию этих исходных векторов. Действительно, почти нулевая.
Похоже, я не понимаю особенность условия суммы квадратов членов вектора-решения равная единице.
А если бы было условие, сумма абсолютных значений членов вектора-решения равна единице, то сам метод нахождения такого решения был бы совсем непростым? Такая задача не "обсосана"?
В таком случае для векторов выше было бы решение (0.16; 0.84).
Про корреляция что-то не понимаю. Определение ее знаю. Но ее часто используют для определения взаимосвязей. Нулевая корреляция - отсутствие взаимосвязи. Но как же так, если есть (0.16; 0.84)? Значит взаимосвязь имеется и нехилая - дисперсия NewVector значительно меньше дисперсий исходных векторов.
Oldring
Цитата(getch @ Sep 30 2010, 12:17) *
А если бы было условие, сумма абсолютных значений членов вектора-решения равна единице, то сам метод нахождения такого решения был бы совсем непростым? Такая задача не "обсосана"?


Тогда случай сложнее. Мы приходим почти что к общей задаче квадратичного программирования с линейными ограничениями. Так как ограничение оказывается лишь кусочно-дифференцируемой замкнутой гиперповерхностью размерности n-1, минимум может оказаться на особенности ограничения меньшей размерности, и поэтому, чтобы его найти, нужно перебирать вершины, ребра разной размерности и грани. Задача гораздо более трудоёмкая. Но не забывайте, что каким бы образом ни описывалось ваше органичение, сам минимизируемый функционал есть значение квадратичной формы с коррелиционной матрицей внутри, поэтому суммировать все длиннные вектора постоянно не нужно.

Цитата(getch @ Sep 30 2010, 12:17) *
Про корреляция что-то не понимаю. Определение ее знаю. Но ее часто используют для определения взаимосвязей. Нулевая корреляция - отсутствие взаимосвязи. Но как же так, если есть (0.16; 0.84)? Значит взаимосвязь имеется и нехилая - дисперсия NewVector значительно меньше дисперсий исходных векторов.


Добро пожаловать в реальный мир.
Не всегда взаимосвязь между реальными процессами выражается в виде корреляции, и не всегда полученная по реальным данным оценка корреляции означает наличие или отсутствие взаимосвязи. Я вам рассказал как обходиться с дисперсией, но вот как обходиться с "взаимосвязью" в общем случае я вам не расскажу. Возможно, именно за это и получали свою нобелевку упоминавшиеся вам экономисты.

А что касается "уменьшения дисперсии" - так вы наступаете на те же грабли, что наступали уже неоднократно. Нулевой вектор весов заведомо даст абсолютный минимум дисперсии, равный нулю, но он вам нужен? Минимум зависит от более или менее произвольно выбранного ограничения, на котором ищется минимум вашего квадратичного функционала, который вы называете "дисперсия".
getch
Цитата(Oldring @ Sep 30 2010, 11:07) *
Нет, теоретически такое возможно, когда коэффициент корреляции двух векторов вблизи нуля. В этом случае наименьшую дисперсию суммы даёт вектор с наименьшей дисперсией.

И при корреляции 1 такое возможно. Пример:
Исходный вектор1: (-1)^k - дисперсия 1, МО = 0.
Исходный вектор2: 2 * (-1)^k - дисперсия 2, МО = 0.
Корреляция 1.
Оптимальный вектор решения (1; 0).
Oldring
Цитата(getch @ Sep 30 2010, 13:26) *
И при корреляции 1 такое возможно. Пример:
Исходный вектор1: (-1)^k - дисперсия 1, МО = 0.
Исходный вектор2: 2 * (-1)^k - дисперсия 2, МО = 0.
Корреляция 1.
Оптимальный вектор решения (1; 0).


Нет, оптимальное решение пропорционально вектору <2, -1> и даёт нулевую дисперсию.
Тот упрощенный алгоритм не работает в случае выраждения корреляционной матрицы. У вас не должна обратиться корреляционная матрица прежде всего.
getch
Цитата(Oldring @ Sep 30 2010, 12:10) *
Тогда случай сложнее. Мы приходим почти что к общей задаче квадратичного программирования с линейными ограничениями. Так как ограничение оказывается лишь кусочно-дифференцируемой замкнутой гиперповерхностью размерности n-1, минимум может оказаться на особенности ограничения меньшей размерности, и поэтому, чтобы его найти, нужно перебирать вершины, ребра разной размерности и грани. Задача гораздо более трудоёмкая.

Симплекс-метод сюда подойдет?

Цитата(Oldring @ Sep 30 2010, 12:10) *
Но не забывайте, что каким бы образом ни описывалось ваше органичение, сам минимизируемый функционал есть значение квадратичной формы с коррелиционной матрицей внутри, поэтому суммировать все длиннные вектора постоянно не нужно.

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

Цитата(Oldring @ Sep 30 2010, 12:10) *
Добро пожаловать в реальный мир.
Не всегда взаимосвязь между реальными процессами выражается в виде корреляции, и не всегда полученная по реальным данным оценка корреляции означает наличие или отсутствие взаимосвязи. Я вам рассказал как обходиться с дисперсией, но вот как обходиться с "взаимосвязью" в общем случае я вам не расскажу. Возможно, именно за это и получали свою нобелевку упоминавшиеся вам экономисты.

Под взаимосвязью имел в виду линейную взаимосвязь. Посмотрел книги по мат. статистике. Там утверждается, что при нулевой корреляции линейная взаимосвязь отсутствует. Но на приведенных графиках она явно есть. Да и вектор (0.16; 0.84) тому подтверждение. Вообще, на конечной выборке любых случайных величин линейная взаимосвязь всегда есть.
Цитата(Oldring @ Sep 30 2010, 12:10) *
А что касается "уменьшения дисперсии" - так вы наступаете на те же грабли, что наступали уже неоднократно. Нулевой вектор весов заведомо даст абсолютный минимум дисперсии, равный нулю, но он вам нужен? Минимум зависит от более или менее произвольно выбранного ограничения, на котором ищется минимум вашего квадратичного функционала, который вы называете "дисперсия".

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

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

Цитата(Oldring @ Sep 30 2010, 12:40) *
Нет, оптимальное решение пропорционально вектору <2, -1> и даёт нулевую дисперсию.
Тот упрощенный алгоритм не работает в случае выраждения корреляционной матрицы. У вас не должна обратиться корреляционная матрица прежде всего.

Да, вы правы: пропорционально <2, -1>.
Oldring
Цитата(getch @ Sep 30 2010, 13:57) *
Симплекс-метод сюда подойдет?
Не нужно для перебора? Если так, то, возможно, перебор с генетическим алгоритмом дал бы быстрый результат.


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

Цитата(getch @ Sep 30 2010, 13:57) *
Под взаимосвязью имел в виду линейную взаимосвязь. Посмотрел книги по мат. статистике. Там утверждается, что при нулевой корреляции линейная взаимосвязь отсутствует. Но на приведенных графиках она явно есть. Да и вектор (0.16; 0.84) тому подтверждение. Вообще, на конечной выборке любых случайных величин линейная взаимосвязь всегда есть.


Она кажущаяся. Ещё раз: добро пожаловать в реальный мир.

Цитата(getch @ Sep 30 2010, 13:57) *
Не-не, про грабли эти помню. Поэтому и предложил условие равенства единице абсолютных значений членов оптимального вектора.


Под граблями я имел в виду зависимость результата от ограничения.
Вы, видимо, не понимаете. Поверхности равного значения положительно определенной квадратичной формы есть гиперэллипсоиды. Вложенные друг в друга для различных значений квадратичной формы. Такая вот многослойная "конкреция". Без ограничений на аргумент минимум строго в нуле. Единственное непрерывное ограничение есть гиперповерхность размерности n-1, на которой рассматривается значение этой квадратичной формы. Разные ограничения дают разные гиперповерхности и, соответственно, различные минимумы, как по величине квадратичной формы, так и по аргументу. Соответственно, различная сложность их нахождения, более того, в общем случае даже не гарантируется единственность локального минимума и простота получаемого минимизируемого функционала, если переходить к локальным координатам на этой гиперповерхности. Какой нужен вам - решать вам и только вам.
getch
Цитата(Oldring @ Sep 30 2010, 13:09) *
Симплекс-метод я собственноручно никогда не реализовывал, но наверное.
Про генетические алгоритмы - не думаю, если вам нужно гарантированно получить глобальный минимум. И обычные методы квадратичной минимизации, как мне кажется, должны быть эффективны.

Спасибо, попробую. У меня длины векторов измеряются тысячами и количество их десятками. Поэтому очень важны скоростные характеристики метода решения.

Цитата(Oldring @ Sep 30 2010, 13:09) *
Она кажущаяся. Ещё раз: добро пожаловать в реальный мир.

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

Цитата(Oldring @ Sep 30 2010, 13:09) *
Под граблями я имел в виду зависимость результата от ограничения.
Вы, видимо, не понимаете. Поверхности равного значения положительно определенной квадратичной формы есть гиперэллипсоиды. Вложенные друг в друга для различных значений квадратичной формы. Такая вот многослойная "конкреция". Без ограничений на аргумент минимум строго в нуле. Единственное непрерывное ограничение есть гиперповерхность размерности n-1, на которой рассматривается значение этой квадратичной формы. Разные ограничения дают разные гиперповерхности и, соответственно, различные минимумы, как по величине квадратичной формы, так и по аргументу. Соответственно, различная сложность их нахождения, более того, в общем случае даже не гарантируется единственность локального минимума и простота получаемого минимизируемого функционала, если переходить к локальным координатам на этой гиперповерхности.

Просто расстоптали... понял 0.001%.
Цитата(Oldring @ Sep 30 2010, 13:09) *
Какой нужен вам - решать вам и только вам.

Определился - сумма абсолютных значений единица. Тогда можно будет оценивать линейную взаимосвязь.
Oldring
Цитата(getch @ Sep 30 2010, 14:48) *
И я снова повторюсь, что на конечной выборке любых случайных величин всегда будет присутствовать линейная взаимосвязь. Даже если эти случайные величины этой взаимосвязи не имеют (бесконечная выборка).


Открою вам страшный секрет. Если последовательности ортогональны, то никакой "линейной взаимосвязи" у них нет по определению.
Например: <1, -1, 1, -1> и <1, 1, -1, -1>

А для оценки "линейной взаимосвязи" как правило используют именно коэффициент корреляции, а не что-либо иное. То есть недиагональный элемент корреляционной матрицы после нормировки дисперсий случайных величин на единицу.
getch
Цитата(Oldring @ Sep 30 2010, 13:54) *
Открою вам страшный секрет. Если последовательности ортогональны, то никакой "линейной взаимосвязи" у них нет по определению.
Например: <1, -1, 1, -1> и <1, 1, -1, -1>

Ух, я упрямый:
МО = 0, дисперсия = 1 у вышеприведенных векторов.
Для условия суммы абсолютных значений членов оптимального вектора будет: <0.5, 0.5> - дисперсия NewVector = 0.5
Для условия суммы квадратов значений членов оптимального вектора решение будет: <-0.667, 0.745> - дисперсия NewVector = 1.

Первое решение с дисперсией 0.5 показывает нам, что линейная взаимосвязь исходных векторов имеется. Т.к. дисперсия NewVector меньше дисперсий исходных векторов.
А вот второе решение - это как раз ущербная интерпретация нелувой корреляции (у этих векторов): отсутствие линейной взаимосвязи. Поэтому дисперсия NewVector равна минимальной дисперсии исходных векторов.
Oldring
Цитата(getch @ Sep 30 2010, 15:12) *
Ух, я упрямый:
...
Первое решение с дисперсией 0.5 показывает нам, что линейная взаимосвязь исходных векторов имеется. Т.к. дисперсия NewVector меньше дисперсий исходных векторов.


Чересчур.

А теперь посмотрите на исходные последовательности внимательно. Они симметричны. Если есть "линейная связь", она не может не зависеть от знаков последовательностей, при изменении знака одной последовательностью она должна изменяться на противоположную. А у вас на самом деле дисперсию 0.5 дают любые вектора весов с коэффициентами +-0.5, и минимум тут связан исключительно со свойствами вашего ограничения - так как в таких точках минимизируется квадратичная норма самого весового вектора.

Во втором случае дисперсия взвешенной суммы вообще не зависит от направления весового вектора, квадратичная норма которого равна единице. Потому что это - квадрат расстояния от центра до точек окружности, оно одинаково по всем направлениям.
getch
Цитата(Oldring @ Sep 30 2010, 14:21) *
А теперь посмотрите на исходные последовательности внимательно. Они симметричны. Если есть "линейная связь", она не может не зависеть от знаков последовательностей, при изменении знака одной последовательностью она должна изменяться на противоположную. А у вас на самом деле дисперсию 0.5 дают любые вектора весов с коэффициентами +-0.5, и минимум тут связан исключительно со свойствами вашего ограничения - так как в таких точках минимизируется квадратичная норма самого весового вектора.

У приведенных вами двух векторов 2^2 = 4 решения с одинаковым исходом (дисперсия 0.5).
Если мы у одного исходного вектора поменяем знак, то будет тоже таких 4 решения.
Только не надо здесь видеть противоречий с условием независимости линейной связи от знаков последовательностей. И вот почему:
В первом случае (знаки не меняли) мы берем одно решение из 4-х. И от него уже пляшем.
Для второго условия мы возьмем тоже решение, что и у второго.
О присутствии линейной связи нам говорит диперсия (0.5), меньшая дисперсий исходных векторов.
Oldring
Цитата(getch @ Sep 30 2010, 15:45) *
Только не надо здесь видеть противоречий с условием независимости линейной связи от знаков последовательностей.


Позвольте всё же мне остаться при своём мнении, что неформализованное вами понятие "линейная связь" тем не менее не может быть нечуствительной к знакам аргументов. Если она, конечно, "линейная". Из этого следует, что обнаруженная вами "связь" есть что угодно, кроме "линейной связи".
getch
Цитата(Oldring @ Sep 30 2010, 14:48) *
Позвольте всё же мне остаться при своём мнении, что неформализованное вами понятие "линейная связь" тем не менее не может быть нечуствительной к знакам аргументов. Если она, конечно, "линейная". Из этого следует, что обнаруженная вами "связь" есть что угодно, кроме "линейной связи".

Я беру и в том и в другом случае одно решение <0.5, 0.5>. И это и есть упомянутая вами независимость.
Спорить, конечно же, не будем. Да и ни к чему это. Благодарен вам, за подробные разъяснения и подсказки.
Буду решать задачу квадратичного программирования численным методом. Жаль, что нет столь же быстрого аналитического решения, как был предложен вами для случая суммы квадратов.

Подскажите, если задача будет ставиться, не как минимизация дисперсии, а как минимизация средней абсолютной (не квадрат) ошибки, то такая задача подходит под класс линейного программирования? Или это вообще нечто иное?
Oldring
Цитата(getch @ Sep 30 2010, 16:24) *
Подскажите, если задача будет ставиться, не как минимизация дисперсии, а как минимизация средней абсолютной (не квадрат) ошибки, то такая задача подходит под класс линейного программирования? Или это вообще нечто иное?


Я даже не могу представить, как это эффективно решать, тем более, в многомерном случае. smile.gif
Oldring
Впрочем, как искать эффективно то, что вы хотите, в случае двух последовательностей, понятно.

Во-первых, условие, что сумма модулей весов равна единице. Из этого следует, что минимум расположен на одном из четырех отрезков. Их можно перебрать поочередно.

Во-вторых, рассмотрим отрезок x+y=1. Отсюда y=1-x, при этом x изменяется от 0 до 1.
Вклад каждого отсчета последовательностей для x, изменяющегося от 0 до 1, есть кусочно-линейная функция с максимум одним изломом в середине. Проходим по всем отсчетам и вычисляем параметры суммарной линейной функции при x=0 и, возможно, положение излома и скачок параметров линейной функции в этой точке излома.

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

Всё. Пройдя по 4-м отрезкам ограничения вычисляем положение глобального минимума.

Ну а для многомерного случая... Опять же, искомая функция будет кусочно-линейной. На замкнутой кусочно-линейной гиперповерхности размерности n-1, каждый из гипертетраэдров будет разбиваться десятками тысяч узлов на множество мелких тетраэдров, на которых целевая функция - линейна. Соотвтетсвенно, минимум достигается в одной из одномерных вершин этой конструкции. Если очень хотите - можете решить сами эту бессмыссленную чисто программистскую задачу. smile.gif
getch
Цитата(Oldring @ Sep 30 2010, 18:02) *
Впрочем, как искать эффективно то, что вы хотите, в случае двух последовательностей, понятно.

Во-первых, условие, что сумма модулей весов равна единице. Из этого следует, что минимум расположен на одном из четырех отрезков. Их можно перебрать поочередно.

Для вектора длины N понадобится найти 2^N решений задач c простым условием нормировки: сумма членов равна единице. Потом выбрать наименьший. Конечно, 2^N это очень ресурсоемко, но это полностью аналитическое решение.
Oldring
Цитата(getch @ Sep 30 2010, 19:56) *
Для вектора длины N понадобится найти 2^N решений


Удачи! laughing.gif
getch
Цитата(Oldring @ Sep 30 2010, 19:04) *
Удачи! laughing.gif

Подкололи!

Буду решать задачу минимизации дисперсии. Не зря же дисперсия - это среднеквадратичная ошибка, а не среднеабсолютная ошибка. Просто расчеты делать гораздо проще со среднеквадратичной. Где проще, то и выбирают, когда строят теорию.
Попробую численные методы квадратичного программирования. Надеюсь, они не очень ресурсоемки и по всей длине векторов не надо будет бегать. Мне очень понравился ваш метод, когда надо было работать только с ковариационной матрицей, которая всегда относительно компактная, да к тому же еще и симметричная положительно определенная. Что поддается еще большей оптимизации при инверсии и перемножении.
Oldring
Цитата(getch @ Sep 30 2010, 20:25) *
Не зря же дисперсия - это среднеквадратичная ошибка, а не среднеабсолютная ошибка.


Конечно не зря.
Просто у гауссового распределения случайных величин, к которому стремятся практически все суммы распределений в пределе больших чисел, в экспоненте стоит именно квадрат ошибки. А вероятность совместного распределения независимых гауссово распределенных величин содержит сумму квадратов ошибок в экспоненте. Поэтому минимизируя дисперсию мы максимизируем вероятность такого совместного распределения, если в двух словах. Независимых гауссово распределенных величин smile.gif У вас, конечно, именно такой случай?
getch
Цитата(Oldring @ Sep 30 2010, 22:59) *
Независимых гауссово распределенных величин smile.gif У вас, конечно, именно такой случай?

Не имею дело с гауссово распределенными величинами. Более того, эти величины нестационарны.
Но, что интересно, определенная линейная сумма нестационарных величин при минимизации дисперсии показывает очень хорошее распределение...
Понимаю, что линейная связь в академическом опеределении - это мера угла между векторами. Но это определение мне не нравится на интуитивном уровне.
По мне так, линейная связь - это возможность уменьшения дисперсии линейной суммы векторов. Сумма абсолютных значений весовых коэффициентов которых равна единице.
Oldring
Цитата(getch @ Oct 1 2010, 00:44) *
По мне так, линейная связь - это возможность уменьшения дисперсии линейной суммы векторов. Сумма абсолютных значений весовых коэффициентов которых равна единице.


Ещё и ещё раз. Дисперсия линейной комбинации зависит от нормировки вектора весов. Для одного и того же направления вектора весов дисперсия пропорциональна квадрату его длины. Поэтому говорить про минимизацию дисперсии без учета нормировки вектора весов бессмысленно.
ivan219
Извиняюсь за вмешательство.
Но хотелось бы немного для себя разъяснить. Вы тут пытаетесь сделать как можно узкий сигнал, т.е. суммарный размах амплитуды должен быть минимален у сигнала во времени с максимальным числом гармоник в нём???
А что тогда скажете про ЛЧМ???
А то вот при использовании ЛЧМ сигнала с 255 гармониках длинной в 512 семпла и амплитудой каждой гармоники 1 размах, получается, от -17 да 16.29, а если сделать число гармоник больше то и размах увеличивается. А я этот сигнал отправляю в АЦП, а он 16 бит, так что максимальное значение, которое он примет без искажения будет 32768 и не трудно посчитать максимальную амплитуду каждой гармоники. Т.е. при увеличении числа гармоник их амплитуда падает а, следовательно, сигнал / шум на выходе ЦАП уменьшается.
getch
Цитата(Oldring @ Oct 1 2010, 02:07) *
Ещё и ещё раз. Дисперсия линейной комбинации зависит от нормировки вектора весов. Для одного и того же направления вектора весов дисперсия пропорциональна квадрату его длины. Поэтому говорить про минимизацию дисперсии без учета нормировки вектора весов бессмысленно.

Нормирую же вектор весовых коэффициентов условием, что сумма их абсолютных значений равна единице.

Цитата(ivan219 @ Oct 2 2010, 02:05) *
Вы тут пытаетесь сделать как можно узкий сигнал, т.е. суммарный размах амплитуды должен быть минимален у сигнала во времени с максимальным числом гармоник в нём???

В идеале хотелось бы получить И максимальную частоту (плохо владею терминологией ЦОС) суммарного сигнала. Т.е. суммарный сигнал должен максимальное количество раз пересечь свое МО. Минимизация дисперсии - это не задача максимизации частоты. Но ее решение на моих данных показывает довольно хорошие результаты: не получается так, что сигнал долго находится выше МО, затем долго - ниже. МО относительно часто пересекается.
Формализовать (чтобы потом можно было заняться оптимизационной задачей максимизации) частоту суммарного сигнала пока не могу. Похоже требуется разложить суммарный (возможно, достаточно только входные) сигнал на гармоники. Разложение Фурье, наверное (эта тема в парктическом применении мне мало знакома), стоит применять только на больших выборках сигнала.
Решение же задачи минимизации дисперсии в виде вектора весовых коэффициентов позволяет говорить о линейных взаимовязях входных данных не только на качественном уровне (коэффициенты корреляции), но и на количественном. Можно оценивать степень линейных взаимосвязей сразу многих входных сигналов.
Oldring
Цитата(getch @ Oct 3 2010, 13:45) *
Нормирую же вектор весовых коэффициентов условием, что сумма их абсолютных значений равна единице.


Бессмысленная нормировка нередко приводит к бессмысленным результатам. За исключением некоторых экстремальных теорем, в которых используется, эквивалентность всех норм. Но в этих теоремах обычно ничего не говорится про направление, так как направления оказываются неэквивалентными, только органичения на саму норму можно записать с точностью до константы.
getch
Цитата(Oldring @ Oct 3 2010, 15:30) *

Объясните, пожалуйста, чем поставленная задача отличается от многомерной линейной регрессии.
Там задача решается по МНК через сингулярное разложение. Вы же нашли решение, вроде, той же задачи, гораздо более простое.
Что я не понимаю?
Oldring
Цитата(getch @ Oct 29 2010, 16:24) *
Вы же нашли решение, вроде, той же задачи, гораздо более простое.
Что я не понимаю?


Отличается тем, что сингулярное разложение работает и в случае вырожденных ковариационных матриц. Которые практически не встречаются, если только не запускать на вход копии одного и того же сигнала.
getch
Цитата(Oldring @ Oct 29 2010, 17:52) *

Получается тогда, что ваш алгоритм гораздо проще известного решения многомерной линейной регрессии, гораздо быстрее выполняется. Вообщем, явно лучше. И странно, что в случае довольно обсосанной многомерной линейной регресси он не упоминается.
Oldring
Цитата(getch @ Oct 29 2010, 17:55) *
Получается тогда, что ваш алгоритм гораздо проще известного решения многомерной линейной регрессии, гораздо быстрее выполняется. Вообщем, явно лучше. И странно, что в случае довольно обсосанной многомерной линейной регресси он не упоминается.


Я вам наврал. Многомерная линейная регрессия - это другая задача. Она соответствует вашей задаче, если требовать коэффиициент при одном выделенном векторе равным -1. Но вашу задачу с нормировкой модуля вектора коэффициентов на 1 можно решать и через SVD.

Математики вообще любят общие методы, тем более, что давным-давно написаны качественные универсальные библиотеки линейной алгебры.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.