![]() |
Линейная регрессия является одним из известнейших методов регрессии, достаточно хорошо работающим в ряде простых задач. И, несмотря на наличие более совершенных методов, линейная регрессия нашла свою нишу. К достоинствам линейной регрессии можно отнести простоту алгоритма и высокое быстродействие. Недостаток только один, и он очевиден - неприспособленность к решению существенно нелинейных задач.
Содержание
Линейная регрессия в ALGLIB |
Работа с линейными моделями в ALGLIB осуществляется в два этапа:
Алгоритм линейной регрессии, входящий в пакет ALGLIB, основан на использовании сингулярного разложения. Однако в алгоритме есть несколько улучшений по сравнению с классическим способом решения данной задачи:
Следует отметить две особенности быстрого вычисления кросс-валидационной оценки. Во-первых, "быстрая" формула применима только к невырожденным задачам – если задача вырождена, её размерность должна быть понижена при помощи метода главных компонент. При необходимости это делается автоматически, но примерно вдвое замедляет алгоритм. Во-вторых, существуют более утонченные типы вырожденности – с точки зрения решения системы линейных уравнений задача невырождена, но формула Шермана-Моррисона оказывается неприменима к части векторов обучающего множества (для некоторых с виду обычных векторов она приводит к делению на ноль). Теоретически в обучающем множестве может быть до M+1 таких "дефектных" элементов (из N имеющихся), хотя чаще всего нет ни одного. Эти «дефектные» векторы не учитываются при расчете кросс-валидационной оценки ошибки, что несколько искажает результат алгоритма, но не является багом (на случай, если кто-то решит проверить правильность работы быстрой кросс-валидации и случайно наткнется на один из таких векторов).
| C++ | linreg.h | |
| C# | linreg.cs | |
| Delphi | linreg.pas | |
| FreePascal | linreg.pas | |
| VBA | linreg.bas |
This article is intended for personal use only.
Исходный код на C#
Исходный код на C++
Исходный код на C++, использующий библиотеки MPFR/GMP.
Исходный код GMP доступен на сайте gmplib.org. Исходный код MPFR доступен на сайте www.mpfr.org.
Исходный код на Free Pascal.
Исходный код на Delphi.
Исходный код на VBA.
|
ALGLIB project, 1999-2010 |