Ngưỡng tối ưu đường cong ROC Python

Hồi quy logistic là một mô hình học tập có giám sát loại phân loại. Hồi quy logistic được sử dụng khi biến độc lập x, có thể là biến liên tục hoặc biến phân loại, nhưng biến phụ thuộc (y) là biến phân loại. Hồi quy logistic sử dụng hàm logit/hàm sigmoid được cho bởi f (x)= 1 / (1+e)^(-x). Hàm này được sử dụng để chuyển đổi đầu ra liên tục thành xác suất. Biến phụ thuộc nhận giá trị nhị phân 0/1 và dữ liệu phải được phân loại thuộc lớp nào. Giá trị ngưỡng t được sử dụng, trong đó tất cả các giá trị trên ngưỡng được phân loại là loại. 1 và tất cả các giá trị bên dưới nó được phân loại là lớp. 0. Để kiểm tra tính chính xác của mô hình, các số liệu hiệu suất như ma trận nhầm lẫn, điểm chính xác, đường cong đặc tính vận hành máy thu (ROC) và thước đo F được sử dụng. Công thức này trình bày một ví dụ về cách chọn điểm cắt tốt nhất cho vấn đề bằng cách sử dụng đường cong ROC AUC trong R. Trong ví dụ sau, '**Nghiên cứu trường hợp chăm sóc sức khỏe**' được thực hiện, hồi quy logistic phải được áp dụng trên tập dữ liệu

Bước 1 - Tải các thư viện cần thiết

install.packages("dplyr") # Install dplyr
library("dplyr") # Load dplyr
install.packages("caTools") # For Logistic regression
install.packages("ROCR") # For ROC curve to evaluate model
library(caTools)
library(ROCR)
library(MASS)

Bước 2 - Đọc tập dữ liệu csv

data <- read.csv("https://storage.googleapis.com/dimensionless/Analytics/quality.csv") # reads the dataset

Bước 3 - EDA. Phân tích dữ liệu khám phá

dim(data) # returns the number of rows and columns in the dataset
print(head(data)) # over view of the dataset
summary(data) # summary() function generates the statistical summary of the data

Bước 4 - Tạo mô hình cơ sở

Đánh giá, bao nhiêu bệnh nhân được chăm sóc tốt và bao nhiêu bệnh nhân được chăm sóc kém

baseline = table(data$PoorCare)
baseline

GoodCare(0). 98Chăm Sóc Nghèo(1). 33 Khi số lượng bệnh nhân được chăm sóc tốt ngày càng nhiều, chúng tôi dự đoán bệnh nhân sẽ được chăm sóc tốt. Độ chính xác của mô hình cơ sở. 98/(98+33) = 75% Do đó, độ chính xác của mô hình của chúng tôi phải cao hơn độ chính xác của mô hình cơ sở

Bước 5- Tạo tập dữ liệu huấn luyện và thử nghiệm

split <- sample.split(data, SplitRatio = 0.8)
split

Phương pháp phân tách chia dữ liệu thành tập dữ liệu huấn luyện và thử nghiệm với tỷ lệ 0. 8 Điều này có nghĩa là 80% tập dữ liệu của chúng tôi được chuyển vào tập dữ liệu huấn luyện và 20% trong tập dữ liệu thử nghiệm

train <- subset(data, split == "TRUE")
test <- subset(data, split == "FALSE")

Tập dữ liệu đào tạo nhận được tất cả các điểm dữ liệu sau khi phân tách là 'TRUE' và tương tự, tập dữ liệu thử nghiệm nhận được tất cả các điểm dữ liệu là 'FALSE'

dim(train) # dimension/shape of train dataset
dim(test) # dimension/shape of test dataset
head(train)
head(test)

Bước 6 -Tạo mô hình hậu cần bằng tập dữ liệu huấn luyện

model = glm(PoorCare~.,train , family="binomial") # we use the glm()-general linear model to create an instance of model
summary(model) # summary of the model tells us the different statistical values for our independent variables after the model is created

Bước 7- Đưa ra dự đoán trên mô hình bằng bộ dữ liệu thử nghiệm

Sau khi mô hình được tạo và trang bị, mô hình này được sử dụng để đưa ra dự đoán về các giá trị dữ liệu không nhìn thấy được i. e bộ dữ liệu thử nghiệm

________số 8

Bước 8 - Chẩn đoán mô hình

**Ma trận hỗn loạn**. Ma trận nhầm lẫn là một kỹ thuật số liệu hiệu suất để tóm tắt hiệu suất của thuật toán phân loại. Số lượng dự đoán đúng và sai được tóm tắt bằng các giá trị đếm và được liệt kê theo từng loại giá trị dự đoán và giá trị thực. Nó cung cấp cho bạn thông tin chi tiết không chỉ về các lỗi do trình phân loại của bạn gây ra mà quan trọng hơn là các loại lỗi đang mắc phải

TN. - Thực sự chăm sóc tốt và chúng tôi dự đoán chăm sóc tốt.
TP. - Trên thực tế Chăm sóc kém và chúng tôi dự đoán chăm sóc kém.
FP. - Dự đoán chăm sóc kém, nhưng họ thực sự chăm sóc tốt.
FN. - Tiên đoán chăm sóc tốt nhưng thực chất chăm sóc kém.
Sau khi đưa ra các dự đoán trên bộ dữ liệu thử nghiệm, hãy tạo một ma trận nhầm lẫn với giá trị ngưỡng = 0. 5

