Hồi quy logistic đang dự đoán tất cả 1 và không 0


10

Tôi đang chạy một phân tích về xác suất vỡ nợ cho vay bằng cách sử dụng hồi quy logistic và rừng ngẫu nhiên.

Khi tôi sử dụng hồi quy logistic, dự đoán luôn luôn là '1' (có nghĩa là khoản vay tốt). Tôi chưa bao giờ thấy điều này trước đây và không biết bắt đầu từ đâu khi cố gắng giải quyết vấn đề. Có 22 cột với 600K hàng. Khi tôi giảm # cột, tôi nhận được kết quả tương tự với hồi quy logistic.

Tại sao hồi quy logistic có thể sai như vậy?

**Actual from the data**

0 :   41932

1 :   573426

**Logistic regression output** 

prediction for 1 when actually 0: 41932
prediction for 1 when actually 1:573426

A**s you can see, it always predicts a 1**


**Random forests does better:**

actual 0, pred 0 : 38800 
actual 1, pred 0 : 27 
actual 0, pred 1 : 3132
actual 1, pred 1 : 573399

4
Điều này không có ý nghĩa. Logit sẽ không dự đoán chính xác 0. Nó có thể dự đoán giá trị thấp mà bạn hiểu là 0. Vì vậy, vấn đề có thể là do ngưỡng, không chỉ do chính mô hình
Aksakal

@Aksakal, tôi đang sử dụng phương pháp scikit learn .predict. dự đoán nhãn lớp cho các mẫu trong X
ivan7707

Bạn có quen thuộc với các đường cong ROC? Bạn có thể trích xuất các xác suất dự đoán, sau đó chơi với ngưỡng để tự phân loại dữ liệu. Ngưỡng là đòn bẩy đánh đổi của bạn giữa việc xác định mặc định hoặc không mặc định.
Aksakal

1
Xem câu trả lời của tôi dưới đây, nhưng bạn cũng có thể sử dụng ROC để tìm điểm ngọt trong cài đặt phân loại của mình cho logit giữa độ nhạy và độ đặc hiệu
Aksakal

4
Không sử dụng predicttrong sklearn trên mô hình xác suất, nó vô dụng. LUÔN LUÔN sử dụng predict_proba.
Matthew Drury

Câu trả lời:


5

Chà, điều đó có nghĩa là mô hình của bạn luôn tiên đoán 1. Hãy xem tập dữ liệu của bạn: nó bị mất cân bằng nghiêm trọng theo hướng có lợi cho lớp tích cực của bạn. Lớp phủ định chỉ chiếm ~ 7% dữ liệu của bạn. Hãy thử cân bằng lại tập huấn luyện của bạn hoặc sử dụng thuật toán nhạy cảm với chi phí.


Cảm ơn các đầu vào. Có một quy tắc nào cho những gì được chấp nhận đối với dữ liệu không cân bằng hoặc các nguồn tốt cho cách cân bằng lại mà bạn có thể đề xuất không?
ivan7707

Thật không may, không có quy tắc nào về cách chọn thuật toán mà là "định lý bữa trưa miễn phí". Trong trường hợp cụ thể của bạn, trước tiên tôi sẽ sử dụng gói C5.0 của Ross Quinlan. Sau đó, bạn có thể thử nghiệm các chi phí và kỹ thuật lấy mẫu khác nhau như lên xuống và lấy mẫu, SMote, v.v. Ngoài ra, trang web của Max Kuhn cung cấp một bản tóm tắt tốt đẹp về các thuật toán đã thiết lập.
JimBoy

7
(+1) Trong trường hợp không có hàm chi phí, dường như không có lý do gì để sử dụng hồi quy logistic làm phân loại : bạn có xác suất dự đoán & có thể sử dụng quy tắc chấm điểm thích hợp để đánh giá hiệu suất mô hình của bạn. Xem ví dụ: Biện pháp nào để đánh giá độ chính xác phân loại nhị phân cho dữ liệu mất cân bằng? . Mất cân bằng không phải là vấn đề mỗi se: xem Lấy mẫu xuống có thay đổi hệ số hồi quy logistic không? .
Scortchi - Phục hồi Monica

@Scortchi, cảm ơn các liên kết và ý tưởng sử dụng các mô hình với chi phí. Tôi đã có thể tìm thấy liên kết giấy này giúp tôi đi đúng hướng.
ivan7707

1
Không, điều đó không có nghĩa là mô hình của anh ta dự đoán luôn là 1 giây, bởi vì 7% là tỷ lệ mặc định khá cao và logit được sử dụng rộng rãi trong các mặc định cho vay. Xem xét các khoản vay được xếp hạng AAA mặc định ở mức 0,1% hàng năm. Về cơ bản là cho vay rác.
Aksakal

13

Câu trả lời ngắn gọn là hồi quy logistic là để ước tính xác suất , không có gì nhiều hay ít. Bạn có thể ước tính xác suất cho dù mất cân bằng như thế nào . Các đường cong ROC và một số biện pháp khác được đưa ra trong cuộc thảo luận không giúp ích gì. Nếu bạn cần đưa ra quyết định hoặc thực hiện một hành động, bạn áp dụng hàm mất / tiện ích / chi phí cho rủi ro dự đoán và chọn hành động tối ưu hóa tiện ích dự kiến. Có vẻ như rất nhiều người dùng máy học không thực sự hiểu rủi ro và quyết định tối ưu.Y


