Можно выполнить логит-регрессию в R, используя такой код:
> library(MASS)
> data(menarche)
> glm.out = glm(cbind(Menarche, Total-Menarche) ~ Age,
+ family=binomial(logit), data=menarche)
> coefficients(glm.out)
(Intercept) Age
-21.226395 1.631968
Похоже, что алгоритм оптимизации сходится - есть информация о количестве шагов алгоритма Фишера:
Call:
glm(formula = cbind(Menarche, Total - Menarche) ~ Age, family = binomial(logit),
data = menarche)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.0363 -0.9953 -0.4900 0.7780 1.3675
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -21.22639 0.77068 -27.54 <2e-16 ***
Age 1.63197 0.05895 27.68 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 3693.884 on 24 degrees of freedom
Residual deviance: 26.703 on 23 degrees of freedom
AIC: 114.76
Number of Fisher Scoring iterations: 4
Мне интересно, что это за алгоритм оптимизации? Это алгоритм Ньютона-Рафсона (градиентный спуск второго порядка)? Могу ли я установить некоторые параметры для использования алгоритма Коши (градиентный спуск первого порядка)?
r
generalized-linear-model
optimization
algorithms
logit
Марчин Косински
источник
источник
Newton's method
это метод градиентного спуска второго порядка.Ответы:
Вам будет интересно узнать, что документация для
glm
, доступ к которой осуществляется через,?glm
предоставляет много полезных идей: нижеmethod
мы находим, что метод наименьших квадратов с итеративным взвешиванием является методом по умолчанию дляglm.fit
которого является функцией рабочей лошадкиglm
. Кроме того, в документации упоминается, что пользовательские функции могут быть предоставлены здесь вместо значений по умолчанию.источник
glm
илиfit.glm
вR
командной строке, чтобы изучить исходный код.glm.fit
которая не будет полностью воспроизводимой, поскольку она опирается на C-кодC_Cdqrls
.Используемый метод упоминается в самом выводе: это Fisher Scoring. Это эквивалентно Ньютон-Рафсону в большинстве случаев. Исключение составляют ситуации, когда вы используете ненатуральную параметризацию. Относительная регрессия риска является примером такого сценария. Там ожидаемая и наблюдаемая информация различны. В целом, Ньютон Рафсон и Фишер Скоринг дают практически одинаковые результаты.
Общий оптимизатор по умолчанию в R использует численные методы для оценки второго момента, в основном на основе линеаризации (опасайтесь проклятия размерности). Так что, если бы вы были заинтересованы в сравнении эффективности и предвзятости, вы могли бы реализовать наивную рутинную процедуру максимального правдоподобия с чем-то вроде
дает мне
источник
nlm
числовых оценках градиента затем применяет Ньютона Рафсона. В BFGS я думаю, что градиент необходим, как с Ньютоном Рафсоном, но последовательные шаги оцениваются с использованием приближения второго порядка, которое требует оценки гессиана. BFGS хорош для высоко нелинейных оптимизаций. Но для GLM они обычно очень хорошо себя ведут.Для записи, простая чистая R-реализация алгоритма glm R, основанная на оценке Фишера (итеративно переоцененные наименьшие квадраты), как объяснено в другом ответе, дается:
Пример:
Хорошее обсуждение алгоритмов подбора GLM, включая сравнение с Ньютоном-Рафсоном (который использует наблюдаемый гессиан в отличие от ожидаемого гессиана в алгоритме IRLS) и гибридные алгоритмы (которые начинаются с IRLS, поскольку их легче инициализировать, но затем Окончание с дальнейшей оптимизацией с использованием Ньютона-Рафсона) можно найти в книге «Обобщенные линейные модели и расширения» Джеймса У. Хардина и Джозефа М. Хильбе .
источник