Roc đường cong ngẫu nhiên trăn rừng
Có thể linh hoạt hơn để dự đoán xác suất của một quan sát thuộc về từng lớp trong bài toán phân loại hơn là dự đoán trực tiếp các lớp Show
Tính linh hoạt này xuất phát từ cách mà các xác suất có thể được giải thích bằng cách sử dụng các ngưỡng khác nhau cho phép người vận hành mô hình đánh đổi những lo ngại về lỗi do mô hình gây ra, chẳng hạn như số lần dương tính giả so với số lần âm tính giả. Điều này là cần thiết khi sử dụng các mô hình mà chi phí của một lỗi lớn hơn chi phí của các loại lỗi khác Hai công cụ chẩn đoán giúp giải thích dự báo xác suất cho các vấn đề mô hình dự đoán phân loại nhị phân (hai lớp) là Đường cong ROC và Đường cong thu hồi chính xác Trong hướng dẫn này, bạn sẽ khám phá Đường cong ROC, Đường cong thu hồi chính xác và khi nào sử dụng từng loại để diễn giải dự đoán xác suất cho các bài toán phân loại nhị phân Sau khi hoàn thành hướng dẫn này, bạn sẽ biết
Bắt đầu dự án của bạn với cuốn sách mới của tôi Xác suất cho Máy học, bao gồm hướng dẫn từng bước và tệp mã nguồn Python cho tất cả các ví dụ Bắt đầu nào
Cách thức và thời điểm sử dụng Đường cong ROC và Đường cong thu hồi chính xác để phân loại trong Python Hướng dẫn tổng quanHướng dẫn này được chia thành 6 phần;
Dự đoán xác suấtTrong một vấn đề phân loại, chúng ta có thể quyết định dự đoán trực tiếp các giá trị của lớp Thay vào đó, có thể linh hoạt hơn để dự đoán xác suất cho từng lớp thay vì. Lý do cho điều này là để cung cấp khả năng lựa chọn và thậm chí hiệu chỉnh ngưỡng cho cách diễn giải các xác suất dự đoán Ví dụ: mặc định có thể sử dụng ngưỡng 0. 5, nghĩa là xác suất trong [0. 0, 0. 49] là một kết quả tiêu cực (0) và xác suất trong [0. 5, 1. 0] là một kết quả tích cực (1) Ngưỡng này có thể được điều chỉnh để điều chỉnh hành vi của mô hình cho một vấn đề cụ thể. Một ví dụ sẽ là giảm nhiều loại lỗi này hoặc loại lỗi khác Khi đưa ra dự đoán cho bài toán phân loại nhị phân hoặc hai lớp, có hai loại lỗi mà chúng ta có thể mắc phải
Bằng cách dự đoán xác suất và hiệu chỉnh ngưỡng, người điều hành mô hình có thể chọn sự cân bằng của hai mối quan tâm này Ví dụ: trong một hệ thống dự đoán sương mù, chúng ta có thể quan tâm nhiều hơn đến việc có tỷ lệ âm tính giả thấp hơn là tỷ lệ dương tính giả thấp. Âm tính giả có nghĩa là không cảnh báo về một ngày có sương mù trong khi thực tế đó là một ngày có nhiều sương mù, dẫn đến các vấn đề sức khỏe cộng đồng mà không thể đề phòng. Kết quả dương tính giả có nghĩa là công chúng sẽ thực hiện các biện pháp phòng ngừa khi họ không cần Một cách phổ biến để so sánh các mô hình dự đoán xác suất cho các bài toán hai lớp là sử dụng đường cong ROC Đường cong ROC là gì?Một công cụ hữu ích khi dự đoán xác suất của kết quả nhị phân là đường cong Đặc tính hoạt động của máy thu hoặc đường cong ROC Nó là biểu đồ của tỷ lệ dương tính giả (trục x) so với tỷ lệ dương tính thực (trục y) đối với một số giá trị ngưỡng ứng cử viên khác nhau trong khoảng từ 0. 0 và 1. 0. Nói cách khác, nó vẽ tỷ lệ cảnh báo sai so với tỷ lệ trúng Tỷ lệ dương tính thực được tính bằng số dương tính thật chia cho tổng số dương tính thật và số âm tính giả. Nó mô tả mức độ tốt của mô hình trong việc dự đoán lớp tích cực khi kết quả thực tế là tích cực 1 Tỷ lệ tích cực thực sự = Tích cực thực sự / (Tích cực đúng + Tiêu cực sai) Tỷ lệ tích cực thực sự còn được gọi là độ nhạy 1 Độ nhạy = Tích cực đúng / (Tích cực đúng + Tiêu cực sai) Tỷ lệ dương tính giả được tính bằng số lần dương tính giả chia cho tổng số lần dương tính giả và số lần âm tính thật Nó còn được gọi là tỷ lệ cảnh báo sai vì nó tóm tắt tần suất một lớp tích cực được dự đoán khi kết quả thực tế là tiêu cực 1 Tỷ lệ dương tính giả = Dương tính giả / (Dương tính giả + Âm tính thật) Tỷ lệ dương tính giả còn được gọi là độ đặc hiệu đảo ngược trong đó độ đặc hiệu là tổng số âm tính thật chia cho tổng số âm tính thật và dương tính giả 1 Specificity = True Negatives / (True Negatives + False Positives) Ở đâu 1 False Positive Rate = 1 - Specificity Đường cong ROC là một công cụ hữu ích vì một vài lý do
Hình dạng của đường cong chứa rất nhiều thông tin, bao gồm những gì chúng ta có thể quan tâm nhất đối với một vấn đề, tỷ lệ dương tính giả dự kiến và tỷ lệ âm tính giả Để làm rõ điều này
Nếu bạn bối rối, hãy nhớ rằng, khi chúng tôi dự đoán một kết quả nhị phân, thì đó là dự đoán đúng (dương thực) hoặc không (dương tính giả). Có một sự căng thẳng giữa các tùy chọn này, tương tự với âm tính thật và âm tính giả Một mô hình khéo léo sẽ gán xác suất cao hơn cho một lần xuất hiện tích cực thực sự được chọn ngẫu nhiên so với một lần xuất hiện tiêu cực trung bình. This is what we mean when we say that the model has skill. Nói chung, các mô hình khéo léo được thể hiện bằng các đường cong hướng lên phía trên bên trái của biểu đồ Bộ phân loại không có kỹ năng là bộ không thể phân biệt giữa các lớp và sẽ dự đoán một lớp ngẫu nhiên hoặc một lớp không đổi trong mọi trường hợp. A model with no skill is represented at the point (0. 5, 0. 5). Một mô hình không có kỹ năng ở mỗi ngưỡng được biểu thị bằng một đường chéo từ dưới cùng bên trái của biểu đồ lên trên cùng bên phải và có AUC bằng 0. 5 Một mô hình với kỹ năng hoàn hảo được biểu diễn tại điểm (0,1). Một mô hình với kỹ năng hoàn hảo được thể hiện bằng một đường đi từ dưới cùng bên trái của biểu đồ lên trên cùng bên trái và sau đó băng qua trên cùng sang trên cùng bên phải Người vận hành có thể vẽ đường cong ROC cho mô hình cuối cùng và chọn ngưỡng mang lại sự cân bằng mong muốn giữa dương tính giả và âm tính giả Muốn tìm hiểu xác suất cho máy họcTham gia khóa học xử lý sự cố email miễn phí trong 7 ngày của tôi ngay bây giờ (có mã mẫu) Nhấp để đăng ký và cũng nhận được phiên bản PDF Ebook miễn phí của khóa học Tải xuống khóa học nhỏ MIỄN PHÍ của bạn Đường cong ROC và AUC trong PythonChúng ta có thể vẽ đường cong ROC cho một mô hình trong Python bằng cách sử dụng hàm scikit-learn roc_curve() Hàm lấy cả kết quả thực (0,1) từ tập kiểm tra và xác suất dự đoán cho lớp 1. Hàm trả về tỷ lệ dương sai cho từng ngưỡng, tỷ lệ dương thực cho từng ngưỡng và các ngưỡng 1 2 3 .. . # tính toán đường cong roc cho, tpr, ngưỡng = roc_curve(y, probs) AUC cho ROC có thể được tính bằng hàm roc_auc_score() Giống như hàm roc_curve(), hàm AUC lấy cả kết quả thực (0,1) từ tập kiểm tra và xác suất dự đoán cho lớp 1. Nó trả về điểm AUC giữa 0. 0 và 1. 0 cho kỹ năng không có kỹ năng và kỹ năng hoàn hảo tương ứng 1 2 3 4 .. . # tính AUC auc = roc_auc_score(y, probs) in('AUC. %. 3f' % auc) Dưới đây là một ví dụ hoàn chỉnh về tính toán đường cong ROC và ROC AUC cho mô hình Hồi quy logistic trên một bài toán thử nghiệm nhỏ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 # roc cong va auc từ sklearn. bộ dữ liệu nhập make_classification from sklearn. linear_model nhập LogisticRegression từ sklearn. model_selection nhập train_test_split từ sklearn. số liệu nhập roc_curve từ sklearn. số liệu nhập roc_auc_score từ matplotlib nhập pyplot # tạo tập dữ liệu 2 lớp X, y = make_classification(n_samples=1000, n_classes=2, random_state=1) # split into train/test sets đào tạoX, testX, đào tạo, testy = train_test_split(X, y, test_size=0.5, random_state=2) # tạo dự đoán không có kỹ năng (lớp đa số) ns_probs = [0 cho _ in range(len(testy))] #phù hợp với một mô hình mô hình = Hồi quy logistic(bộ giải='lbfgs') mô hình. phù hợp(đào tạoX, đào tạo) # dự đoán xác suất lr_probs = mô hình. predict_proba(testX) # chỉ giữ xác suất cho kết quả tích cực lr_probs = lr_probs[. , 1] # tính điểm ns_auc = roc_auc_score(bài kiểm tra, ns_probs) lr_auc = roc_auc_score(bài kiểm tra, lr_probs) # tổng kết điểm in('Không có kỹ năng. ROC AUC=%. 3f' % (ns_auc)) in('Logistic. ROC AUC=%. 3f' % (lr_auc)) # tính toán đường cong roc ns_fpr, ns_tpr, _ = roc_curve(testy, ns_probs) lr_fpr, lr_tpr, _ = roc_curve(testy, lr_probs) # vẽ đường cong roc cho mô hình pyplot. cốt truyện(ns_fpr, ns_tpr, linestyle='--', label='No Skill') pyplot. cốt truyện(lr_fpr, lr_tpr . ', marker='.', nhãn='Logistics') # nhãn trục pyplot. xlabel('Tỷ lệ dương tính giả') pyplot. ylabel('Tỷ lệ tích cực thực sự') # hiển thị huyền thoại pyplot. chú thích() # hiển thị cốt truyện pyplot. hiển thị() Chạy ví dụ in ROC AUC cho mô hình hồi quy logistic và trình phân loại không có kỹ năng chỉ dự đoán 0 cho tất cả các ví dụ 1 2 không có kỹ năng. ROC AUC=0. 500 hậu cần. ROC AUC=0. 903 Một đồ thị của đường cong ROC cho mô hình cũng được tạo ra cho thấy rằng mô hình có kỹ năng Ghi chú. Kết quả của bạn có thể thay đổi do tính chất ngẫu nhiên của thuật toán hoặc quy trình đánh giá hoặc sự khác biệt về độ chính xác của các con số. Cân nhắc chạy ví dụ một vài lần và so sánh kết quả trung bình Biểu đồ đường cong ROC cho Trình phân loại không có kỹ năng và Mô hình hồi quy logistic Precision-Recall Curves là gì?Có nhiều cách để đánh giá kỹ năng của một mô hình dự đoán Một cách tiếp cận trong lĩnh vực truy xuất thông tin liên quan (tìm tài liệu dựa trên các truy vấn) đo lường độ chính xác và khả năng thu hồi Các biện pháp này cũng hữu ích trong học máy ứng dụng để đánh giá các mô hình phân loại nhị phân Độ chính xác là tỷ lệ giữa số lượng dương tính thực chia cho tổng của dương tính thật và dương tính giả. Nó mô tả mức độ tốt của một mô hình trong việc dự đoán lớp tích cực. Độ chính xác được gọi là giá trị tiên đoán dương 1 Khả năng dự đoán tích cực = Tích cực đúng / (Tích cực đúng + Tích cực sai) hoặc 1 Độ chính xác = Tích cực đúng / (Tích cực đúng + Tích cực sai) Thu hồi được tính bằng tỷ lệ giữa số lượng dương tính thật chia cho tổng số dương tính thật và âm tính giả. Nhớ lại cũng giống như độ nhạy 1 Nhớ lại = Tích cực đúng / (Tích cực đúng + Tiêu cực sai) hoặc 1 Độ nhạy = Tích cực đúng / (Tích cực đúng + Tiêu cực sai) 1 Nhớ lại == Độ nhạy Xem lại cả độ chính xác và khả năng thu hồi rất hữu ích trong trường hợp có sự mất cân bằng trong các quan sát giữa hai lớp. Cụ thể, có nhiều ví dụ không có sự kiện (lớp 0) và chỉ một vài ví dụ có sự kiện (lớp 1) Lý do cho điều này là thông thường, số lượng lớn các ví dụ về lớp 0 có nghĩa là chúng ta ít quan tâm đến kỹ năng của mô hình trong việc dự đoán chính xác lớp 0, e. g. tiêu cực thực sự cao Chìa khóa để tính toán độ chính xác và thu hồi là các phép tính không sử dụng các phủ định thực. Nó chỉ liên quan đến dự đoán đúng của lớp thiểu số, lớp 1 Đường cong thu hồi độ chính xác là một đồ thị của độ chính xác (trục y) và độ thu hồi (trục x) cho các ngưỡng khác nhau, giống như đường cong ROC Bộ phân loại không có kỹ năng là bộ không thể phân biệt giữa các lớp và sẽ dự đoán một lớp ngẫu nhiên hoặc một lớp không đổi trong mọi trường hợp. Dòng không có kỹ năng thay đổi dựa trên sự phân bố của các lớp tích cực và tiêu cực. Đó là một đường nằm ngang với giá trị tỷ lệ các trường hợp dương tính trong tập dữ liệu. Đối với tập dữ liệu cân bằng, đây là 0. 5
— Biểu đồ thu hồi chính xác có nhiều thông tin hơn biểu đồ ROC khi đánh giá các bộ phân loại nhị phân trên các bộ dữ liệu không cân bằng, 2015 Một mô hình với kỹ năng hoàn hảo được mô tả như một điểm tại (1,1). Một mô hình khéo léo được thể hiện bằng một đường cong cong về phía (1,1) phía trên đường phẳng không có kỹ năng Ngoài ra còn có các điểm tổng hợp cố gắng tóm tắt độ chính xác và khả năng thu hồi;
Về mặt lựa chọn mô hình, F-Measure tóm tắt kỹ năng mô hình cho một ngưỡng xác suất cụ thể (e. g. 0. 5), trong khi khu vực dưới đường cong tóm tắt kỹ năng của mô hình qua các ngưỡng, như ROC AUC Điều này giúp thu hồi độ chính xác và biểu đồ độ chính xác so với. các biện pháp thu hồi và tóm tắt các công cụ hữu ích cho các vấn đề phân loại nhị phân có sự mất cân bằng trong các quan sát cho mỗi lớp Đường cong thu hồi chính xác trong PythonĐộ chính xác và thu hồi có thể được tính toán trong scikit-learning Độ chính xác và thu hồi có thể được tính cho các ngưỡng bằng cách sử dụng hàm precision_recall_curve() lấy các giá trị đầu ra thực và xác suất cho lớp tích cực làm đầu vào và trả về các giá trị chính xác, thu hồi và ngưỡng 1 2 3 .. . # tính toán đường cong thu hồi chính xác độ chính xác, thu hồi, ngưỡng = precision_recall_curve(testy, probs) F-Measure có thể được tính bằng cách gọi hàm f1_score() lấy các giá trị lớp thực và các giá trị lớp dự đoán làm đối số 1 2 3 .. . # tính điểm F1 f1 = f1_score(bài kiểm tra, yhat) Khu vực bên dưới đường cong thu hồi độ chính xác có thể được tính gần đúng bằng cách gọi hàm auc() và chuyển cho nó các giá trị thu hồi (x) và độ chính xác (y) được tính cho từng ngưỡng 1 2 3 .. . # tính toán AUC thu hồi chính xác auc = auc(thu hồi, precision) Khi vẽ sơ đồ độ chính xác và thu hồi cho từng ngưỡng dưới dạng một đường cong, điều quan trọng là thu hồi được cung cấp dưới dạng trục x và độ chính xác được cung cấp dưới dạng trục y Ví dụ hoàn chỉnh về tính toán các đường cong thu hồi độ chính xác cho mô hình Hồi quy logistic được liệt kê bên dưới 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 # đường cong thu hồi độ chính xác và f1 từ sklearn. bộ dữ liệu nhập make_classification from sklearn. linear_model nhập LogisticRegression từ sklearn. model_selection nhập train_test_split từ sklearn. số liệu nhập precision_recall_curve từ sklearn. chỉ số nhập f1_score từ sklearn. số liệu nhập auc từ matplotlib nhập pyplot # tạo tập dữ liệu 2 lớp X, y = make_classification(n_samples=1000, n_classes=2, random_state=1) # split into train/test sets đào tạoX, testX, đào tạo, testy = train_test_split(X, y, test_size=0.5, random_state=2) #phù hợp với một mô hình mô hình = Hồi quy logistic(bộ giải='lbfgs') mô hình. phù hợp(đào tạoX, đào tạo) # dự đoán xác suất lr_probs = mô hình. predict_proba(testX) # chỉ giữ xác suất cho kết quả tích cực lr_probs = lr_probs[. , 1] # dự đoán giá trị lớp yhat = mô hình. dự đoán(testX) lr_precision, lr_recall, _ = precision_recall_curve(testy, lr_probs) lr_f1, lr_auc = f1_score(testy, yhat), auc(lr_recall, lr_precision) # tổng kết điểm in('Logistic. f1=%. 3f auc=%. 3f' % (lr_f1, lr_auc)) # vẽ các đường cong thu hồi độ chính xác no_skill = len(bài kiểm tra[testy==1]) / len(testy) pyplot. cốt truyện([0, 1], [no_skill, no_skill], linestyle='--', label='No Skill') pyplot. biểu đồ(lr_recall, lr_precision . ', marker='.', nhãn='Logistics') # nhãn trục pyplot. xlabel('Ghi lại') pyplot. ylabel('Độ chính xác') # hiển thị huyền thoại pyplot. chú thích() # hiển thị cốt truyện pyplot. hiển thị() Chạy ví dụ trước tiên sẽ in F1, diện tích dưới đường cong (AUC) cho mô hình hồi quy logistic Ghi chú. Kết quả của bạn có thể thay đổi do tính chất ngẫu nhiên của thuật toán hoặc quy trình đánh giá hoặc sự khác biệt về độ chính xác của các con số. Cân nhắc chạy ví dụ một vài lần và so sánh kết quả trung bình 1 hậu cần. f1=0. 841 auc=0. 898 Biểu đồ đường cong thu hồi chính xác sau đó được tạo để hiển thị độ chính xác/thu hồi cho từng ngưỡng đối với mô hình hồi quy logistic (màu cam) so với mô hình không có kỹ năng (màu xanh) Biểu đồ thu hồi chính xác cho Trình phân loại không có kỹ năng và Mô hình hồi quy logistic Khi nào nên sử dụng ROC so với. Đường cong thu hồi chính xác?Nói chung, việc sử dụng các đường cong ROC và đường cong thu hồi độ chính xác như sau
Lý do cho khuyến nghị này là các đường cong ROC thể hiện một bức tranh lạc quan về mô hình trên các bộ dữ liệu có sự mất cân bằng về lớp
— Mối quan hệ giữa Precision-Recall và ROC Curves, 2006 Một số người đi xa hơn và đề xuất rằng việc sử dụng đường cong ROC với bộ dữ liệu không cân bằng có thể gây nhầm lẫn và dẫn đến cách hiểu sai về kỹ năng mô hình
— Biểu đồ thu hồi chính xác có nhiều thông tin hơn biểu đồ ROC khi đánh giá các bộ phân loại nhị phân trên các bộ dữ liệu không cân bằng, 2015 Lý do chính cho bức tranh lạc quan này là do việc sử dụng các phủ định thực sự trong Tỷ lệ dương tính giả trong Đường cong ROC và cẩn thận tránh tỷ lệ này trong đường cong Thu hồi chính xác
— Đồ thị ROC. Ghi chú và cân nhắc thực tế cho các nhà nghiên cứu khai thác dữ liệu, 2003 Chúng ta có thể làm cho điều này cụ thể với một ví dụ ngắn Dưới đây là cùng một ví dụ về Đường cong ROC với một vấn đề được sửa đổi trong đó có tỷ lệ khoảng 100. 1 tỷ lệ quan sát của lớp=0 so với lớp=1 (cụ thể là Lớp0=985, Lớp1=15) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 # đường cong roc và auc trên tập dữ liệu không cân bằng từ sklearn. bộ dữ liệu nhập make_classification from sklearn. linear_model nhập LogisticRegression từ sklearn. model_selection nhập train_test_split từ sklearn. số liệu nhập roc_curve từ sklearn. số liệu nhập roc_auc_score từ matplotlib nhập pyplot # tạo tập dữ liệu 2 lớp X, y = make_classification(n_samples=1000, n_classes=2, weights=[0.99,0. 01], random_state=1) # split into train/test sets đào tạoX, testX, đào tạo, testy = train_test_split(X, y, test_size=0.5, random_state=2) # tạo dự đoán không có kỹ năng (lớp đa số) ns_probs = [0 cho _ in range(len(testy))] #phù hợp với một mô hình mô hình = Hồi quy logistic(bộ giải='lbfgs') mô hình. phù hợp(đào tạoX, đào tạo) # dự đoán xác suất lr_probs = mô hình. predict_proba(testX) # chỉ giữ xác suất cho kết quả tích cực lr_probs = lr_probs[. , 1] # tính điểm ns_auc = roc_auc_score(bài kiểm tra, ns_probs) lr_auc = roc_auc_score(bài kiểm tra, lr_probs) # tổng kết điểm in('Không có kỹ năng. ROC AUC=%. 3f' % (ns_auc)) in('Logistic. ROC AUC=%. 3f' % (lr_auc)) # tính toán đường cong roc ns_fpr, ns_tpr, _ = roc_curve(testy, ns_probs) lr_fpr, lr_tpr, _ = roc_curve(testy, lr_probs) # vẽ đường cong roc cho mô hình pyplot. cốt truyện(ns_fpr, ns_tpr, linestyle='--', label='No Skill') pyplot. cốt truyện(lr_fpr, lr_tpr . ', marker='.', nhãn='Logistics') # nhãn trục pyplot. xlabel('Tỷ lệ dương tính giả') pyplot. ylabel('Tỷ lệ tích cực thực sự') # hiển thị huyền thoại pyplot. chú thích() # hiển thị cốt truyện pyplot. hiển thị() Chạy ví dụ cho thấy mô hình có kỹ năng Ghi chú. Kết quả của bạn có thể thay đổi do tính chất ngẫu nhiên của thuật toán hoặc quy trình đánh giá hoặc sự khác biệt về độ chính xác của các con số. Cân nhắc chạy ví dụ một vài lần và so sánh kết quả trung bình 1 2 không có kỹ năng. ROC AUC=0. 500 hậu cần. ROC AUC=0. 716 Thật vậy, nó có kỹ năng, nhưng tất cả kỹ năng đó được đo lường bằng cách đưa ra những dự đoán tiêu cực thực sự chính xác và có rất nhiều dự đoán tiêu cực cần đưa ra Xem lại các dự đoán sẽ thấy mô hình dự đoán lớp đa số (lớp 0) trong mọi trường hợp trên tập kiểm tra. Điểm số rất sai lệch Biểu đồ của Đường cong ROC xác nhận cách giải thích AUC của một mô hình khéo léo đối với hầu hết các ngưỡng xác suất Biểu đồ đường cong ROC cho Trình phân loại không có kỹ năng và Mô hình hồi quy logistic cho Tập dữ liệu không cân bằng Chúng tôi cũng có thể lặp lại thử nghiệm của cùng một mô hình trên cùng một tập dữ liệu và thay vào đó tính toán đường cong thu hồi chính xác và số liệu thống kê Ví dụ đầy đủ được liệt kê dưới đây 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 # đường cong thu hồi độ chính xác và f1 cho tập dữ liệu không cân bằng từ sklearn. bộ dữ liệu nhập make_classification from sklearn. linear_model nhập LogisticRegression từ sklearn. model_selection nhập train_test_split từ sklearn. số liệu nhập precision_recall_curve từ sklearn. chỉ số nhập f1_score từ sklearn. số liệu nhập auc từ matplotlib nhập pyplot # tạo tập dữ liệu 2 lớp X, y = make_classification(n_samples=1000, n_classes=2, weights=[0.99,0. 01], random_state=1) # split into train/test sets đào tạoX, testX, đào tạo, testy = train_test_split(X, y, test_size=0.5, random_state=2) #phù hợp với một mô hình mô hình = Hồi quy logistic(bộ giải='lbfgs') mô hình. phù hợp(đào tạoX, đào tạo) # dự đoán xác suất lr_probs = mô hình. predict_proba(testX) # chỉ giữ xác suất cho kết quả tích cực lr_probs = lr_probs[. , 1] # dự đoán giá trị lớp yhat = mô hình. dự đoán(testX) # tính toán độ chính xác và thu hồi cho từng ngưỡng lr_precision, lr_recall, _ = precision_recall_curve(testy, lr_probs) # tính điểm lr_f1, lr_auc = f1_score(testy, yhat), auc(lr_recall, lr_precision) # tổng kết điểm in('Logistic. f1=%. 3f auc=%. 3f' % (lr_f1, lr_auc)) # vẽ các đường cong thu hồi độ chính xác no_skill = len(bài kiểm tra[testy==1]) / len(testy) pyplot. cốt truyện([0, 1], [no_skill, no_skill], linestyle='--', label='No Skill') pyplot. biểu đồ(lr_recall, lr_precision . ', marker='.', nhãn='Logistics') # nhãn trục pyplot. xlabel('Ghi lại') pyplot. ylabel('Độ chính xác') # hiển thị huyền thoại pyplot. chú thích() # hiển thị cốt truyện pyplot. hiển thị() Chạy ví dụ đầu tiên in điểm F1 và AUC Ghi chú. Kết quả của bạn có thể thay đổi do tính chất ngẫu nhiên của thuật toán hoặc quy trình đánh giá hoặc sự khác biệt về độ chính xác của các con số. Cân nhắc chạy ví dụ một vài lần và so sánh kết quả trung bình Chúng ta có thể thấy rằng mô hình bị phạt vì dự đoán lớp đa số trong mọi trường hợp. Điểm số cho thấy mô hình trông đẹp theo Đường cong ROC trên thực tế hầu như không khéo léo khi được xem xét sử dụng độ chính xác và thu hồi tập trung vào lớp tích cực 1 hậu cần. f1=0. 000 auc=0. 054 Biểu đồ của đường cong thu hồi độ chính xác làm nổi bật rằng mô hình chỉ vừa đủ ở trên đường không có kỹ năng đối với hầu hết các ngưỡng Điều này là có thể bởi vì mô hình dự đoán xác suất và không chắc chắn về một số trường hợp. Chúng được hiển thị thông qua các ngưỡng khác nhau được đánh giá trong quá trình xây dựng đường cong, lật một số loại 0 thành loại 1, mang lại một số độ chính xác nhưng khả năng thu hồi rất thấp Biểu đồ thu hồi chính xác cho Trình phân loại không có kỹ năng và Mô hình hồi quy logistic cho Tập dữ liệu không cân bằng Đọc thêmPhần này cung cấp nhiều tài nguyên hơn về chủ đề này nếu bạn muốn tìm hiểu sâu hơn giấy tờ
API
Bài viết
Tóm lượcTrong phần hướng dẫn này, bạn đã khám phá ra các Đường cong ROC, Đường cong Thu hồi Chính xác và thời điểm sử dụng từng loại để diễn giải dự đoán xác suất cho các bài toán phân loại nhị phân Bạn có thể sử dụng đường cong ROC trên rừng ngẫu nhiên không?Bạn có thể sử dụng khu vực dưới đường cong để so sánh độ chính xác của Rừng ngẫu nhiên ® Phân loại với mô hình khác, such as a TreeNet ® Classification.
Làm cách nào để tính toán đường cong ROC trong Python?Đường cong ROC và AUC trong Python
. Giống như hàm roc_curve(), hàm AUC lấy cả kết quả thực (0,1) từ tập kiểm tra và xác suất dự đoán cho lớp 1. using the roc_auc_score() function. Like the roc_curve() function, the AUC function takes both the true outcomes (0,1) from the test set and the predicted probabilities for the 1 class.
AUC trong rừng ngẫu nhiên là gì?AUC là viết tắt của " Khu vực dưới Đường cong ROC . " Nghĩa là, AUC đo toàn bộ diện tích hai chiều bên dưới toàn bộ đường cong ROC (nghĩ về phép tính tích phân) từ (0,0) đến (1,1).
Roc_curve trong Python là gì?Đặc tính vận hành của Máy thu tính toán (ROC). Ghi chú. việc triển khai này bị hạn chế đối với nhiệm vụ phân loại nhị phân. Đọc thêm trong Hướng dẫn sử dụng. |