2014-10-09 16 views
6

tôi chỉ áp dụng sự mất mát log trong sklearn cho hồi quy logistic: http://scikit-learn.org/stable/modules/generated/sklearn.metrics.log_loss.htmlTại sao logloss lại tiêu cực?

Mã của tôi trông giống như sau:

def perform_cv(clf, X, Y, scoring): 
    kf = KFold(X.shape[0], n_folds=5, shuffle=True) 
    kf_scores = [] 
    for train, _ in kf: 
     X_sub = X[train,:] 
     Y_sub = Y[train] 
     #Apply 'log_loss' as a loss function 
     scores = cross_validation.cross_val_score(clf, X_sub, Y_sub, cv=5, scoring='log_loss') 
     kf_scores.append(scores.mean()) 
    return kf_scores 

Tuy nhiên, tôi đang tự hỏi tại sao kết quả thua lỗ logarit là tiêu cực. Tôi mong đợi họ được tích cực kể từ khi trong tài liệu (xem liên kết của tôi ở trên) mất đăng nhập được nhân với -1 để biến nó thành một số dương.

Tôi có làm gì sai ở đây không?

Trả lời

5

một cuộc thảo luận tương tự có thể được tìm thấy here.

Bằng cách này, điểm số cao hơn có nghĩa là hiệu suất tốt hơn (giảm ít hơn).

+0

Không có trường hợp này ở đây. Xin vui lòng xem xét đưa ra một câu trả lời thay vì đoán. Sau khi một số thử nghiệm tôi thà rằng nó thực sự xuất hiện là một lỗi trong khuôn khổ sklearn. – toom

-1

Tôi đã kiểm tra việc triển khai sklearn bằng một số phương pháp khác. Nó có vẻ là một lỗi thực sự trong khuôn khổ. Thay vì xem xét các mã follwoing để tính sự mất mát log:

import scipy as sp 

def llfun(act, pred): 
    epsilon = 1e-15 
    pred = sp.maximum(epsilon, pred) 
    pred = sp.minimum(1-epsilon, pred) 
    ll = sum(act*sp.log(pred) + sp.subtract(1,act)*sp.log(sp.subtract(1,pred))) 
    ll = ll * -1.0/len(act) 
    return ll 

Cũng đưa vào tài khoản đó kích thước của actpred phải vectơ cột Nx1.

3

Có, điều này được cho là xảy ra. Nó không phải là một 'lỗi' như những người khác đã gợi ý. Mất nhật ký thực tế chỉ đơn giản là phiên bản tích cực của số bạn đang nhận được.

API điểm hợp nhất của SK-Learn luôn tối đa hóa điểm số, vì vậy điểm số cần được giảm thiểu sẽ bị phủ nhận để API điểm thống nhất hoạt động chính xác. Do đó, số điểm được trả về sẽ bị từ chối khi nó là một điểm số cần được giảm thiểu và để lại dương nếu đó là một số điểm cần được tối đa hóa.

này cũng được mô tả trong sklearn GridSearchCV with Pipeline và trong scikit-learn cross validation, negative values with mean squared error

0

Log Mất cần phải được gần bằng không cho thuật toán tiên đoán tốt, giá trị âm lớn có nghĩa là phân tích tiên đoán là tắt và cần phải được xem xét lại.

Các vấn đề liên quan