Линейные наименьшие квадраты могут быть решены с помощью
0) Использование высококачественного решателя линейных наименьших квадратов на основе SVD или QR, как описано ниже, для неограниченных линейных наименьших квадратов или на основе версии Квадратичного программирования или Конической оптимизации для связанных или линейно ограниченных наименьших квадратов, как описано ниже. Такой решатель предварительно консервирован, тщательно протестирован и готов к работе - используйте его.
1) SVD, который является наиболее надежным и численно точным методом, но также требует больше вычислений, чем альтернативы. В MATLAB SVD-решение неограниченной линейной задачи наименьших квадратов A * X = b имеет тип pinv (A) * b, что очень точно и надежно.
2) QR, который достаточно надежен и численно точен, но не так сильно, как SVD, и быстрее, чем SVD. В MATLAB QR-решение неограниченной линейной задачи наименьших квадратов A * X = b - это A \ b, что довольно точно и надежно, за исключением случаев, когда A плохо обусловлен, т. Е. Имеет большое число условий. A \ b быстрее вычисляется, чем pinv (A) * b, но не так надежно или точно.
3) Формирование нормальных уравнений (УЖАСНЫЕ с точки зрения надежности и числовой точности, потому что они возводят в квадрат число условий, что очень плохо делать) и
3a) решение по факторизации Холецкого (не хорошо)
3б) явно инвертирующая матрица (УЖАСНАЯ)
4) Решение задачи квадратичного программирования или конуса второго порядка
4a) Решить с помощью высококачественного программного обеспечения для квадратичного программирования. Это надежно и численно точно, но занимает больше времени, чем SVD или QR. Однако легко добавить связанные или общие линейные ограничения, или линейные или квадратичные (две нормы) штрафные или регуляризованные члены к целевой функции, и все же решить проблему, используя программное обеспечение для квадратичного программирования.
4b) Решить проблему конуса второго порядка с помощью высококачественного программного обеспечения Conic Optimization. Замечания те же, что и для программного обеспечения Quadratic Programming, но вы также можете добавить связанные или общие линейные ограничения и другие конические ограничения или термины целевой функции, такие как штрафные или регуляризованные условия в различных нормах.
5) Решить, используя высококачественное программное обеспечение нелинейной оптимизации общего назначения. Это все еще может работать хорошо, но в целом будет медленнее, чем программное обеспечение Quadratic Programming или Conic Optimization, и, возможно, не столь надежно. Однако может быть возможно включить не только ограниченные и общие линейные ограничения, но также и нелинейные ограничения в оптимизацию наименьших квадратов. Также может использоваться для нелинейных наименьших квадратов, и если к целевой функции добавляются другие нелинейные члены.
6) Решите, используя паршивые алгоритмы нелинейной оптимизации общего назначения -> НИКОГДА НЕ ДЕЛАЙТЕ ЭТОГО.
7) Решить, используя НАИБОЛЕЕ ВОЗМОЖНЫЙ алгоритм нелинейной оптимизации общего назначения, то есть градиентный спуск. Используйте это, только если вы хотите увидеть, насколько плох и ненадежен метод решения. Если кто-то скажет вам использовать градиентный спуск для решения линейных наименьших квадратов
7 i) Узнайте о статистических вычислениях от того, кто что-то знает об этом
7 ii) Изучите оптимизацию у того, кто что-то знает об этом