2015-10-03 2 views
4

Я использую Anaconda, и я пытаюсь выполнить логистическую регрессию. После загрузки набора учебных данных и выполнения регрессии. Затем я получил следующее предупреждающее сообщение.Как исправить предупреждение Statsmodel: «Максимальное количество итераций превысило»

train_cols = data.columns[1:] 
logit = sm.Logit(data['harmful'], data[train_cols]) 
result = logit.fit() 
Warning: Maximum number of iterations has been exceeded. 
    Current function value: 0.000004 
    Iterations: 35 
C:\Users\dell\Anaconda\lib\site-packages\statsmodels\base\model.py:466: ConvergenceWarning: Maximum Likelihood optimization failed to converge. Check mle_retvals"Check mle_retvals", ConvergenceWarning) 

Зачем мне это предупреждение и как я могу это исправить? Спасибо!

ответ

4

Есть две возможности

1) трудная задача оптимизации: Обычно логит сходится очень быстро и по умолчанию номер итерации установлен очень низкий. Добавление большего maxiter ключевого слова в вызове fit или установка с предыдущим результатом, поскольку start_params помогает в большинстве случаев.

2) Поскольку это Logit, возможно, что существует полное разделение или квазиполное разделение. В этом случае некоторые параметры могут уходить в бесконечность, и оптимизация останавливается при некотором сходимости или прекращении критерия. Logit обнаруживает простой случай полного разделения и вызывает исключение, но может быть частичное разделение, которое не обнаружено. При идеальном разделении вы получаете отличную предсказуемость для некоторых или всех случаев, что полезно для прогнозирования, но вызывает проблемы при оценке и идентификации параметров. Дополнительная информация приведена здесь https://stats.stackexchange.com/questions/11109/how-to-deal-with-perfect-separation-in-logistic-regression Также есть вопросы по часто задаваемым вопросам о проблемах github statsmodels для угловых случаев и подобных проблемах.

Смежные вопросы