|
|
  |
Сложение сигналов в самый "узкий", Как найти весовые коэффициенты для сложения? |
|
|
|
Sep 8 2010, 16:12
|
Частый гость
 
Группа: Участник
Сообщений: 117
Регистрация: 6-09-10
Пользователь №: 59 335

|
Цитата(SSerge @ Sep 6 2010, 22:48)  Для такой задачи естественно нормировать вектор коэффициентов так, чтобы Σxi=1 Нормировка к единице или к любой другой константе отличной от нуля дает простое решение, как привел выше. Но вот нормировка к нулю не позволяет решить задачу методом, приведенным выше. При такой постановке задачи (ноль) количество решений бесконечно (это на первый взгляд). Видится логичным такая ситуация: Допустим, мы нашли искомый вектор (Vector), в котором дисперсия вектора (Matrix * Vector) минимальна. Если мы меняем знак i-го столбца в Matrix, то новое решение было бы тем же вектором Vector, но только у которого i-й элемент тоже поменял знак. Нормировка вектора единицей не дает такого свойства решению. Может, кто знает, как поставить условие задачи, чтобы его решение обладало свойством, как описал?
Сообщение отредактировал getch - Sep 8 2010, 15:55
|
|
|
|
|
Sep 8 2010, 17:38
|
Частый гость
 
Группа: Участник
Сообщений: 117
Регистрация: 6-09-10
Пользователь №: 59 335

|
Цитата(Oldring @ Sep 8 2010, 19:27)  Вы в уме решить не пробовали, с равенством суммы к нулю? Чему будет равен минимум? Конечно же нулю, при нулевом векторе. И это - правильное решение, так как нулевой вектор коэффициентов удовлетворяет вашему ограничению. Конечно, будет ноль. Я только не понял, почему условие равенства единице первого элемента искомого вектора - это нехорошо. Вроде, при таком условии и обозначенное выше свойство решения будет выполняться. Цитата(Oldring @ Sep 8 2010, 19:27)  Правильное ограничение обычно получается из физики задачи. Расскажите, зачем вам это нужно - можно будет что-то подсказать. Есть такая наука - эконометрика. Стал с ней знакомиться и столкнулся с моей точки зрения с псевдо-научными рассуждениями и результатами (там не по делу (мое мнение) применяются довольно продвинутые результаты теорвера и матстатистики) эконометрики, за которые иногда авторы получали даже Нобелевские премии. Хочу разобраться просто, что откуда ведет. Благо огромное количество истории различных экономических показателей имеется. Разрабатываю инструментарий для исследования огромных баз экономических данных. Почему экономика, а не нечто другое? Причина только одна, нигде не накоплено такое большое количество информации. Ну нет измеренных данных изменения численности муравьев в муравейнике (и его роста) и подобных. В экономике есть. Зачем мне это надо? Чтобы понимать или иметь хотя бы минимальное представление.
Сообщение отредактировал getch - Sep 8 2010, 17:40
|
|
|
|
|
Sep 8 2010, 19:44
|
Частый гость
 
Группа: Участник
Сообщений: 117
Регистрация: 6-09-10
Пользователь №: 59 335

|
Цитата(Oldring @ Sep 8 2010, 20:53)  Потому что минимум будет другим. Выделение первого вектора при этом нарушает симметрию между веаторами.
Если вам нужно обязательно чтобы при изменении знака вектора просто менялся знак его коэффициента - возьмите в качестве ограничения равенство суммы квадратов коэффициентов единице. Оптимальный вектор коэффициентов при этом будет собственным вектором, соответствующим минимальному собственному значению корреляционной матрицы. Допустим, первый коэффициент равен Const1, и мы находим решение Vector1. Если первый коэффициент равен Const2, находим решение Vector2. При этом есть замечательное свойство: Vector2 = Vector1 * Const2 / Const1. Поэтому решаю задачу так: Первый коэффициент делаю единицей и нахожу решение Vector. Затем домножаю Vector на коэффициент, чтобы сумма квадратов его элементов была единица. Тем самым нахожу однозначное симметричное решение симметричной задачи. Или я где-то что-то сильно упускаю?
Сообщение отредактировал getch - Sep 8 2010, 19:45
|
|
|
|
|
Sep 9 2010, 06:49
|
Частый гость
 
Группа: Участник
Сообщений: 117
Регистрация: 6-09-10
Пользователь №: 59 335

|
Цитата(Oldring @ Sep 9 2010, 01:56)  Да. Сделайте константой второй коэффициеинт. Получите в общем случае другой оптимальный вектор. Непропорциональный первому. Действительно, получаются непропорциональные решения. При сумме квадратов коэффициентов равной единице однозначно выразить коэффициент через другие не получается. При этом еще и дифференцирование крайне затруднительно. И система уравнений получается вовсе не линейная. Тут, видимо, надо использовать какой-то численный метод решения. МНК подходит для этого? Цитата(Oldring @ Sep 9 2010, 01:56)  Да. Сделайте константой второй коэффициеинт. Получите в общем случае другой оптимальный вектор. Непропорциональный первому. И все же совершенно не понимаю природу этого. Делаю так: Определеляю первый коэффициент единицей, нахожу оптимальный вектор Vector1. Заново решаю задачу, но уже определяю константой второй коэффициент, равным второму элементу из Vector1. Получаю оптимальный вектор Vector2. Почему Vector1 не равен Vector2?! Похоже, понял причину.
Сообщение отредактировал getch - Sep 9 2010, 06:59
|
|
|
|
|
Sep 9 2010, 09:28
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(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 и есть искомый столбец коэффициентов, минимизирующий дисперсию.
--------------------
Пишите в личку.
|
|
|
|
|
Sep 9 2010, 11:58
|
Частый гость
 
Группа: Участник
Сообщений: 117
Регистрация: 6-09-10
Пользователь №: 59 335

|
Цитата(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 на каждой итерации?
|
|
|
|
|
Sep 9 2010, 12:19
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(getch @ Sep 9 2010, 15:58)  Корреляционная матрица составляется, как корреляция между соответствующими столбцами входной матрицы? Да. Произведение V'*V Цитата(getch @ Sep 9 2010, 15:58)  Что здесь обозначает V и abs? Перенормировка B на каждой итерации? Да. abs - абсолютное значение элементов матрицы. Точный вид нормировки не важен.
--------------------
Пишите в личку.
|
|
|
|
|
Sep 9 2010, 12:25
|
Частый гость
 
Группа: Участник
Сообщений: 117
Регистрация: 6-09-10
Пользователь №: 59 335

|
Цитата(Oldring @ Sep 9 2010, 12:28)  3. Несколько раз возвести обратную матрицу в квадрат, не забывая её при этом перенормировать: B=B/max(max(abs(B )));B=B*B; Дважды max - это опечатка?
|
|
|
|
|
Sep 9 2010, 14:04
|
Частый гость
 
Группа: Участник
Сообщений: 117
Регистрация: 6-09-10
Пользователь №: 59 335

|
Цитата(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). При такой быстрой сходимости норму разности между итерациями можно использовать простейшую: сумма квадратов элементов.
Сообщение отредактировал getch - Sep 9 2010, 13:49
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|