2
(+1) Có, câu hỏi là "bạn đang giải quyết vấn đề phân loại hay bạn đang giải quyết vấn đề hỗ trợ quyết định?".
GeoMatt22

1
Tôi không chắc về điều đó. Ước tính xác suất là một kết quả cuối cùng tuyệt vời. Và lưu ý rằng phần lớn các vấn đề "phân loại" được giải quyết tốt hơn bằng cách sử dụng các quyết định Bayes tối ưu. Khác với nhận dạng mẫu hình ảnh và âm thanh, hầu hết các vấn đề trong đó phương pháp phân loại được áp dụng sẽ được giải quyết tốt hơn với ước tính xác suất trực tiếp.
Frank Harrell

@FrankHarrell Có đúng không khi diễn giải đầu ra là xác suất đòi hỏi một thiết kế cho phép giải thích như vậy (đoàn hệ). Và nếu chúng ta không có một thiết kế như vậy thì chúng ta phải đưa ra quyết định dựa trên "điểm số rủi ro". Hơn nữa, mặc dù có tài liệu thảo luận về điều này trong bối cảnh không được hiệu chỉnh, nhưng điều này không phổ biến trong thực tế. Điều này có đúng không?
julieth

1
Vui lòng mô tả cách lấy mẫu được sử dụng để lắp ráp tập dữ liệu được sử dụng để phát triển mô hình khác với khách hàng mà bạn sẽ áp dụng dự đoán.
Frank Harrell

Ví dụ, lấy mẫu kiểm soát trường hợp mà tỷ lệ mục tiêu không xác định. Hoặc các mẫu thuận tiện có kích thước vừa phải.
julieth

1

Khi bạn phân loại bằng cách sử dụng logit, đây là những gì xảy ra.

Logit dự đoán xác suất mặc định (PD) của khoản vay, là một số trong khoảng từ 0 đến 1. Tiếp theo, bạn đặt ngưỡng D, sao cho bạn đánh dấu khoản vay thành mặc định nếu PD> D và đánh dấu nó là không mặc định nếu PD

Đương nhiên, trong một quần thể cho vay điển hình PD << 1. Vì vậy, trong trường hợp của bạn, 7% là xác suất khá cao của dữ liệu một năm (PD thường được báo cáo hàng năm). Nếu đây là dữ liệu nhiều năm, thì chúng ta đang nói về cái gọi là PD tích lũy, ví dụ trong trường hợp này cumPD = 7% không phải là con số cao trong 10 năm dữ liệu. Do đó, theo bất kỳ tiêu chuẩn nào, tôi sẽ không nói rằng tập dữ liệu của bạn có vấn đề. Tôi sẽ mô tả nó ít nhất là điển hình cho dữ liệu mặc định cho vay, nếu không phải là tuyệt vời (theo nghĩa là bạn có số lượng mặc định tương đối lớn).

Bây giờ, giả sử rằng mô hình của bạn dự đoán ba cấp độ PD sau:

  • 0,1 (563.426)
  • 0,5 (20.000)
  • 0,9 (31.932)

Giả sử cũng có mặc định thực tế cho các nhóm này là:

  • 0
  • 10.000
  • 31.932

Bây giờ bạn có thể đặt D thành các giá trị khác nhau và xem ma trận thay đổi như thế nào. Trước tiên hãy sử dụng D = 0,4:

  • Mặc định thực tế, dự đoán không mặc định: 0
  • Mặc định thực tế, dự đoán mặc định: 41.932
  • Thực tế không mặc định, dự đoán không mặc định: 563.426
  • Thực tế không mặc định, dự đoán mặc định: 10.000

Nếu bạn đặt D = 0,6:

  • Mặc định thực tế, dự đoán không mặc định: 31.932
  • Mặc định thực tế, dự đoán mặc định: 10.000
  • Thực tế không mặc định, dự đoán không mặc định: 573.426
  • Thực tế không mặc định, dự đoán mặc định: 0

Nếu bạn đặt D = 0,99:

  • Mặc định thực tế, dự đoán không mặc định: 41.932
  • Mặc định thực tế, dự đoán mặc định: 0
  • Thực tế không mặc định, dự đoán không mặc định: 573.426
  • Thực tế không mặc định, dự đoán mặc định: 0

Trường hợp cuối cùng là những gì bạn thấy trong kết quả mô hình của bạn. Trong trường hợp này, tôi nhấn mạnh ngưỡng D cho trình phân loại. Một thay đổi đơn giản trong D có thể cải thiện các đặc điểm nhất định của dự báo của bạn. Lưu ý rằng trong cả ba trường hợp, PD được dự đoán vẫn giữ nguyên, chỉ có ngưỡng D đã thay đổi.

