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("//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("//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("//storage.googleapis.com/dimensionless/Analytics/quality.csv") # reads the dataset1 data <- read.csv("//storage.googleapis.com/dimensionless/Analytics/quality.csv") # reads the dataset2 data <- read.csv("//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("//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("//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("//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ả)