logloss vs gini / auc


14

Tôi đã đào tạo hai mô hình (phân loại nhị phân bằng h2o AutoML) và tôi muốn chọn một mô hình để sử dụng. Tôi có kết quả như sau:

 model_id        auc     logloss    logloss_train   logloss_valid   gini_train  gini_valid

DL_grid_1   0.542694    0.287469         0.092717        0.211956     0.872932    0.312975
DL_grid_2   0.543685    0.251431         0.082616        0.186196     0.900955    0.312662

các aucloglosscột là những số liệu cross-validation (xác nhận chéo chỉ sử dụng dữ liệu huấn luyện). các ..._train..._validsố liệu được tìm thấy bằng cách chạy các số liệu đào tạo và xác nhận thông qua các mô hình tương ứng. Tôi muốn sử dụng logloss_validhoặc gini_validđể chọn một mô hình tốt nhất.

Mô hình 1 có gini tốt hơn (tức là AUC tốt hơn) nhưng mô hình hai có logloss tốt hơn. Câu hỏi của tôi là chọn cái nào mà tôi nghĩ đặt ra câu hỏi, đâu là ưu điểm / nhược điểm của việc sử dụng gini (AUC) hoặc logloss làm thước đo quyết định.


1
Video này có một lời giải thích hay về lý do tại sao logloss được ưa thích nếu bạn quan tâm đến xác suất và không chỉ phân loại. Lưu ý rằng đối với phân loại nhị phân, logloss bằng với điểm số của brier.
Dan

Câu trả lời:


9

Trong khi AUC được tính toán liên quan đến phân loại nhị phân với ngưỡng quyết định khác nhau, logloss thực sự có tính "chắc chắn" của phân loại.

Do đó, theo hiểu biết của tôi, logloss về mặt khái niệm vượt ra ngoài AUC và đặc biệt có liên quan trong các trường hợp có dữ liệu mất cân bằng hoặc trong trường hợp chi phí lỗi phân bổ không đồng đều (ví dụ: phát hiện bệnh chết người).

Ngoài câu trả lời rất cơ bản này, bạn có thể muốn xem xét tối ưu hóa auc vs logloss trong các vấn đề phân loại nhị phân

Một ví dụ đơn giản về tính toán logloss và khái niệm cơ bản được thảo luận trong câu hỏi gần đây này Hàm mất nhật ký trong scikit-learn trả về các giá trị khác nhau

Ngoài ra, một điểm rất tốt đã được thực hiện trong stackoverflow

Người ta phải hiểu sự khác biệt quan trọng giữa AUC ROC và "số liệu thông minh" như độ chính xác / độ chính xác, vv ROC là một hàm của ngưỡng. Đưa ra một mô hình (bộ phân loại) đưa ra xác suất thuộc về mỗi lớp, chúng ta thường phân loại thành phần cho lớp có sự hỗ trợ cao nhất. Tuy nhiên, đôi khi chúng ta có thể đạt điểm cao hơn bằng cách thay đổi quy tắc này và yêu cầu một hỗ trợ lớn hơn 2 lần so với nhóm khác để thực sự phân loại là một lớp nhất định. Điều này thường đúng với các bộ dữ liệu mất cân bằng. Bằng cách này, bạn thực sự sửa đổi các lớp đã học trước để phù hợp hơn với dữ liệu của bạn. ROC xem xét "điều gì sẽ xảy ra nếu tôi thay đổi ngưỡng này thành tất cả các giá trị có thể" và sau đó AUC ROC tính toán tích phân của một đường cong như vậy.


Liên kết đầu tiên của bạn chứa "AUC tối đa hóa khả năng phân biệt giữa các lớp trong khi logloss xử phạt sự khác biệt giữa xác suất thực tế và ước tính" , vì vậy về cơ bản tôi hỏi tôi chọn cách nào giữa hai mục tiêu đó? Có phải là trường hợp nếu tôi làm việc trực tiếp với đầu ra 'xác suất' của mô hình thì tôi nên tối ưu hóa logloss (và sau đó có lẽ cũng thực hiện hiệu chỉnh xác suất ) trong đó - như thể tôi thực sự sử dụng nó như một trình phân loại để đưa ra quyết định khó khăn Tôi nên đi với AUC?
Dan

2
Nếu bạn chỉ quan tâm đến một quyết định đúng hay sai -> sử dụng AUC - nếu bạn quan tâm đến mức độ "đúng" hoặc "sai" của bạn -> sử dụng logloss
Nikolas Rieble

Bất kỳ lựa chọn nào khác về đo lường hiệu suất không thể được khái quát mà phụ thuộc vào miền / ứng dụng.
Nikolas Rieble
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.