Tại sao nên sử dụng tỷ lệ của Platt?


17

Để hiệu chỉnh mức độ tin cậy đến xác suất trong học tập có giám sát (nói để ánh xạ độ tin cậy từ SVM hoặc cây quyết định sử dụng dữ liệu được phủ ngoài), một phương pháp là sử dụng Thang đo của Platt (ví dụ: Lấy Xác suất được hiệu chuẩn từ Tăng tốc ).

Về cơ bản, người ta sử dụng hồi quy logistic để ánh xạ thành . Biến phụ thuộc là nhãn thực và yếu tố dự đoán là độ tin cậy từ mô hình không được hiệu chỉnh. Điều tôi không hiểu là việc sử dụng biến mục tiêu khác 1 hoặc 0. Phương thức này yêu cầu tạo một "nhãn" mới:[;][0;1]

Để tránh quá mức cho tập tàu sigmoid, một mô hình ngoài mẫu được sử dụng. Nếu có ví dụ dương và ví dụ âm trong tập huấn luyện, đối với mỗi ví dụ đào tạo, Platt sử dụng các giá trị đích và (thay vì 1 và 0, tương ứng), trong đó N+Ny+y

y+=N++1N++2;y=1N+2

Điều tôi không hiểu là mục tiêu mới này hữu ích như thế nào. Không phải hồi quy logistic đơn giản sẽ coi biến phụ thuộc là nhãn nhị phân (bất kể nhãn nào được đưa ra)?

CẬP NHẬT:

Tôi thấy rằng trong SAS thay đổi sự phụ thuộc từ sang một thứ khác được hoàn nguyên về cùng một mô hình (sử dụng ). Có lẽ lỗi của tôi hoặc có lẽ là thiếu tính linh hoạt của SAS. Tôi đã có thể thay đổi mô hình trong R. Ví dụ:1/0PROC GENMOD

data(ToothGrowth) 
attach(ToothGrowth) 

  # 1/0 coding 
dep          <- ifelse(supp == "VC", 1, 0) 
OneZeroModel <- glm(dep~len, family=binomial) 
OneZeroModel 
predict(OneZeroModel) 

  # Platt coding 
dep2           <- ifelse(supp == "VC", 31/32, 1/32) 
plattCodeModel <- glm(dep2~len, family=binomial) 
plattCodeModel 
predict(plattCodeModel) 

compare        <- cbind(predict(OneZeroModel), predict(plattCodeModel)) 

plot(predict(OneZeroModel), predict(plattCodeModel))

Câu trả lời:


13

Tôi đề nghị kiểm tra trang wikipedia của hồi quy logistic . Nó nói rằng trong trường hợp hồi quy logistic biến phụ thuộc nhị phân ánh xạ các yếu tố dự đoán đến xác suất xuất hiện của biến phụ thuộc. Không có bất kỳ biến đổi nào, xác suất được sử dụng để đào tạo mô hình là 1 (nếu y dương trong tập huấn luyện) hoặc 0 (nếu y âm).

pi=1(1+exp(Afi+B))fiy+y


Cảm ơn vì sự trả lời! Lần đầu tiên tôi sử dụng SAS và không thể nhận được một biến phản hồi khác. Tôi lấy ví dụ sau trong R làm ví dụ và thấy rằng một cảnh báo được đưa ra về việc không phải là biến số phản hồi số nguyên nhưng kết quả đã phù hợp với một mô hình khác.
B_Miner

dữ liệu (ToothGrowth) đính kèm (ToothGrowth) mã hóa # 1/0 dep <-ifelse (supp == "VC", 1,0) OneZeroModel <-glm (dep ~ len, Family = binomial) OneZeroModel (OneZeroModel) dep2 <-ifelse (supp == "VC", 31/32, 1/32) plattCodeModel <-glm (dep2 ~ len, gia đình = binomial) dự đoán plattCodeModel (dự đoán (plattCodeModel) so sánh <-cbind (dự đoán) plattCodeModel)) cốt truyện (dự đoán (OneZeroModel), dự đoán (plattCodeModel))
B_Miner

@ user2040: 1. Có ... có một câu hỏi hay đây chỉ là một nhận xét :)? 2. tại sao bạn không thêm mã vào câu hỏi? Không có định dạng là khủng khiếp.
steffen

2

Một phương pháp khác để tránh sự phù hợp quá mức mà tôi thấy hữu ích là điều chỉnh mô hình hồi quy logistic đơn biến với đầu ra xác thực chéo của SVM, có thể được xấp xỉ một cách hiệu quả bằng cách sử dụng ràng buộc Span .

Tuy nhiên, nếu bạn muốn một trình phân loại tạo ra các ước tính về xác suất thành viên của lớp, thì bạn nên sử dụng hồi quy logistic kernel, nhằm mục đích trực tiếp làm điều đó. Thông số của SVM được thiết kế để phân loại rời rạc và không nhất thiết phải chứa thông tin cần thiết để ước tính chính xác xác suất ra khỏi đường viền p = 0,5.

Các trình phân loại quy trình Gaussian là một tùy chọn tốt khác nếu bạn muốn một trình phân loại xác suất dựa trên kernel.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.