![]() |
Логит-регрессия - это обобщение линейной регрессии для случая, когда зависимая переменная является номинальной. В зависимости от того, сколько значений принимает зависимая переменная, выделяют "просто" логит-регрессию (два значения) или множественную логит-регрессию (произвольное число значений). В рамках данной статьи эти два типа моделей объединены под общим названием: логит-регрессия.
Логит-модель отображает вектор независимых переменных x в вектор вероятностей отнесения зависимой переменной к одному из классов y. Модель задается при помощи матрицы коэффициентов A и имеет вид:

Замечание #1
Можно отметить, что логит-модель является частным случаем обобщенных линейных моделей. С другой стороны, она является частным случаем нейронной сети - сетью с одним линейным слоем и SOFTMAX-нормализацией выходов.
Как и линейная регрессия, логит-регрессия характеризуется теми же достоинствами и недостатками: с одной стороны, простотой и сравнительно высокой скоростью генерирования моделей, с другой – неприспособленностью для решения существенно нелинейных задач. В случае, если ваша задача недостаточно хорошо решается с использованием логит-регрессии, рекомендуется попробовать использовать один из других алгоритмов раздела.
Содержание |
Работа с логит-моделями в ALGLIB осуществляется в два этапа:
Коэффициенты логит-модели получаются путем минимизации функции ошибки на обучающем множестве. В качестве функции ошибки используется кросс-энтропия (плюс небольшая регуляризирующая добавка, улучшающая сходимость). Для минимизации использован следующий алгоритм: вдали от минимума совершается шаг в направлении антиградиента, вблизи к минимуму - шаг по методу Ньютона (с использованием гессиана функции ошибки). Перед началом работы алгоритма совершается некоторое количество шагов в направлении антиградиента, чтобы привести нас в окрестность, в которой функция имеет положительную кривизну.
Изложенный выше алгоритм оптимизации обладает как достоинствами, так и недостатками. Главным недостатком является время работы, составляющее O(N·M 2·(c-1)^2) на одну итерацию с использованием гессиана, где N обозначает число точек в обучающем множестве, M - число независимых переменных, c - число классов (значений зависимой переменной). При этом достоинства алгоритма неоспоримы: небольшое число итераций (оказавшись в окрестностях минимума, алгоритм быстро сходится), отсутствие необходимости подбирать критерии останова, обеспечивающие компромисс между временем работы и точностью решения задачи (алгоритм всегда сходится к точному минимуму).
| C++ | logit.h | |
| C# | logit.cs | |
| Delphi | logit.pas | |
| FreePascal | logit.pas | |
| VBA | logit.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 |