Cách sửa lỗi không hội tụ trong LogisticRegressionCV


13

Tôi đang sử dụng scikit-learn để thực hiện hồi quy logistic với xác định giá trị chéo trên một tập hợp dữ liệu (khoảng 14 tham số với> 7000 quan sát chuẩn hóa). Tôi cũng có một bộ phân loại mục tiêu có giá trị là 1 hoặc 0.

Vấn đề tôi gặp phải là bất kể người giải được sử dụng, tôi vẫn nhận được cảnh báo hội tụ ...

model1 = linear_model.LogisticRegressionCV(cv=10,verbose=1,n_jobs=-1,scoring='roc_auc',solver='newton-cg',penalty='l2')

/home/b/anaconda/lib/python2.7/site-packages/scipy/optimize/linesearch.py:285: LineSearchWarning: The line search algorithm did not converge
  warn('The line search algorithm did not converge', LineSearchWarning)
/home/b/anaconda/lib/python2.7/site-packages/sklearn/utils/optimize.py:193: UserWarning: Line Search failed


model2 = linear_model.LogisticRegressionCV(cv=10,verbose=1,n_jobs=-1,scoring='roc_auc',solver='sag',penalty='l2')

max_iter reached after 2 seconds
max_iter reached after 2 seconds
max_iter reached after 2 seconds
max_iter reached after 2 seconds
max_iter reached after 2 seconds
max_iter reached after 2 seconds
max_iter reached after 2 second

model3 = linear_model.LogisticRegressionCV(cv=10,verbose=1,n_jobs=-1,scoring='roc_auc',solver='lbfgs',penalty='l2')

/home/b/anaconda/lib/python2.7/site-packages/sklearn/linear_model/logistic.py:701: UserWarning: lbfgs failed to converge. Increase the number of iterations.
  warnings.warn("lbfgs failed to converge. Increase the number "

model4 = linear_model.LogisticRegressionCV(cv=10,verbose=1,n_jobs=-1,scoring='roc_auc',solver='liblinear',penalty='l2')

    cg reaches trust region boundary
iter 18 act 1.382e+06 pre 1.213e+06 delta 1.860e+01 f 7.500e+06 |g| 1.696e+06 CG   8
iter  2 act 1.891e+06 pre 1.553e+06 delta 1.060e-01 f 1.397e+07 |g| 1.208e+08 CG   4
iter  4 act 2.757e+04 pre 2.618e+04 delta 1.063e-01 f 1.177e+07 |g| 2.354e+07 CG   4
iter 18 act 1.659e+04 pre 1.597e+04 delta 1.506e+01 f 7.205e+06 |g| 4.078e+06 CG   4
cg reaches trust region boundary
iter  7 act 1.117e+05 pre 1.090e+05 delta 4.146e-01 f 1.161e+07 |g| 9.522e+05 CG   4
iter 31 act 1.748e+03 pre 1.813e+03 delta 2.423e+01 f 6.228e+05 |g| 5.657e+03 CG  14

Tôi cần làm gì để ngừng nhận được các cảnh báo?


Tôi tự hỏi nếu đây là một trường hợp tách biệt hoàn hảo hoặc gần .
Sycorax nói Phục hồi Monica

Câu trả lời:


13

Bạn có thể bắt đầu bằng cách áp dụng đề xuất của chương trình để tăng max_itertham số; nhưng hãy nhớ rằng cũng có thể dữ liệu của bạn không thể phù hợp với mô hình logistic.


2
Tôi đã phải tăng max_tr lên tới 4000, nhưng nó đã làm được điều đó. Cảm ơn!
user3188040

@ user3188040 Bạn mất bao lâu để chạy?
Dave Liu

Tôi là một người hoàn toàn mới ở scikit. Làm cách nào để tôi "tăng" max_tr (max_iter?) Đến 4000?
Ron Jensen - Tất cả chúng ta đều là Monica

Bạn có thể thay đổi giá trị max_iter khi tạo đối tượng LogisticRegression. model1 = linear_model.LogisticRegressionCV (max_iter = 4000)
tâm lý học
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.