2016-01-03 23 views
5

Tôi có một tập dữ liệu rất lớn (ds). Một trong các cột của nó là Popularity, thuộc loại factor ('Cao'/'Thấp').Đánh giá mô hình thống kê trong R

Tôi chia dữ liệu thành 70% và 30% để tạo bộ đào tạo (ds_tr) và bộ kiểm tra (ds_te).

Tôi đã tạo ra mô hình sau đây sử dụng một hồi qui logistic:

mdl <- glm(formula = popularity ~ . -url , family= "binomial", data = ds_tr) 

sau đó tôi đã tạo ra một đối tượng predict (sẽ làm điều đó một lần nữa cho ds_te)

y_hat = predict(mdl, data = ds_tr - url , type = 'response') 

Tôi muốn tìm giá trị chính xác tương ứng với ngưỡng ngưỡng 0.5 và tìm giá trị thu hồi tương ứng với ngưỡng ngưỡng 0.5, vì vậy tôi đã làm:

library(ROCR) 
pred <- prediction(y_hat, ds_tr$popularity) 
perf <- performance(pred, "prec", "rec") 

Kết quả là một bảng của nhiều giá trị

str(perf) 

Formal class 'performance' [package "ROCR"] with 6 slots 
    [email protected] x.name  : chr "Recall" 
    [email protected] y.name  : chr "Precision" 
    [email protected] alpha.name : chr "Cutoff" 
    [email protected] x.values :List of 1 
    .. ..$ : num [1:27779] 0.00 7.71e-05 7.71e-05 1.54e-04 2.31e-04 ... 
    [email protected] y.values :List of 1 
    .. ..$ : num [1:27779] NaN 1 0.5 0.667 0.75 ... 
    [email protected] alpha.values:List of 1 
    .. ..$ : num [1:27779] Inf 0.97 0.895 0.89 0.887 ... 

Làm thế nào để tìm ra chính xác và thu hồi giá trị cụ thể tương ứng với một ngưỡng cắt 0,5?

+0

Nâng cao giải thích và giải thích làm thế nào để có được giá trị đề nghị. – PereG

Trả lời

1

acces các khe của đối tượng hoạt động (thông qua sự kết hợp của @ + list)

Chúng tôi tạo ra một tập dữ liệu với tất cả các giá trị có thể:

probab.cuts <- data.frame([email protected][[1]], [email protected][[1]], [email protected][[1]]) 

Bạn có thể xem tất cả giá trị liên quan đến

probab.cuts 

Nếu bạn muốn selec t các giá trị yêu cầu, nó là tầm thường để làm:

tail(probab.cuts[probab.cuts$cut > 0.5,], 1) 

Manual séc

tab <- table(ds_tr$popularity, y_hat > 0.5) 
tab[4]/(tab[4]+tab[2]) # recall 
tab[4]/(tab[4]+tab[3]) # precision 
+0

Cảm ơn, nhưng tôi vẫn có một vấn đề khi cố gắng để đánh giá mô hình trên tập kiểm tra (ds_te) vì y_hat là khác nhau về chiều dài sau đó ds_te $ phổ biến. bất kỳ suy nghĩ nào? – user2878881

+0

Trên thực tế, việc đánh giá mô hình sử dụng dữ liệu thử nghiệm là chính xác hơn. Vì vậy, ước tính và sử dụng: "y_hat_test <- dự đoán (mdl, dữ liệu = ds_te - url, type = 'response')" và tính "pred" và "perf" với dữ liệu mới. Cuối cùng, sử dụng mã của câu trả lời này với "ds_te $ popular" và "y_hat_test" mới trong hàm bảng. – PereG

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