Đầu ra XGBoost có xu hướng cực đoan


15

Tôi hiện đang sử dụng XGBoost để dự đoán rủi ro, có vẻ như nó đang làm rất tốt trong bộ phận phân loại nhị phân nhưng đầu ra xác suất bị tắt, tức là thay đổi giá trị của một tính năng trong một quan sát bằng một lượng rất nhỏ có thể tạo ra xác suất đầu ra nhảy từ 0,5 đến 0,99.

Tôi hầu như không thấy đầu ra trong phạm vi 0,6-0,8. Trong mọi trường hợp, xác suất nhỏ hơn 0,99 hoặc 1.

Tôi nhận thức được các phương pháp hiệu chỉnh bài đào tạo như Platt Scale và Logistic Correction, nhưng tôi đã tự hỏi liệu có bất cứ điều gì tôi có thể điều chỉnh trong quá trình đào tạo XGBoost.

Tôi gọi XGBoost từ các ngôn ngữ khác nhau bằng FFI, vì vậy sẽ rất tuyệt nếu tôi có thể khắc phục vấn đề này mà không giới thiệu các thư viện hiệu chuẩn khác, ví dụ: thay đổi số liệu eval từ AUC sang mất nhật ký.


Bạn đã kiểm tra xem bất kỳ tỷ lệ nào bạn áp dụng cho tập huấn luyện cũng đã được áp dụng đúng cho tập kiểm tra chưa?
bradS

Tôi có cùng một vấn đề. Bạn có thể tìm thấy bất cứ điều gì hữu ích? Là một giải pháp tạm thời, tôi đã sắp xếp các probs và chuẩn hóa dưới 0 đến 1 dựa trên các lần xuất hiện nhưng tôi không nghĩ đó là một giải pháp tốt.
Ilker Kurtulus

Có bao nhiêu biến phân loại bạn có trong mô hình của bạn?
ngopal

Trên thực tế XGBoostlà khá mạnh mẽ chống lại các ngoại lệ, khi so sánh với các phương pháp vanilla khác như SVM.
Piotr Rarus - Phục hồi Monica

Câu trả lời:


1

XGBoost không được hiệu chỉnh tự nhiên trong xác suất. Bạn cần sử dụng một cái gì đó như:

objective = "binary:logistic"

để đảm bảo rằng đầu ra của mô hình có thể được hiểu là một xác suất. Nếu không, bạn chỉ có thể nhận được điểm, chỉ có thể được sử dụng để xếp hạng các trường hợp. Vì hầu hết các số liệu hiệu suất có thể được tính theo điểm số, nên sử dụng sai số xác suất (liên quan đến số liệu hiệu suất tốt) thay vì xác suất 'thực' là một lỗi phổ biến.

NHƯ cho sự không ổn định của mô hình (ở đây theo nghĩa là một thay đổi nhỏ trong biến giải thích thay đổi dự đoán rất nhiều), bạn cần kiểm tra lại toàn bộ quá trình hiệu chuẩn của mình: chọn biến, phân vùng kiểm tra / kiểm tra, siêu điều chỉnh tham số / xác thực chéo, hiệu suất số liệu được sử dụng, để đảm bảo rằng mô hình của bạn không phù hợp.


0

Có, kiểm tra phân phối mất log khi số lần lặp tăng lên. Nếu nó bắt đầu tăng lên trước khi lặp lại tăng cường cuối cùng của bạn thì nó quá phù hợp.


0

Câu hỏi đầu tiên tôi muốn hỏi là "Tỷ lệ dương / âm là gì?". Chỉ vì tôi gặp vấn đề tương tự nhiều lần khi các lớp rất mất cân bằng. Nếu đó là trường hợp của bạn, bạn có thể thử cân bằng tập dữ liệu hoặc thử chơi với scale_pos_weighttham số của XGboost. Trong trường hợp tỷ lệ 50/50 lớp, xác suất có thể ít nhiều được chuẩn hóa.

Ngoài ra, rất có khả năng bạn đã cung cấp quá nhiều cùng một lúc. Cố gắng điều chỉnh tốc độ học tập, tham số lấy mẫu và tham số chính quy (reg_alpha, reg_lambda).


-1

Trước tiên, bạn nên chắc chắn rằng dữ liệu của bạn đủ lớn khi làm việc với các thuật toán dựa trên cây như XGBoost và LightGBM, những thay đổi đột ngột như vậy có thể cho thấy quá mức. (Ít nhất 10.000 mẫu, quy tắc ngón tay cái)

Thứ hai, cardinality của bạn như thế nào; nếu bạn có 3-4 tính năng, dự kiến ​​sẽ có sự thay đổi tính năng gây ảnh hưởng như vậy.

Thứ ba, sự lựa chọn của bạn về siêu âm là gì? Các mô hình dựa trên cây rất nhạy cảm với những thay đổi của các tham số. Hãy chắc chắn rằng bạn cẩn thận thực hiện điều chỉnh siêu tham số của bạn.

Cuối cùng, khi xử lý phân loại nhị phân; số liệu lỗi được thực sự quan trọng. Bạn có thể thực hiện kết hợp mất nhật ký nhị phân và lỗi nhị phân (XGBoost cho phép bạn chọn nhiều); cũng hãy chắc chắn thực hiện dừng sớm bằng cách chọn Early_stopping_rounds = N trong phương thức đào tạo của XGBoost, trong đó N là lựa chọn lặp. Do đó, thuật toán của bạn sẽ dừng sớm ở điểm hợp lý khi tổn thất của bạn dừng giảm, tránh tình trạng thừa.

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.