Главная       Коммерческая поддержка       FAQ       Forum       Контакты       Английская версия

Линейная регрессия

Линейная регрессия является одним из известнейших методов регрессии, достаточно хорошо работающим в ряде простых задач. И, несмотря на наличие более совершенных методов, линейная регрессия нашла свою нишу. К достоинствам линейной регрессии можно отнести простоту алгоритма и высокое быстродействие. Недостаток только один, и он очевиден - неприспособленность к решению существенно нелинейных задач.

Содержание

    Линейная регрессия в ALGLIB
    Особенности и улучшения алгоритма
    Manual entries

Линейная регрессия в ALGLIB

Работа с линейными моделями в ALGLIB осуществляется в два этапа:

Особенности и улучшения алгоритма

Алгоритм линейной регрессии, входящий в пакет ALGLIB, основан на использовании сингулярного разложения. Однако в алгоритме есть несколько улучшений по сравнению с классическим способом решения данной задачи:

Следует отметить две особенности быстрого вычисления кросс-валидационной оценки. Во-первых, "быстрая" формула применима только к невырожденным задачам – если задача вырождена, её размерность должна быть понижена при помощи метода главных компонент. При необходимости это делается автоматически, но примерно вдвое замедляет алгоритм. Во-вторых, существуют более утонченные типы вырожденности – с точки зрения решения системы линейных уравнений задача невырождена, но формула Шермана-Моррисона оказывается неприменима к части векторов обучающего множества (для некоторых с виду обычных векторов она приводит к делению на ноль). Теоретически в обучающем множестве может быть до M+1 таких "дефектных" элементов (из N имеющихся), хотя чаще всего нет ни одного. Эти «дефектные» векторы не учитываются при расчете кросс-валидационной оценки ошибки, что несколько искажает результат алгоритма, но не является багом (на случай, если кто-то решит проверить правильность работы быстрой кросс-валидации и случайно наткнется на один из таких векторов).

Manual entries

C++ linreg.h   
C# linreg.cs   
Delphi linreg.pas   
FreePascal linreg.pas   
VBA linreg.bas   

This article is intended for personal use only.

Скачать ALGLIB

C#

Исходный код на C#

Downloads page

 

C++

Исходный код на C++

Downloads page

 

C++, арифметика высокой точности

Исходный код на C++, использующий библиотеки MPFR/GMP.

Исходный код GMP доступен на сайте gmplib.org. Исходный код MPFR доступен на сайте www.mpfr.org.

Downloads page

 

FreePascal

Исходный код на Free Pascal.

Downloads page

 

Delphi

Исходный код на Delphi.

Downloads page

 

Visual Basic

Исходный код на VBA.

Downloads page

 

 

ALGLIB project, 1999-2010