getch 0 22 ноября, 2010 Опубликовано 22 ноября, 2010 · Жалоба Вы, видимо, ветку не читали. 1. Уважаемый Oldring, привел очень быстрое и простое решение для случая, когда сумма КВАДРАТОВ весовых коэффициентов равна единице. 2. Постом выше написано, как решается задача, когда сумма коэффициентов равна единице. 3. И там же, как можно решить задачу (медленно, но работает), когда сумма МОДУЛЕЙ весовых коэффициентов равна единице. 4. Также в ходе обсуждения ставилась задача уменьшения не средне-квадратичной ошибки (дисперсии), а средне-абсолютной ошибки. Видение решения такой задачи уважаемый Oldring привел для двухмерного случая. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
getch 0 22 ноября, 2010 Опубликовано 22 ноября, 2010 (изменено) · Жалоба Найти такой вектор V, чтобы дисперсия вектора (InMatrix*V) была минимальна. При этом сумма АБСОЛЮТНЫХ значений элементов вектора V равна единице. Мат. ожидание столбцов матрицы InMatrix равно нулю. Очень интересное свойство у решения, точнее у получившегося сложенного сигнала (NewVector): 1. ковариации NewVector c любым исходным сигналом равны. При этом обязательность условия "АБСОЛЮТНЫХ" не нужна. 2. Если дисперсии исходных сигналов равны, то из п.1 следует, что коэффициент корреляции NewVector c любым исходным сигналом совпадает. P.S. Интересно, как сложить сигналы, чтобы получившийся сигнал имел одинаковый коэффициент корреляции с исходными, даже если дисперссии исходных сигналов неравны... Изменено 22 ноября, 2010 пользователем getch Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 22 ноября, 2010 Опубликовано 22 ноября, 2010 · Жалоба P.S. Интересно, как сложить сигналы, чтобы получившийся сигнал имел одинаковый коэффициент корреляции с исходными, даже если дисперссии исходных сигналов неравны... Ну например так. Решение не зависит от нормировок векторов и от нормировки вектора коэффициентов комбинации, оно зависит только от направлений исходных векторов и результата. Поэтому, нормируем все вектора на единичную дисперсию. Считаем, что среднее каждого вектора нулевое, и что ковариационная матрица невырожденная. Так что задача сводится к поиску одинаковой ковариации результата со всеми векторами. Уравнение: A*v=I, где I - единичный вектор-столбец высотой, равной числу векторов. Тогда v=inv(A)*I - сумма столбцов обратной от ковариационной матрицы отнормированных векторов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
getch 0 22 ноября, 2010 Опубликовано 22 ноября, 2010 (изменено) · Жалоба Уравнение: A*v=I, где I - единичный вектор-столбец высотой, равной числу векторов. Тогда v=inv(A)*I - сумма столбцов обратной от ковариационной матрицы отнормированных векторов. Так это решение я написал выше. И оно делает одинаковые ковариации, но не корреляции на случай несовпадающих исходных дисперсий. P.S. Не пойму, почему при минимизации дисперсии суммы двух векторов с одинаковой дисперсией весовые коэффициенты всегда равны? P.P.S. Интересное наблюдение, для двух сигналов с КК = 0 существует сигнал, который имеет одинаковый КК к исходным, и КК далеко не нулевой (у себя на примере получил > 0.7) Изменено 22 ноября, 2010 пользователем getch Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 22 ноября, 2010 Опубликовано 22 ноября, 2010 · Жалоба Так это решение я написал выше. И оно делает одинаковые ковариации, но не корреляции на случай несовпадающих исходных дисперсий. Так перенормируйте исходные вектора на единичные дисперсии. Нормировку потом учтете в конце в векторе коэффициентов. Ну и упростите потом результат. P.P.S. Интересное наблюдение, для двух сигналов с КК = 0 существует сигнал, который имеет одинаковый КК к исходным, и КК далеко не нулевой (у себя на примере получил > 0.7) Потому что cos(90/2)=0.707... :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
getch 0 22 ноября, 2010 Опубликовано 22 ноября, 2010 · Жалоба Так перенормируйте исходные вектора на единичные дисперсии. Нормировку потом учтете в конце в векторе коэффициентов. Ну и упростите потом результат. Под вечер, наверное, туплю. Как учесть нормировку в векторе полученных коэффициентов? Потому что cos(90/2)=0.707... :laughing: Точно, ступил. Нулевая корреляция - это же нулевое скалярное произведение векторов. Т.е. они ортонормированы. И соответственно угол 45. Спасибо, действительно, смешной вопрос. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 22 ноября, 2010 Опубликовано 22 ноября, 2010 · Жалоба Под вечер, наверное, туплю. Как учесть нормировку в векторе полученных коэффициентов? Поделить каждый коэффициент результата на использованный нормировочный коэффициент соответствующего ему вектора. :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
getch 0 22 ноября, 2010 Опубликовано 22 ноября, 2010 · Жалоба Поделить каждый коэффициент результата на использованный нормировочный коэффициент соответствующего ему вектора. :laughing: Ага, спасибо! Я точно ступил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 22 ноября, 2010 Опубликовано 22 ноября, 2010 · Жалоба P.S. Не пойму, почему при минимизации дисперсии суммы двух векторов с одинаковой дисперсией весовые коэффициенты всегда равны? Не всегда, но возможно вам подскажет, что у симметричной матрицы 2х2 с одинаковыми элементами на главной диагонали собственные вектора всегда [1, 1] и [1, -1]. Когда их два. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
getch 0 22 ноября, 2010 Опубликовано 22 ноября, 2010 (изменено) · Жалоба Спрошу еще, мне непонятен сей момент: Как такое может быть в данном случае, чтобы средне-квадратичная ошибка была меньше у NewV1 (в сравнении с NewV2), а средне-абсолютная - больше? Ведь по графикам видно, что и NewV1 и NewV2 находятся в диапозоне (-1; 1). Изменено 22 ноября, 2010 пользователем getch Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 22 ноября, 2010 Опубликовано 22 ноября, 2010 · Жалоба Ведь по графикам видно, что и NewV1 и NewV2 находятся в диапозоне (-1; 1). И что? Очевидно же, что если вы находите глобальный минимум некой функции, то значение минимума не превышает значение функции во всех остальных точках. Иначе вы нашли не минимум. :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
getch 0 22 ноября, 2010 Опубликовано 22 ноября, 2010 (изменено) · Жалоба И что? Очевидно же, что если вы находите глобаотный минимум некой функции, то значение минимума не превышает значение функции во всех остальных точках. Иначе вы нашли не минимум. :laughing: Элементы векторов NewV1 и NewV2 находятся в диапазоне (-1;1). Раз сумма квадратов элементов NewV1 < суммы квадратов элементов NewV2, то отсюда же должно следовать, что и сумма модулей элементов NewV1 < суммы модулей элементов NewV2. А на картинке это не так. Я бы понял, если бы элементы NewV1 и NewV2 вылезали за диапазон [-1;1], но они все внутри. P.S. Представьте, что я ничего не говорил про V1 и V2. А сразу показал NewV1 и NewV2. Изменено 22 ноября, 2010 пользователем getch Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 22 ноября, 2010 Опубликовано 22 ноября, 2010 · Жалоба Раз сумма квадратов элементов NewV1 < суммы квадратов элементов NewV2, то отсюда же должно следовать, что и сумма модулей элементов NewV1 < суммы модулей элементов NewV2. Не должно. Рассмотрите, ну, например... Бином Ньютона. :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
getch 0 22 ноября, 2010 Опубликовано 22 ноября, 2010 · Жалоба Прошу, поясните свое решение для минимизации средне-абсолютной ошибки: Впрочем, как искать эффективно то, что вы хотите, в случае двух последовательностей, понятно. Во-первых, условие, что сумма модулей весов равна единице. Из этого следует, что минимум расположен на одном из четырех отрезков. Их можно перебрать поочередно. Во-вторых, рассмотрим отрезок x+y=1. Отсюда y=1-x, при этом x изменяется от 0 до 1. Вклад каждого отсчета последовательностей для x, изменяющегося от 0 до 1, есть кусочно-линейная функция с максимум одним изломом в середине. Проходим по всем отсчетам и вычисляем параметры суммарной линейной функции при x=0 и, возможно, положение излома и скачок параметров линейной функции в этой точке излома. После этого сортируем все точки изломов по возрастанию координат, проходим по списку, обновляя параметры линейной функции и вычисляем точку, в которой значение искомой кусочно-линейной функции минимально. Благо, очевидно, что минимум будет достигаться в одном из узлов последовательности. Всё. Пройдя по 4-м отрезкам ограничения вычисляем положение глобального минимума. Ну а для многомерного случая... Опять же, искомая функция будет кусочно-линейной. На замкнутой кусочно-линейной гиперповерхности размерности n-1, каждый из гипертетраэдров будет разбиваться десятками тысяч узлов на множество мелких тетраэдров, на которых целевая функция - линейна. Соотвтетсвенно, минимум достигается в одной из одномерных вершин этой конструкции. Если очень хотите - можете решить сами эту бессмыссленную чисто программистскую задачу. :) Даже для двухмерного случая не понял (выделил). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 22 ноября, 2010 Опубликовано 22 ноября, 2010 · Жалоба Прошу, поясните свое решение для минимизации средне-абсолютной ошибки: Вспомните как выглядит график функции модуля. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться