[Метод наименьших квадратов]Приглашаю подумать
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.134] |
|
|
правила раздела Алгоритмы

[Метод наименьших квадратов]Приглашаю подумать
|
Сообщ.
#1
,
|
|
|
|
Мысль мне давно в голову засела. Что такое МНК? Метод, позволяющий провести кривую заданного типа рядом с экспериментальными точками. Чтобы получить коэффициенты, мы занимаемся минимизацией функционала Sum_1_N ( ( y_i- f(x_i))^2 )
Но почему именно "квадратов"? Почему не 4 степеней, или 10х или 100ых? Можно же написать Sum_1_N ( ( y_i- f(x_i))^(2*k) ) И совсем не очевидно, что при k>1 результат будет хуже, чем при k=1. То есть, кривая может лежать "ближе" к заданным точкам . Я попробовал на Excel'e подогнать к набору из 10 точек параболу по М4К и М6К М4К по виду лучше легла, чем МНК. (мининизировал Solver'ом) Препы в Институте отмазывались, что МНК придумали потому, что коэффициенты для прямой хорошо им находятся. Это и понятно - мы их явно можем вытащить из частных производных от Sum Но это имхо не ответ. Еще в статистике есть теорема, что если точки от кривой раскиданы по Гауссу, то МНК доставляется наименьшая дисперсия для кривой. Тоже не удовлетворяет меня. Кто-нибудь скажет, что-то ценное? Понимаю, что тема скорее для математика, а не программерская, но может кто шарит. |
|
Сообщ.
#2
,
|
|
|
|
Цитата kms, 12.05.02, 21:54:05 Понимаю, что тема скорее для математика, а не программерская, но может кто шарит. вроде этот раздел форума как раз для этого и предназначен:)) мы в универе вот только к нему подошли, так что настолько глубоко я в нем не шарю.. но насколько я понял, это почти оптимально с точки зрения качество/производительнось. чтобы было приемлемое приближение и все легко находилось:)) |
|
Сообщ.
#3
,
|
|
|
|
Дело в том, что препады в некоторй степени правы. Днйствительно при увеличении степени вычисление коэфф. затрудняется. А на сколько я помню из университетской практики наша профессура всегда гордилась своими умственными способностями, они как мы не пользовались компутерами, а считали все на листочках. ;D
|
|
Сообщ.
#4
,
|
|
|
|
Addon:
Выбирай и делай то, что тебе самому по душе и если позволяют возможности. 8) |
|
Сообщ.
#5
,
|
|
|
|
Весь вопрос в том, какие данные мы собираемся апроксимировать, так если эксперементальные точки лежат практически на прямой, то лучше воспользоваться МНК (апроксимировать прямой), в других случаях лучшее приблежене будет если апроксимировать параболой.
Но чем больше степень полинома, тем больше вычислений :( |
|
Сообщ.
#6
,
|
|
|
|
Кто же знает где они лежат, на прямой или на окружности. ;D ;D ;D
|
|
Сообщ.
#7
,
|
|
|
|
Ты...
У тебя есть несколько точек полученых в ходе эксперемента. Ты смотришь как они лежат ( Цитата GrAnd, 18.05.02, 08:05:24 на прямой или на окружности. ;D ;D ;D ) и апроксимируешь |
|
Сообщ.
#8
,
|
|
|
|
А если их около сотни ;D ;D ;D Дело в том, что начинать аппроксимацию надо с самого лажового метода и при не получении необходимого приближения усложнять методику. И рассматривать где лежат точки не имеет никакого смысла.
|
|
Сообщ.
#9
,
|
|
|
|
Кроме МНК существуют метод моментов, метод максимального правдоподобия, метод минимальных модулей, метод коллокаций и мног ещё чего. Во многих случаях МММ (минимизируется максимальное отклонение экспериментальных точек от графика) визуально выглядит лучше. Почитайте труды Великого геометра, создателя метода, и тогда многое станет ясно. МНК решает более широкий круг задач, чем тот, который Вы для него отвели. И как часто бывает - недостатки метода есть продолжение достоинств.
|
|
Сообщ.
#10
,
|
|
|
|
Если я правильно помню идею МНК, то суть его в том, что мы минимизируем отклонение. Почему квадрат? Потому что степень небольшая, уравнение выводится просто. Можно было бы и модуль отклонения - но он не дифферинцируется
. Сами вспомните, как метод получается - пишем [C0f0 + .. + CnFn]^2->min, дифференцируем по всем переменным, получаем систему - вот и все. Зачем усложнять - очень часто усложнение не оправдывается. |
|
Сообщ.
#11
,
|
|
|
|
Ты прав. можно использовать не только вторую степень, но вообще любую. Выбор степени зависит от пространства, в котором проводится аппроксимация. почитай про функциональный анализ. если не найдешь - пиши на мыло.
|
|
Сообщ.
#12
,
|
|
|
|
2WseslaW
ты чо, смеёшься?? посмотри на дату ;D |
|
Сообщ.
#13
,
|
|
|
|
Да, не думал, чо тема вызовет столько откликов за 3 года
![]() И тем не менее, никто достаточно не аргументировал, почему МНК лучше не с точки зрения вычислительной сложности, а как приближение кривой к точкам.. Про метод моментов поищу, мне представляется, что это нечто похожее на увеличение степени. |
|
Сообщ.
#14
,
|
|
|
|
а ты чо, тот самый кмс 3 года спустя?? ;D
кстати не 3, а 1 ;D ;D и вобще, не следует путать метод наименьших квадратов и линейную регрессию. наименьшими квадратами можно приближать какой угодно функцией, хоть суммой логарифма с гиперболическим косинусом. более того, мнк - ето вовсе даже не метод, а просто способ вычисления расстояния между двумя функциями. для линейной регрессии минимум находится аналитически, для других приближений его ищут различными _методами_ вроде градиентного спуска, сопряжённых градиентов, ньютона-рафсона, ....... . |
|
Сообщ.
#15
,
|
|
|
|
>а ты чо, тот самый кмс 3 года спустя??
Типа того.. ![]() >кстати не 3, а 1 Да, да ![]() >и вобще, не следует путать метод наименьших квадратов и линейную регрессию. наименьшими квадратами можно приближать какой угодно функцией, хоть суммой логарифма с гиперболическим косинусом. Я не путаю. Предполагается, что мы приближаем набор точек (x_i, y_i) какой-либо функцией Phi(x)? МНК дает нам необходимые коэффициенты этой фи. >более того, мнк - ето вовсе даже не метод, а просто способ вычисления расстояния между двумя функциями. Да, это функционал по сути. Так вот, чем обусловлен его выбор для все подряд функций и размерностей пространства Rn ? >для линейной регрессии минимум находится аналитически, для других приближений его ищут различными _методами_ вроде градиентного спуска, сопряжённых градиентов, ньютона-рафсона, ....... . Да, да, все это уже другие вопросы. Очевидно, что аналитическое решение есть в маолм количестве случаев, дальше начинаются обычные опты (тот же сольвер экселевский или матлаб). Почему МНК(2)? Почему не МНК(3) 4... итд? Я так понимаю, wormball знает ответ, но молчит пока. Написал на мыло. Кстати, я найду где поискать и спросить, про все, что касается функана, но только что именно? Тока подзабыл я это все чуть-чуть...Вел ли кто-нибудь исследования альтернативных функционалов для оптимального приближения кривой? |
|
Сообщ.
#16
,
|
|
|
|
ето ты мне чтоли написал?? ;D
я знаю ответ не более, чем твои профессора. на самом деле вторые степени минимизировать действительно легче, чем последующие. да и вобще для большинства применений достаточно второй степени. напр фурье - ето тот же мнк, там даже теорема доказана о стремлении ряда фурье к функции. я думаю, для более высокой степени доказать оную теорему было бы проблематично, не говоря уже о формуле для самих коэффициентов. вобще в науке есть много примеров использования недоказанных (!) методов или методов, которые не являются лучшим выбором, но менее трудоёмки. например, те же самые методы оптимизации в случае произвольной функции не гарантируют спуска в глобальный (а иногда и локальный) минимум, так что сам экспериментатор вынужден подбирать наиболее подходящий в его случае метод. сопственно метод заводить собственный функционал расстояния тоже известен математике. тоесь ты можешь задать совершенно любую функцию и использовать её в качестве расстояния. но опять же не доказано, что сей метод имеет неоспоримые преимущества перед мнк, и в 99\% случаев используют мнк. аещё я слышал про некий "метод максимального правдоподобия", только не знаю чо ето такое. зы. проверил почту, ничего нового |
|
Сообщ.
#17
,
|
|
|
|
да еще не забывай чем больше степень тем больше осциляция поэтому большие степени полиномов не используют
|
|
Сообщ.
#18
,
|
|
|
|
2 Lucifer
Была в статистике теорема о том, что если ошибки по гауссу, то доставляется минимальная дисперсия. Что такое робастность - непомню >:( , видимо устойчивость к начальным данным.. Пусть мы строим функционал, который тем больше, чем больше совокупность всех |f_i - y_i| и тем ближе к 0, чем она меньше. Я пока не говорю, как мы определяем меру для совокупности |f_i - y_i| Пока на интуитивном уровне... МНК определяет это так: Найти минимум функционала SUM( |f_i (a, b, c...) - y_i|^2) -> min a b c - искомые коэффициенты f() Можно ли предложить что-то лучше? Заодно задам еще один идиотский вопрос (на него можно не отвечать..): Допустим, у нас есть набор простых функций. Можно ли хоть как-то подступиться к задаче - композицией этих функций собрать такую, которая бы наилучшим образом приближалась бы к нашим точкам? Скорее всего, это нереально. |
|
Сообщ.
#19
,
|
|
|
|
Цитата Lucifer, 23.09.03, 16:23:26 Представь, что среди этой выборки был один кривой элемент, т.е. вся выборка из N(0,1), а один элемент попался равным 10000000(секретарша ошиблась когда цифры набивала, чубайс 380 вместо 220 вольт врубил). ага, ты бы ещё захотел, чтобы она выдавала правильный ответ при половине кривых чисел в выборке. гнать надо в шею такую секретаршу!! в крайнем случае написать спец. программу, убирающую все нехорошие числа. да и вобще насколько я помню математическое ожидание обладает какимито хорошими свойствами, которыми не обладает медиана. кстати что такое метод максимального правдоподобия?? : |
|
Сообщ.
#20
,
|
|
|
|
Цитата wormball, 23.09.03, 17:30:18 ага, ты бы ещё захотел, чтобы она выдавала правильный ответ при половине кривых чисел в выборке. гнать надо в шею такую секретаршу!! в крайнем случае написать спец. программу, убирающую все нехорошие числа. да и вобще насколько я помню математическое ожидание обладает какимито хорошими свойствами, которыми не обладает медиана. кстати что такое метод максимального правдоподобия?? : ![]() правильно помнишь м.о в отличии от медианы линейная операция -> легко считается и анализируется как ф-я чего про медиану сказать нельзя ну а самое главное сумма мо=мо суммы в независимости от переменных ТОВАРИЩ помни есть сл. величины без м.о и не попадись впросак (Коши) |
|
Сообщ.
#21
,
|
|
|
|
Цитата esperanto, 23.09.03, 17:58:56 ТОВАРИЩ помни есть сл. величины без м.о и не попадись впросак (Коши) 0525! уж сколько раз твердили миру, что у коши есь математичесоке ожидание! у него нет дисперсии а уж тем более есь они у тех величин, с которыми люди имеют дело на практике. |
|
Сообщ.
#22
,
|
|
|
|
Цитата wormball, 23.09.03, 18:07:02 0525! уж сколько раз твердили миру, что у коши есь математичесоке ожидание! у него нет дисперсии а уж тем более есь они у тех величин, с которыми люди имеют дело на практике. судя по всему твердили те кто не знает тер вер!!! f(x)=1/pi(1+x^2) ex=integral(x/(1+x^2)dx,0,00)=бесконечность и хватит спорить с преподавателями |
|
Сообщ.
#23
,
|
|
|
|
сморя как интегрировать 8D
даже если не имеет, то всё равно насколько я понимаю ни один естественный процесс по нему не распределён, тоесь его можно рассматривать как математическую шутку ;D. |
|
Сообщ.
#24
,
|
|
|
|
Цитата wormball, 23.09.03, 19:25:53 сморя как интегрировать 8D даже если не имеет, то всё равно насколько я понимаю ни один естественный процесс по нему не распределён, тоесь его можно рассматривать как математическую шутку ;D. ты не прав например по закону арксинуса распределено случайное двухмерное блуждание кроме этого есьт дургие заокны в том числе дискретные без м.о например человек кидает монету до того как первый раз выпадет орел и получает приз в размере равном два в степени количество попыток. так вот м.о приза равно бесконечности поэтому елси ты будешь эмулировать эту игру и считать м.о то получится что посчитанное м.о не ближе к деймтвительности чем результат одного опыта Гнеденоко Исортия теории вероятности |
|
Сообщ.
#25
,
|
|
|
|
Цитата kms_, 23.09.03, 14:05:02 Заодно задам еще один идиотский вопрос (на него можно не отвечать..): Допустим, у нас есть набор простых функций. Можно ли хоть как-то подступиться к задаче - композицией этих функций собрать такую, которая бы наилучшим образом приближалась бы к нашим точкам? Скорее всего, это нереально. Вопрос совершенно не идиотский, очень даже актуальный. Первым кто дал на него правильный, исчепывающий и положительный ответ был Чебышев. см. полиномы Чебышева. Для практического применения лучше всего с вопросом ознакомиться по книге Анго "Математика для электро- и радиоинженеров". Практическую реализацию метода см. www.netlib.org/chephes аппроксимация произвольной функции дробно - рациональными функциями по критерию минимума максимальной ошибки (критерий Чебышеба, минимакса). Кстати, все что здесь написано о выборе степеней, есть ничто иное как выбор нормы в которой осуществляется аппрокимация. Норма вектора (в Вашем случае это вектор разности аппроксимирующей функции и исходной) L=SumNi=1|xi|p. p=2 - евклидова норма, наименьшие квадраты p=\infinity критерий минимакса. |
|
Сообщ.
#26
,
|
|
|
|
Да исполнится же этой теме 5 лет!:)
Вопрос воистину вечный, я вот тоже как-то задумался над этим! По-моему, всё намного проще! Не могу блеснуть очень глубокими знаниями, но на пальцах могу себе представить. МНК имеет вид ∑(Yi - f(Xi))^2 = min. (рассмотрю задачу на плоскости) Т.е. суммируются квадраты расстояний по оси Y между практическим (табличным) значением в i-той точке и функцией в этой точке. И аналитическим образом мы минимизируем эту сумму, т.е. принимаем, что все частные производние по неизвестным параметрам функции равны нулю. Во-первых, почему там стоит квадрат? Ну уж точно, первую степень туда не влепишь, т.к. расстояния между Yi и f(Xi) будет получаться как положительным, так и отрицательным. Т.е., с нормальным случайным распределением, сумма всегда будет варьировать возле нуля, не накапливая тем самым общее отклонение. И так обстоит дело с любой нечётной степенью. Модуль туда, действительно, не воткнёшь, не дифференцируется, так нам однажды сказала учительница в школе и я принял это на веру:) А теперь, если воткнуть туда 4 степень.... И что это получится... Очевидно, что сложные вычисления. А подумать глубже, будет просто всё так же суммироваться отклонение, только уже не в степени 2, а в степени 4. На мой взгляд, роль чётной степени - это просто перейти к абсолютному расстоянию, всегда положительному, дабы накапливать сумму. А четвёртая степень просто будет стремительнее накапливать сумму при больших Дельта Y. Следовательно, если и будет разница в минимизации суммы вторых и четвёртых степеней, то она будет заключаться в ооооочень маленьком приросте точности, на мой взгляд. А сужу, что ооочень маленьком потому что... вы видели вообще насколько чётко МНК апроксимирует??? И расстояние от точки до графика - воистину минимально, минимальней не придумаешь! А если не придумаешь, то и сумма 4 степеней будет там минимальна!!! А вообще, попробую как-нибудь сравнить на практике.... |
|
Сообщ.
#27
,
|
|
|
|
Для данных полученных при реальных измерениях степень лучше не увеличивать, а уменьшать. А то получается, что чем больше отклонение ( шум ), тем больше у него вес, а по идее надо наоборот. Поэтому для борьбы с помехами лучше минимизаровать ∑|Yi - f(Xi)|. Это сложнее, чем сумму квадратов, но реально.
|
|
Сообщ.
#28
,
|
|
|
|
Цитата prografix @ А то получается, что чем больше отклонение ( шум ), тем больше у него вес, а по идее надо наоборот. Не понял: так ведь чем больше вес, тем оно сильнее и минимизируется? (относительно других отклонений) Отклонение можно считать шумом только если есть уверенность, что эмпирическая функция p(x) близка к незашумлённому сигналу, а этого мы утверждать не можем на основе самих отклонений эмпирической функции с текущими коэффициентами от исходных данных, т.к. сама же эмпирическая функция и определяется этими отклонениями, при изменении её коэффициентов отклонения будут другими и "шум" будет совсем другой, т.к. незашумлённым будет считаться другой сигнал. Или нет? На практике, честно, не пробовал.... Добавлено Запутанно как-то.... Я имел в виду, что шум - это отклонение некоторой иделизированной функции f(x) незашумлённого сигнала, т.е. |f(xi) - Yi|, когда же мы проводим аппроксимацию, то на основе данных xi, Yi строется эмпирическая функция p(x), причём минимизируется Σ|p(xi)-Yi|n, n >= 1. Т.о. шум в данном случае просто невычисляем: величина |p(xi) - Yi| ничего не говорит о |f(xi) - Yi|. |
|
Сообщ.
#29
,
|
|
|
|
Формулу ∑(Yi - f(Xi))^2 можно записать как ∑|Yi - f(Xi)|*|Yi - f(Xi)|, т.е. для каждого отклонения вес равен ему же. Получается, что у маленького отклонения маленький вес, а у большого - большой. Но большие отлонения имеют шумы, которые вообще надо выбросить.
В случае минимизации ∑|Yi - f(Xi)| у всех отклонений вес одинаковый. |
|
Сообщ.
#30
,
|
|
|
|
Господа, что-то вы с шумами загнались!
Самое важное в МНК - это то, что есть функция суммарного отклонения от табличных точек некоторой кривой, форма и положение которой зависит от её коэффициентов. И при изменении некоторого коэффициента эта сумма уменьшается или увеличивается. А для просчёта оптимального коэффициента нужно просто искать частные производные. И я считаю, что 4-ая, что 2-ая степень - практически одна фигня, ну разве что мааалость поточнее будет 4-ая степень, я так думаю... Вобщем сейчас проверю, жуть как интересно!!! Сунулся.... Жесть.... Выражение расписывается на 2 строчки.... Если, вобщем добью, то выложу следующим постом. Вообще, надо кому???? |
|
Сообщ.
#31
,
|
|
|
|
prografix
Сумма отклонений - это функция ошибки аппроксимации. Ни в коем случае её элементы не есть выявленный шум, я всё-таки на этом настаиваю. Это лишь оцнека ошибки приближения - расстояние между функциями, вообще-то. Евклидово расстояние способствует равноценному приближению ко всем точкам - без потери свойств "фильтрации" шума. Т.к., чтобы компенсировать, допустим отклонение в некоторой точке xk, не достаточно ликвидировать просто суммарное отклонение в нескольких других точках, что позваляет линейная сумма модулей. Т.е. квадрат направляет минимизацию в первую очередь на очень плохие точки, а не аппроксимирует функцию точне там, где отклонение больше, как ты говоришь, говоря о весе, равном отклонению, ведь когда отклонение станет меньше 1, то "вес" данной точки будет уже уменьшаться. Я хочу сказать, что "вес" не означает, что данная точка будет аппроксимирована точнее, он лишь указывает, насколька аппроксимация в данной точке далека от истины, и алгоритм улучшения аппроксимации - минимизации функции её ошибки - никак ведь на уровне отдельных точек вообще-то не работает: минимум глобален. И по старой же причине я не согласен, что если ∑|Yi - f(Xi)|*|Yi - f(Xi)| больше, то шум в данной точке больше. См. мой пост №28, пока не вижу ему опровержния. fse Цитата fse @ Если, вобщем добью, то выложу следующим постом. Вообще, надо кому???? Интересно было бы посмотреть |
|
Сообщ.
#32
,
|
|
|
|
Вобщем вот.... Реализовал в одной проге МНК2 и МНК4.
Только функцию я взял для апроксимации прямой, но без её смещения, т.е. высчитывается только один коэффициент: тангенс угла наклона прямой, проходящей через т. (0, 0). С коэффициентом смещения сделать так вот быстренько нереально, т.к. при возведении в куб после дифференцирования получается очень большая и некрасивая формула. Да, и что ещё нужно отметить! При МНК-4 при апроксимации самой элементарной прямой y = kx уже возможно несколько решений, 3, если не ошибаюсь, т.к. там необходимо в конце вывода коэффициента режить кубическое уравнение. Я не стал загоняться его решением, а вычислил самый первый корень дихотомией. Точнее ли стала апроксимация? На мой взгляд ХЗ, оба оболденно ищут, но МНК-4 похоже что поправдоподобнее малость. Выкладываю получившуюся прогу... Рассудите сами. p.s. Исходники выкладывать не буду, т.к. нужно вместе с ними выкладывать компонент и математические библиотеки, некогда написанные. p.p.s. ПОГОДИТЕ КА! А как тут вложить файл, можно ведь? В упор не вижу!!!:) Добавлено Хе-хе:) Держите так:) http://slil.ru/24164551 |
|
Сообщ.
#33
,
|
|
|
|
Поясню свою мысль на простом примере. Пусть f - константа.
Делаем несколько измерений и получаем в n случаях значение а ( правильно ) и в одном случае значение b ( неправильно ). Теперь будем получать оценку f при помощи минимизации ∑|Yi - f|^k. Для k = 1 получим f = a ( медиана ) Для k = 2 получим f = (n*a+b)/(n+1) ( среднее арифметическое ) Для k = бесконечность получим f = (a+b)/2 Отсюда видно, что чем больше k, тем больше влияние помех. |