ReceiverOperatingCharacteristic
Tính toán các giá trị để xây dựng đường cong Receiver Operating Characteristic (ROC). Tương tự như ClassificationScore
, phương thức này được áp dụng cho vector chứa các giá trị thực.
bool vector::ReceiverOperatingCharacteristic(
const matrix& pred_scores, // ma trận chứa phân phối xác suất cho mỗi lớp
const ENUM_ENUM_AVERAGE_MODE mode, // chế độ trung bình
matrix& fpr, // giá trị tỷ lệ dương tính giả được tính toán cho mỗi giá trị ngưỡng
matrix& tpr, // giá trị tỷ lệ dương tính thật được tính toán cho mỗi giá trị ngưỡng
matrix& thresholds, // các giá trị ngưỡng được sắp xếp theo thứ tự giảm dần
);
2
3
4
5
6
7
Parameters
pred_scores
[in] Một ma trận chứa tập hợp các vector ngang với xác suất cho mỗi lớp. Số hàng của ma trận phải tương ứng với kích thước của vector chứa các giá trị thực.
mode
[in] Chế độ trung bình từ bảng liệt kê ENUM_AVERAGE_MODE
. Chỉ sử dụng AVERAGE_NONE
, AVERAGE_BINARY
và AVERAGE_MICRO
.
fpr
[out] Một ma trận chứa các giá trị đường cong tỷ lệ dương tính giả được tính toán. Nếu không áp dụng trung bình (AVERAGE_NONE
), số hàng trong ma trận tương ứng với số lớp của mô hình. Số cột tương ứng với kích thước của vector chứa các giá trị thực (hoặc số hàng trong ma trận phân phối xác suất pred_scores
). Trong trường hợp trung bình vi mô, số hàng trong ma trận tương ứng với tổng số giá trị ngưỡng, không bao gồm các giá trị trùng lặp.
tpr
[out] Một ma trận chứa các giá trị đường cong tỷ lệ dương tính thật được tính toán.
thresholds
[out] Ma trận ngưỡng thu được bằng cách sắp xếp ma trận xác suất.
Note
Xem ghi chú cho phương thức ClassificationScore
.
Ví dụ
Ví dụ về việc vẽ biểu đồ ROC, trong đó các giá trị tpr
được vẽ trên trục y và các giá trị fpr
được vẽ trên trục x. Ngoài ra, các biểu đồ fpr
và tpr
cũng được vẽ riêng biệt, với các giá trị ngưỡng được vẽ trên trục x.
matrixf mat_thres;
matrixf mat_fpr;
matrixf mat_tpr;
if(y_true.ReceiverOperatingCharacteristic(y_scores,AVERAGE_MICRO,mat_fpr,mat_tpr,mat_thres))
{
double fpr[],tpr[],thres[];
ArrayResize(fpr,mat_thres.Cols());
ArrayResize(tpr,mat_thres.Cols());
ArrayResize(thres,mat_thres.Cols());
for(uint i=0; i<fpr.Size(); i++)
{
fpr[i]=mat_fpr[0][i];
tpr[i]=mat_tpr[0][i];
thres[i]=mat_thres[0][i];
}
thres[0]=thres[1]+0.001;
PlotCurve("ROC curve (micro average)","roc","0.5",fpr,tpr);
Plot2Curves("fpr-tpr (micro average)","fpr","tpr",thres,fpr,tpr);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Đường cong kết quả:
Mã đầu ra biểu đồ đơn giản và dựa trên thư viện tiêu chuẩn <Graphics/Graphic.mqh>
.
Các ví dụ sử dụng dữ liệu của mô hình mnist.onnx
. Mã được trình bày trong mô tả phương thức PrecisionRecall
.
ROC AUC gần với giá trị lý tưởng.
roc auc score micro = [0.99991]