Tất nhiên, nó cũng có thể là hồi quy logit của bạn là crappy, tất nhiên. Vì vậy, trong trường hợp này bạn có ít nhất hai biến: thông số logit và ngưỡng. Cả hai đều tác động đến sức mạnh dự báo của bạn.


Bạn có nhận ra rằng bạn đang đề xuất một kỹ thuật để đối phó với dữ liệu mất cân bằng, phải không? Do đó, bạn đang thừa nhận ảnh hưởng của lớp nhỏ hơn đến độ chính xác dự đoán. Ngoài ra, bạn đang đề xuất một kỹ thuật mà mô hình ban đầu hoàn toàn không sử dụng. Bạn không thể thay đổi hoàn cảnh theo ý thích của mình và sau đó tạo ra một số tuyên bố khi bạn đi cùng.
JimBoy

Trong phân tích / dự báo mặc định cho vay, dữ liệu luôn bị "mất cân bằng" theo nghĩa này. Đó là tình trạng bình thường.
Aksakal

Điều này có thể là như nó là. Tuy nhiên, bạn nên xem Max Kuhn mô tả là "tốc độ không có thông tin", không gì khác hơn là lớp lớn nhất trong tập dữ liệu. Vì vậy, có một cái nhìn vào bảng Ivan cung cấp một lần nữa. Các kết quả có ý nghĩa hoàn hảo cho mô hình ông sử dụng. Rằng bạn thực sự có thể tối ưu hóa những kết quả đó bằng các kỹ thuật khác nhau là một câu hỏi khác và hoàn toàn có thể.
JimBoy

@JimBoy, tôi thấy cái bàn của anh ấy, và thấy nhiều thứ như thế nữa. Việc này khá đơn giản, chúng tôi thường xử lý dữ liệu nợ quá hạn cho vay, trong đó các tiểu bang đều đi từ Hiện tại đến 30 ngày quá hạn, 60, 90 .... thông qua Mặc định và Đóng. Trong một danh mục đầu tư tốt, bạn có thể có 95% khoản vay ở trạng thái Hiện tại (sạch) và chỉ có 1% trong Mặc định. Mọi người sử dụng logit mulltinomial cho loại công cụ này mọi lúc trong ngành.
Aksakal

@Aksakal, tôi sẽ phải đọc nhiều hơn về việc thay đổi ngưỡng, vì tôi đã đọc rất nhiều về cách toán học không chính xác để thay đổi nó cho hồi quy logistic. Một lưu ý khác, ý của bạn là 'có thể bản thân hồi quy logit của bạn là tào lao'?
ivan7707

1

Nếu vấn đề thực sự là sự mất cân bằng giữa các lớp, tôi chỉ đơn giản là bắt đầu bằng cách cân bằng các trọng số của lớp:

log_reg = LogisticRegression(class_weight = 'balanced')

Cài đặt tham số này có nghĩa là các hình phạt cho dự đoán sai trong hàm mất sẽ được tính trọng số với tỷ lệ nghịch với tần số của các lớp. Điều này có thể giải quyết vấn đề bạn mô tả.


Tôi không rõ là bạn đã xác định được vấn đề. Tôi nghĩ Matthew Drury đánh vào vấn đề liên quan đến việc sử dụng sklearn.
Michael R. Chernick

0

Vâng, không có nhiều thông tin khó nói, nhưng theo định nghĩa của hồi quy logistic, bạn đang bão hòa dựa trên dữ liệu được trang bị. Vì vậy, trong phương trình, thuật ngữ e ^ -t sẽ là 0. Vì vậy, nơi đầu tiên để tìm sẽ là xem các hệ số thực tế là gì.

Điều này cũng có thể là do các biến có tỷ lệ thấp. Có thể có một vấn đề trong đó một trong những cột có giá trị bằng số rất lớn so với các cột khác khiến nó bị rối.


@ Tim F ERIC, Cảm ơn bạn đã phản hồi. Bạn có thể vui lòng mở rộng về những gì tôi sẽ tìm kiếm về các hệ số và làm thế nào điều này liên quan đến bão hòa (hoặc chỉ cho tôi một tài nguyên để đọc)? Ngoài ra, tôi có ấn tượng rằng các biến có tỷ lệ kém sẽ không có tác động tiêu cực đến hồi quy logistic. [link (] stats.stackexchange.com/questions/18916/iêu )
ivan7707

0

Bạn có thể sử dụng SMOTE để cân bằng tập dữ liệu không cân bằng. Một bài báo tốt để tham khảo là:

Lifeng Zhou, Hong Wang, Dự đoán mặc định cho vay về dữ liệu mất cân bằng lớn sử dụng rừng ngẫu nhiên, Tạp chí Kỹ thuật điện của TELKOMNIKA, Vol.10, số 6, tháng 10 năm 2012, trang 1519 ~ 1525, liên kết .


Bạn có thể thêm một trích dẫn / tài liệu tham khảo đầy đủ (bao gồm cả tác giả, ngày tháng, nhà xuất bản, v.v.) như bạn sẽ làm trong một bài báo học thuật không? Điều này sẽ giúp người đọc tương lai dễ dàng theo dõi nó hơn nếu liên kết ngừng hoạt động
Silverfish
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.