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

Замечание #1
Можно отметить, что логит-модель является частным случаем обобщенных линейных моделей. С другой стороны, она является частным случаем нейронной сети - сетью с одним линейным слоем и SOFTMAX-нормализацией выходов.
Как и линейная регрессия, логит-регрессия характеризуется теми же достоинствами и недостатками: с одной стороны, простотой и сравнительно высокой скоростью генерирования моделей, с другой – неприспособленностью для решения существенно нелинейных задач. В случае, если ваша задача недостаточно хорошо решается с использованием логит-регрессии, рекомендуется попробовать использовать один из других алгоритмов раздела.
Содержание
1 Логит-регрессия в ALGLIB |
Работа с логит-моделями в ALGLIB осуществляется в два этапа:
Коэффициенты логит-модели получаются путем минимизации функции ошибки на обучающем множестве. В качестве функции ошибки используется кросс-энтропия (плюс небольшая регуляризирующая добавка, улучшающая сходимость). Для минимизации использован следующий алгоритм: вдали от минимума совершается шаг в направлении антиградиента, вблизи к минимуму - шаг по методу Ньютона (с использованием гессиана функции ошибки). Перед началом работы алгоритма совершается некоторое количество шагов в направлении антиградиента, чтобы привести нас в окрестность, в которой функция имеет положительную кривизну.
Изложенный выше алгоритм оптимизации обладает как достоинствами, так и недостатками. Главным недостатком является время работы, составляющее O(N·M 2·(c-1)^2) на одну итерацию с использованием гессиана, где N обозначает число точек в обучающем множестве, M - число независимых переменных, c - число классов (значений зависимой переменной). При этом достоинства алгоритма неоспоримы: небольшое число итераций (оказавшись в окрестностях минимума, алгоритм быстро сходится), отсутствие необходимости подбирать критерии останова, обеспечивающие компромисс между временем работы и точностью решения задачи (алгоритм всегда сходится к точному минимуму).
| C++ | logit subpackage | |
| C# | logit subpackage |
This article is intended for personal use only.
Исходный код на C#
Исходный код на C++
Исходный код на C++, использующий библиотеки MPFR/GMP.
Исходный код GMP доступен на сайте gmplib.org. Исходный код MPFR доступен на сайте www.mpfr.org.
Исходный код на Free Pascal.
Исходный код на Delphi.
Исходный код на VB.NET.
Исходный код на VBA.
Исходный код на Python (CPython и IronPython).
|
ALGLIB® - numerical analysis library, 1999-2012. |