Hướng dẫn how is f1 score calculated from scratch python? - điểm f1 được tính từ đầu python như thế nào?
Show
Classification models are used in classification problems to predict the target class of the data sample. The classification model predicts the probability that each instance belongs to one class or another. It is important to evaluate the performance of the classifications model in order to reliably use these models in production for solving real-world problems. Performance measures in machine learning classification models are used to assess how well machine learning classification models perform in a given context. These performance metrics include accuracy, precision, recall, and F1-score. Because it helps us understand the strengths and limitations of these models when making predictions in new situations, model performance is essential for machine learning. In this blog post, we will explore these four machine learning classification model performance metrics through Python Sklearn example.
As a data scientist, you must get a good understanding of concepts related to the above in relation to measuring classification models’ performance. Before we get into the details of the performance metrics as listed above, lets understand key terminologies such as true positive, false positive, true negative and false negative with the help of confusion matrix. These terminologies will be used across different performance metrics.
Terminologies – True Positive, False Positive, True Negative, False NegativeBefore we get into the definitions, lets work with Sklearn breast cancer datasets for classifying whether a particular instance of data belongs to benign or malignant breast cancer class. You can load the dataset using the following code: import pandas as pd import numpy as np from sklearn import datasets # # Load the breast cancer data set # bc = datasets.load_breast_cancer() X = bc.data y = bc.target The target labels in the breast cancer dataset are Benign (1) and Malignant (0). There are 212 records with labels as malignant and 357 records with labels as benign. Let’s create a training and test split where 30% of the dataset is set aside for testing purposes. from sklearn.model_selection import train_test_split # # Create training and test split # X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=1, stratify=y) Splitting the breast cancer dataset into training and test set results in the test set consisting of 64 records’ labels as benign and 107 records’ labels as malignant. Thus, the actual positive is 107 records and the actual negative is 64 records. Let’s train the model and get the confusion matrix. Here is the code for training the model and printing the confusion matrix. from sklearn.preprocessing import StandardScaler from sklearn.svm import SVC from sklearn.metrics import confusion_matrix from sklearn.metrics import precision_score, recall_score, f1_score, accuracy_score import matplotlib.pyplot as plt # # Standardize the data set # sc = StandardScaler() sc.fit(X_train) X_train_std = sc.transform(X_train) X_test_std = sc.transform(X_test) # # Fit the SVC model # svc = SVC(kernel='linear', C=10.0, random_state=1) svc.fit(X_train, y_train) # # Get the predictions # y_pred = svc.predict(X_test) # # Calculate the confusion matrix # conf_matrix = confusion_matrix(y_true=y_test, y_pred=y_pred) # # Print the confusion matrix using Matplotlib # fig, ax = plt.subplots(figsize=(5, 5)) ax.matshow(conf_matrix, cmap=plt.cm.Oranges, alpha=0.3) for i in range(conf_matrix.shape[0]): for j in range(conf_matrix.shape[1]): ax.text(x=j, y=i,s=conf_matrix[i, j], va='center', ha='center', size='xx-large') plt.xlabel('Predictions', fontsize=18) plt.ylabel('Actuals', fontsize=18) plt.title('Confusion Matrix', fontsize=18) plt.show() The following confusion matrix is printed: Fig 1. Confusion Matrix representing predictions vs Actuals on Test DataThe predicted data results in the above diagram could be read in the following manner given 1 represents malignant cancer (positive).
Với các định nghĩa trên, hãy để Lôi thử và hiểu khái niệm về độ chính xác, độ chính xác, thu hồi và điểm số F1. Điểm chính xác là bao nhiêu?Điểm chính xác mô hình đo tỷ lệ của các nhãn dự đoán tích cực thực sự chính xác. Độ chính xác còn được gọi là giá trị dự đoán tích cực. Độ chính xác được sử dụng cùng với việc thu hồi để đánh đổi các dương tính giả và phủ định sai. Độ chính xác bị ảnh hưởng bởi phân phối lớp. Nếu có nhiều mẫu hơn trong lớp thiểu số, thì độ chính xác sẽ thấp hơn. Độ chính xác có thể được coi là một thước đo của độ chính xác hoặc chất lượng. Nếu chúng ta muốn giảm thiểu các tiêu cực sai, chúng ta sẽ chọn một mô hình có độ chính xác cao. Ngược lại, nếu chúng tôi muốn giảm thiểu các dương tính giả, chúng tôi sẽ chọn một mô hình có thu hồi cao. Độ chính xác chủ yếu được sử dụng khi chúng ta cần dự đoán lớp dương tính và có chi phí lớn hơn liên quan đến dương tính giả so với các tiêu cực giả như trong chẩn đoán y tế hoặc lọc thư rác. Ví dụ: nếu một mô hình chính xác 99% nhưng chỉ có độ chính xác 50%, điều đó có nghĩa là một nửa thời gian khi dự đoán email là một thư rác, nó thực sự không phải là thư rác.model precision score measures the proportion of positively predicted labels that are actually correct. Precision is also known as the positive predictive value. Precision is used in conjunction with the recall to trade-off false positives and false negatives. Precision is affected by the class distribution. If there are more samples in the minority class, then precision will be lower. Precision can be thought of as a measure of exactness or quality. If we want to minimize false negatives, we would choose a model with high precision. Conversely, if we want to minimize false positives, we would choose a model with high recall. Precision is mainly used when we need to predict the positive class and there is a greater cost associated with false positives than with false negatives such as in medical diagnosis or spam filtering. For example, if a model is 99% accurate but only has 50% precision, that means that half of the time when it predicts an email is a spam, it is actually not spam. Điểm chính xác là một thước đo hữu ích cho sự thành công của dự đoán khi các lớp rất mất cân bằng.success of prediction when the classes are very imbalanced. Mathematically, it represents the ratio of true positive to the sum of true positive and false positive. Điểm chính xác = TP / (FP + TP) Từ công thức trên, bạn có thể nhận thấy rằng giá trị của dương tính giả sẽ ảnh hưởng đến điểm chính xác. Do đó, trong khi xây dựng các mô hình dự đoán, bạn có thể chọn tập trung một cách thích hợp để xây dựng các mô hình có dương tính giả thấp hơn nếu điểm chính xác cao là quan trọng đối với các yêu cầu kinh doanh. Điểm chính xác từ ma trận nhầm lẫn ở trên sẽ xuất hiện như sau: Điểm chính xác = 104 / (3 + 104) = 104/107 = 0,972 = 104 / (3 + 104) = 104/107 = 0.972 Có thể đạt được điểm số tương tự bằng cách sử dụng phương pháp precision_score từ sklearn.metricsprecision_score method from sklearn.metrics print('Precision: %.3f' % precision_score(y_test, y_pred)) Các kịch bản trong thế giới thực khác nhau khi điểm chính xác có thể được sử dụng làm số liệu đánh giáĐiểm chính xác có thể được sử dụng trong kịch bản mà mô hình học máy được yêu cầu để xác định tất cả các ví dụ tích cực mà không có bất kỳ dương tính giả nào. Ví dụ, các mô hình học máy được sử dụng trong các ứng dụng chẩn đoán y tế trong đó bác sĩ muốn các mô hình học máy sẽ không cung cấp nhãn viêm phổi nếu bệnh nhân không mắc bệnh này. Các bác sĩ ung thư lý tưởng muốn các mô hình có thể xác định tất cả các tổn thương ung thư mà không cần bất kỳ kết quả dương tính giả nào và do đó người ta có thể sử dụng điểm chính xác trong các trường hợp như vậy. Lưu ý rằng một số lượng lớn các dương tính giả sẽ dẫn đến rất nhiều căng thẳng cho bệnh nhân nói chung mặc dù điều đó có thể không gây tử vong từ góc độ sức khỏe. Các thử nghiệm tiếp theo sẽ có thể phủ nhận dự đoán dương tính giả. Ví dụ khác trong đó điểm chính xác có thể hữu ích là phát hiện gian lận thẻ tín dụng. Trong các vấn đề phát hiện gian lận thẻ tín dụng, các mô hình phân loại được đánh giá bằng cách sử dụng điểm chính xác để xác định có bao nhiêu mẫu tích cực được phân loại chính xác theo mô hình phân loại. Bạn không muốn có một số lượng cao các dương tính giả nếu không bạn có thể sẽ chặn nhiều thẻ tín dụng và do đó rất nhiều sự thất vọng với người dùng cuối. Một ví dụ khác mà bạn muốn độ chính xác lớn hơn là các bộ lọc thư rác. Một số lượng lớn các dương tính giả trong bộ lọc thư rác có nghĩa là một hoặc nhiều email quan trọng có thể được gắn thẻ là thư rác và chuyển sang các thư mục spam. Điều này có thể cản trở theo nhiều cách khác nhau bao gồm tác động đến công việc hàng ngày của bạn.spam filters. A greater number of false positives in a spam filter would mean that one or more important emails could be tagged as spam and moved to spam folders. This could hamper in so many different ways including impact on your day-to-day work. Điểm thu hồi là gì?Điểm thu hồi mô hình đại diện cho khả năng mô hình để dự đoán chính xác các tích cực từ các mặt tích cực thực tế. Điều này không giống như độ chính xác, trong đó đo lường có bao nhiêu dự đoán được thực hiện bởi các mô hình thực sự tích cực trong tất cả các dự đoán tích cực được đưa ra. Ví dụ: nếu mô hình học máy của bạn đang cố gắng xác định các đánh giá tích cực, điểm thu hồi sẽ là bao nhiêu phần trăm các đánh giá tích cực đó, mô hình học máy của bạn dự đoán chính xác là tích cực. Nói cách khác, nó đo lường mức độ tốt của mô hình máy học của chúng tôi trong việc xác định tất cả các tích cực thực tế trong tất cả các tích cực tồn tại trong một bộ dữ liệu. Điểm thu hồi càng cao, mô hình máy học càng tốt trong việc xác định cả các ví dụ tích cực và tiêu cực. Nhớ lại còn được gọi là độ nhạy hoặc tỷ lệ dương thực sự. Điểm thu hồi cao chỉ ra rằng mô hình tốt trong việc xác định các ví dụ tích cực. Ngược lại, điểm thu hồi thấp chỉ ra rằng mô hình không tốt trong việc xác định các ví dụ tích cực. Nhớ lại thường được sử dụng cùng với các số liệu hiệu suất khác, chẳng hạn như độ chính xác và độ chính xác, để có được một bức tranh hoàn chỉnh về hiệu suất của mô hình. Về mặt toán học, nó đại diện cho tỷ lệ dương tính thực với tổng của dương tính và âm tính giả. Ghi nhớ điểm = TP / (FN + TP) Từ công thức trên, bạn có thể nhận thấy rằng giá trị của âm tính giả sẽ tác động đến điểm thu hồi. Do đó, trong khi xây dựng các mô hình dự đoán, bạn có thể chọn tập trung một cách thích hợp để xây dựng các mô hình có tiêu cực giả thấp hơn nếu điểm thu hồi cao là quan trọng đối với các yêu cầu kinh doanh. Điểm thu hồi từ ma trận nhầm lẫn ở trên sẽ xuất hiện như sau: Điểm nhớ lại = 104 / (3 + 104) = 104/107 = 0,972 = 104 / (3 + 104) = 104/107 = 0.972 Có thể đạt được điểm số tương tự bằng cách sử dụng phương pháp reBle_score từ sklearn.metricsrecall_score method from sklearn.metrics print('Recall: %.3f' % recall_score(y_test, y_pred)) Điểm thu hồi có thể được sử dụng trong kịch bản mà các nhãn không được phân chia như nhau giữa các lớp. Ví dụ: nếu có tỷ lệ mất cân bằng lớp là 20:80 (dữ liệu mất cân bằng), thì điểm thu hồi sẽ hữu ích hơn độ chính xác vì nó có thể cung cấp thông tin về việc mô hình học máy xác định các sự kiện hiếm hơn. Các kịch bản trong thế giới thực khác nhau khi điểm thu hồi có thể được sử dụng làm số liệu đánh giáĐiểm thu hồi là một số liệu quan trọng cần xem xét khi đo lường hiệu quả của các mô hình học máy của bạn. Nó có thể được sử dụng trong một loạt các kịch bản trong thế giới thực, và điều quan trọng là luôn luôn nhằm mục đích cải thiện điểm thu hồi và điểm chính xác cùng nhau. Sau đây là các ví dụ về một số kịch bản trong thế giới thực trong đó điểm thu hồi có thể được sử dụng làm số liệu đánh giá:
Điểm chính xác là gì?Độ chính xác của mô hình là một số liệu hiệu suất phân loại mô hình học máy được định nghĩa là tỷ lệ tích cực thực sự và tiêu cực thực sự cho tất cả các quan sát tích cực và tiêu cực. Nói cách khác, độ chính xác cho chúng ta biết tần suất chúng ta có thể mong đợi mô hình học máy của mình sẽ dự đoán chính xác kết quả trong tổng số lần nó đưa ra dự đoán. Ví dụ: Hãy giả sử rằng bạn đang kiểm tra mô hình học máy của mình với bộ dữ liệu gồm 100 bản ghi và mô hình học máy của bạn dự đoán tất cả 90 trong số các trường hợp đó một cách chính xác. Số liệu chính xác, trong trường hợp này, sẽ là: (90/100) = 90%. Tỷ lệ chính xác là tuyệt vời nhưng nó không cho chúng ta biết bất cứ điều gì về các lỗi mà các mô hình học máy của chúng ta tạo ra trên dữ liệu mới mà chúng ta đã thấy trước đây.is a machine learning classification model performance metric that is defined as the ratio of true positives and true negatives to all positive and negative observations. In other words, accuracy tells us how often we can expect our machine learning model will correctly predict an outcome out of the total number of times it made predictions. For example: Let’s assume that you were testing your machine learning model with a dataset of 100 records and that your machine learning model predicted all 90 of those instances correctly. The accuracy metric, in this case, would be: (90/100) = 90%. The accuracy rate is great but it doesn’t tell us anything about the errors our machine learning models make on new data we haven’t seen before. Về mặt toán học, nó đại diện cho tỷ lệ của tổng của các tiêu cực tích cực và thực sự trong tất cả các dự đoán. Điểm chính xác = (TP + TN)/ (TP + FN + TN + FP) Điểm chính xác từ trên ma trận nhầm lẫn ở trên sẽ xuất hiện như sau: Điểm chính xác = (104 + 61) / (104 + 3 + 61 + 3) = 165/171 = 0.965 = (104 + 61) / (104 + 3 + 61 + 3) = 165/171 = 0.965 Có thể đạt được điểm số tương tự bằng cách sử dụng phương pháp chính xác_score từ sklearn.metricsaccuracy_score method from sklearn.metrics print('Accuracy: %.3f' % accuracy_score(y_test, y_pred)) Thận trọng với các số liệu / điểm số chính xácSau đây là một số vấn đề với số liệu / điểm chính xác:issues with accuracy metrics / score:
Người ta nên thận trọng khi dựa vào các số liệu chính xác của mô hình để đánh giá hiệu suất mô hình. Hãy xem ma trận nhầm lẫn sau đây. Đối với độ chính xác của mô hình được biểu thị bằng cả hai trường hợp (trái và phải), độ chính xác là 60%. Tuy nhiên, cả hai mô hình thể hiện các hành vi khác nhau.cautious when relying on the accuracy metrics of model to evaluate the model performance. Take a look at the following confusion matrix. For model accuracy represented using both the cases (left and right), the accuracy is 60%. However, both the models exhibit different behaviors. Hiệu suất mô hình được biểu thị bằng ma trận nhầm lẫn bên trái cho thấy mô hình có tốc độ nhận dạng dương yếu trong khi ma trận nhầm lẫn bên phải biểu thị rằng mô hình có tốc độ nhận dạng tích cực mạnh. Lưu ý rằng độ chính xác là 60% cho cả hai mô hình. Do đó, người ta cần đào sâu hơn để hiểu về hiệu suất mô hình với các số liệu chính xác. Các số liệu chính xác cũng không đáng tin cậy cho các mô hình được đào tạo trên các bộ dữ liệu mất cân bằng. Lấy một kịch bản của bộ dữ liệu với sự mất cân bằng 95% (dữ liệu 95% là lớp tiêu cực). Độ chính xác của trình phân loại sẽ rất cao vì nó sẽ thực hiện chính xác dự đoán đúng đưa ra âm tính trong hầu hết thời gian. Một trình phân loại tốt hơn thực sự liên quan đến vấn đề mất cân bằng lớp học, có khả năng có điểm số liệu chính xác tồi tệ hơn. Trong kịch bản như vậy của bộ dữ liệu mất cân bằng, một số liệu khác AUC (khu vực theo đường cong ROC) mạnh hơn so với điểm số liệu chính xác. AUC tham gia vào việc xem xét, phân phối lớp trong bộ dữ liệu mất cân bằng.accuracy metrics is also not reliable for the models trained on imbalanced datasets. Take a scenario of dataset with 95% imbalance (95% data is negative class). The accuracy of the classifier will be very high as it will be correctly doing right prediction issuing negative most of the time. A better classifier that actually deals with the class imbalance issue, is likely to have a worse accuracy metrics score. In such scenario of imbalanced dataset, another metrics AUC (the area under ROC curve) is more robust than the accuracy metrics score. The AUC takes into the consideration, the class distribution in imbalanced dataset. Điểm số F1 là gì?Điểm F1 mô hình đại diện cho điểm số mô hình là một hàm của điểm chính xác và thu hồi. F-Score là một số liệu hiệu suất của mô hình học máy cho trọng lượng tương đương với cả độ chính xác và thu hồi để đo lường hiệu suất của nó về độ chính xác, làm cho nó trở thành một thay thế cho các số liệu chính xác (nó không yêu cầu chúng ta phải biết tổng số quan sát ). Nó thường được sử dụng như một giá trị duy nhất cung cấp thông tin cấp cao về chất lượng đầu ra của mô hình. Đây là một thước đo hữu ích của mô hình trong các kịch bản trong đó người ta cố gắng tối ưu hóa điểm chính xác hoặc thu hồi điểm và kết quả là, hiệu suất mô hình phải chịu đựng. Sau đây thể hiện các khía cạnh liên quan đến các vấn đề với tối ưu hóa điểm chính xác hoặc thu hồi điểm: represents the model score as a function of precision and recall score. F-score is a machine learning model performance metric that gives equal weight to both the Precision and Recall for measuring its performance in terms of accuracy, making it an alternative to Accuracy metrics (it doesn’t require us to know the total number of observations). It’s often used as a single value that provides high-level information about the model’s output quality. This is a useful measure of the model in the scenarios where one tries to optimize either of precision or recall score and as a result, the model performance suffers. The following represents the aspects relating to issues with optimizing either precision or recall score:
Về mặt toán học, nó có thể được biểu diễn dưới dạng trung bình hài hòa của điểm chính xác và thu hồi. Điểm F1 = 2 * Điểm chính xác * Điểm nhớ lại/ (Điểm chính xác + Điểm thu hồi/)Precision Score + Recall Score/) Điểm chính xác từ ma trận nhầm lẫn ở trên sẽ xuất hiện như sau: Điểm F1 = (2 * 0,972 * 0,972) / (0,972 + 0,972) = 1,89 / 1.944 = 0,972= (2 * 0.972 * 0.972) / (0.972 + 0.972) = 1.89 / 1.944 = 0.972 Có thể đạt được điểm số tương tự bằng cách sử dụng phương pháp F1_Score từ sklearn.metricsf1_score method from sklearn.metrics print('F1 Score: %.3f' % f1_score(y_test, y_pred)) Kết luậnDưới đây là bản tóm tắt về những gì bạn đã học được liên quan đến độ chính xác, nhớ lại, độ chính xác và điểm số F1.
Kiểm tra cuốn sách mới nhất của tôi về Lý luận bởi các nguyên tắc đầu tiên có tiêu đề là - Nguyên tắc đầu tiên suy nghĩ: Xây dựng các sản phẩm chiến thắng bằng cách sử dụng tư duy nguyên tắc đầu tiên. Bạn cũng có thể kiểm tra blog liên quan - Nguyên tắc đầu tiên tư duy được giải thích với các ví dụ.my latest book on reasoning by first principles titled as – First principles thinking: Building winning products using first principles thinking. You may as well check out the related blog – First principles thinking explained with examples.
Gần đây tôi đã làm việc trong lĩnh vực phân tích dữ liệu bao gồm khoa học dữ liệu và học máy / học sâu. Tôi cũng đam mê các công nghệ khác nhau bao gồm các ngôn ngữ lập trình như Java/JEE, JavaScript, Python, R, Julia, v.v. vv Để cập nhật và blog mới nhất, hãy theo dõi chúng tôi trên Twitter. Tôi rất thích kết nối với bạn trên LinkedIn. Kiểm tra cuốn sách mới nhất của tôi có tiêu đề là Nguyên tắc đầu tiên suy nghĩ: Xây dựng các sản phẩm chiến thắng bằng cách sử dụng suy nghĩ nguyên tắc đầu tiên Điểm F1 trong Python là gì?Trong Python, hàm F1_Score của sklearn. Gói Metrics tính toán điểm F1 cho một bộ nhãn dự đoán. Điểm F1 có thể nằm trong khoảng từ 0-1 0-1 0−1, với 0 là điểm tệ nhất và 1 là tốt nhất.calculates the F1 score for a set of predicted labels. An F1 score can range between 0 − 1 0-1 0−1, with 0 being the worst score and 1 being the best.
Điểm F1 trong xử lý ngôn ngữ tự nhiên là gì?F1-SCORE là một trong những số liệu đánh giá quan trọng nhất trong học máy.Nó tổng hợp một cách tao nhã hiệu suất dự đoán của một mô hình bằng cách kết hợp hai số liệu cạnh tranh khác - độ chính xác và thu hồi.one of the most important evaluation metrics in machine learning. It elegantly sums up the predictive performance of a model by combining two otherwise competing metrics — precision and recall.
Làm thế nào để bạn tính toán độ chính xác của F1 và nhớ lại trong Python?Ví dụ: điểm chính xác và thu hồi hoàn hảo sẽ dẫn đến điểm F-đo hoàn hảo: f-measure = (2 * độ chính xác * nhớ lại) / (độ chính xác + thu hồi) f-measure = (2 * 1.0 * 1.0) / (1.0+ 1.0) f-đo = (2 * 1.0) / 2.0.F-Measure = (2 * Precision * Recall) / (Precision + Recall) F-Measure = (2 * 1.0 * 1.0) / (1.0 + 1.0) F-Measure = (2 * 1.0) / 2.0.
Làm cách nào để cải thiện điểm F1 của tôi trong Python?Làm thế nào để cải thiện điểm F1 để phân loại.. StandardScaler(). GridSearchCV cho điều chỉnh siêu phân tích .. Loại bỏ tính năng đệ quy (để lựa chọn tính năng). SMOTE (bộ dữ liệu bị mất cân bằng nên tôi đã sử dụng SMOTE để tạo các ví dụ mới từ các ví dụ hiện có). |