table(Actualvalue=test$PoorCare,Predictedvalue=pred_test>0.5) # assuming thershold to be 0.5

Ma trận nhầm lẫn của chúng tôi nói rằng giá trị dương thực và âm thực lần lượt là 20 và. Nhưng chúng tôi có tỷ lệ âm tính giả là 2, tôi. e bệnh nhân được dự đoán sẽ được chăm sóc tốt, nhưng thực tế họ không. Do đó tỷ lệ này phải được giảm càng nhiều càng tốt

data <- read.csv("https://storage.googleapis.com/dimensionless/Analytics/quality.csv") # reads the dataset0

Mô hình cơ sở của chúng tôi cho độ chính xác là 75% và mô hình dự đoán của chúng tôi cho độ chính xác là 81. 18% thực sự là một giá trị tốt

data <- read.csv("https://storage.googleapis.com/dimensionless/Analytics/quality.csv") # reads the dataset1 data <- read.csv("https://storage.googleapis.com/dimensionless/Analytics/quality.csv") # reads the dataset2 data <- read.csv("https://storage.googleapis.com/dimensionless/Analytics/quality.csv") # reads the dataset3

Bước 9 - Cách thực hiện ngưỡng. Đường cong ROC

data <- read.csv("https://storage.googleapis.com/dimensionless/Analytics/quality.csv") # reads the dataset4

ROC CURVE - ROC (Receiver Operator Characteristic Curve) có thể giúp quyết định giá trị ngưỡng tốt nhất. Đường cong ROC được vẽ với FPR trên trục X và TPR trên trục y. Giá trị ngưỡng cao mang lại - độ đặc hiệu cao và độ nhạy thấp Giá trị ngưỡng thấp mang lại - độ đặc hiệu thấp và độ nhạy cao

data <- read.csv("https://storage.googleapis.com/dimensionless/Analytics/quality.csv") # reads the dataset5

Giá trị ngưỡng sau đó có thể được chọn theo yêu cầu. Trong nghiên cứu điển hình của chúng tôi, chúng tôi muốn giảm SAI SÓT càng nhiều càng tốt, do đó, chúng tôi có thể chọn một giá trị ngưỡng làm tăng TPR và giảm FPR của chúng tôi. tôi. e chúng ta có thể chọn ngưỡng là 0. 3 và tạo ma trận nhầm lẫn và kiểm tra độ chính xác của mô hình

Bước 10 - Điểm cắt tốt nhất

Người ta phải quyết định bạn muốn bao nhiêu TPR và FPR tùy theo vấn đề kinh doanh. Nếu bạn muốn tăng TPR, FPR của bạn cuối cùng cũng sẽ tăng. Vì vậy, tùy thuộc vào việc bạn có muốn phát hiện tất cả các mặt tích cực (TPR cao hơn) và sẵn sàng chịu một số lỗi về FPR hay không, bạn quyết định mức giới hạn tối ưu. Giá trị ngưỡng sau đó có thể được chọn theo yêu cầu. Chúng tôi muốn giảm thiểu PHẢN ỨNG SAI càng nhiều càng tốt trong nghiên cứu điển hình của chúng tôi; . tôi. e chúng ta có thể chọn ngưỡng là 0. 3 và tạo ma trận nhầm lẫn và kiểm tra độ chính xác của mô hình

data <- read.csv("https://storage.googleapis.com/dimensionless/Analytics/quality.csv") # reads the dataset6

Giá trị tối ưu ngưỡng tốt nhất xuất hiện là 0. 29, điều này sẽ dẫn đến giảm FN, điều quan trọng. Nhưng sử dụng giá trị ngưỡng là 0. 29, sẽ dẫn đến tăng FP (tỷ lệ dương tính giả)

Ngưỡng trong đường cong ROC là gì?

Đường cong ROC được tạo bằng cách tính toán và vẽ biểu đồ tỷ lệ dương tính thực so với tỷ lệ dương tính giả cho một bộ phân loại duy nhất ở nhiều ngưỡng khác nhau. Ví dụ: trong hồi quy logistic, ngưỡng sẽ là xác suất dự đoán của một quan sát thuộc loại tích cực .

Ngưỡng tối ưu là gì?

Ngưỡng tối ưu được định nghĩa là ngưỡng dẫn đến tổng độ nhạy và độ đặc hiệu của xét nghiệm cao nhất (trong tổng này, các trọng số khác nhau có thể .

Điểm ROC AUC tốt là gì?

Kết quả diện tích dưới đường cong ROC (AUC) được coi là xuất sắc đối với các giá trị AUC trong khoảng từ 0. 9-1, phù hợp với các giá trị AUC trong khoảng 0. 8-0. 9 , hợp lý cho các giá trị AUC trong khoảng từ 0. 7-0. 8, kém đối với các giá trị AUC trong khoảng 0. 6-0. 7 và không thành công đối với các giá trị AUC trong khoảng từ 0. 5-0. 6.

Có phải đường cong ROC luôn đạt 1 1?

Điểm ROC là điểm có một cặp giá trị x và y trong không gian ROC trong đó x là 1 – độ đặc hiệu và y là độ nhạy và đường cong ROC luôn bắt đầu tại ( . 0, 0. 0) và kết thúc tại (1. 0, 1. 0) .