Im Bereich des maschinellen Lernens ist es von entscheidender Bedeutung, die Leistung und Genauigkeit von Vorhersagemodellen zu bewerten. Eine beliebte Bewertungsmetrik fรผr diesen Zweck ist die AUC-ROC-Kurve. Es liefert wertvolle Erkenntnisse darรผber, wie intestine ein Modell zwischen verschiedenen Klassen oder Kategorien unterscheiden kann. In diesem Weblog untersuchen wir die AUC-ROC-Kurve und wie sie zur Bewertung der Leistung von Modellen fรผr maschinelles Lernen verwendet werden kann.
Was ist die AUC-ROC-Kurve?
AUC steht fรผr Flรคche unter der Kurve und ROC steht fรผr Betriebseigenschaften des Empfรคngers. Die ROC-Kurve ist eine grafische Darstellung, die uns durch die Darstellung der Leistung eines Klassifizierungsmodells Auskunft gibt echte optimistic Price gegen das Falsch-Positiv-Price bei verschiedenen Schwellenwerteinstellungen. Die AUC-ROC-Kurve fasst die Gesamtleistung des Modells รผber alle mรถglichen Klassifizierungsschwellenwerte hinweg zusammen.
Schauen wir uns nun einige Begriffe an, die uns helfen, ROC und AUC besser zu verstehen. Schauen wir uns dazu an, wie eine Verwirrungsmatrix aussieht:
๐๐๐๐ ๐ฟ๐๐๐๐๐๐๐ ๐๐๐๐
Der echte optimistic Priceauch bekannt als Empfindlichkeit oder abrufen ist eine Leistungsmetrik, die bei binรคren Klassifizierungsaufgaben verwendet wird, beispielsweise in der medizinischen Diagnostik oder Qualitรคtskontrolle. Es misst den Anteil tatsรคchlich positiver Fรคlle, die von einem Klassifikator oder Modell korrekt identifiziert werden.
Mit anderen Worten: TPR zeigt, wie intestine ein Modell zwischen positiven Fรคllen unter allen echten positiven Beispielen im Datensatz unterscheiden kann. Eine hรถhere True-Positiv-Price weist auf eine bessere Leistung des Modells bei der korrekten Identifizierung positiver Fรคlle hin.
๐ต๐๐๐๐ ๐ฟ๐๐๐๐๐๐๐ ๐๐๐๐
Der Falsch-Positiv-Price ist eine Leistungsmetrik, die bei binรคren Klassifizierungsaufgaben verwendet wird. Es misst den Anteil negativer Instanzen, die von einem Klassifikator oder Modell fรคlschlicherweise als positiv klassifiziert werden.
Einfacher ausgedrรผckt zeigt die Falsch-Positiv-Price, wie oft das Modell etwas falsch macht, indem es sagt, dass etwas positiv ist, obwohl es tatsรคchlich negativ ist. Eine niedrigere Falsch-Positiv-Price weist auf eine bessere Leistung des Modells bei der Vermeidung von Fehlalarmen oder Fehlalarmen hin.
๐๐๐๐๐๐๐๐๐ ๐๐๐๐๐๐๐๐๐
Wir wissen, dass die Vorhersage von Klassenbezeichnungen eines Modells fรผr maschinelles Lernen auf der vom Modell erzeugten Wahrscheinlichkeitsbewertung basiert. Allerdings muss hierfรผr ein Schwellenwert definiert werden, um diese Wahrscheinlichkeiten in genaue Klassenvorhersagen umzuwandeln. Die Entscheidung basiert auf dem Vergleich der vorhergesagten Wahrscheinlichkeit mit einem vordefinierten Schwellenwert. Wenn die vorhergesagte Wahrscheinlichkeit den Schwellenwert รผberschreitet, wird die Instanz als optimistic Klasse klassifiziert; andernfalls wird es als unfavourable Klasse klassifiziert.
Der Betriebseigenschaften des Empfรคngers (ROC)-Kurve ist eine grafische Darstellung, die die Leistung eines binรคren Klassifizierungsmodells veranschaulicht. Es liefert wertvolle Erkenntnisse darรผber, wie intestine das Modell zwischen verschiedenen Klassen oder Kategorien unterscheiden kann.
Die ROC-Kurve wird durch Auftragen von T erstelltrue Constructive Price (TPR) gegen die Fauch optimistic Price (FPR) bei verschiedenen Schwellenwerteinstellungen.
Ein hรถherer FPR auf einer ROC-Kurve bedeutet einen grรถรeren Anteil von Fehlalarm im Vergleich zu Wahre Detrimental. Wรคhrend ein hรถherer TPR einen grรถรeren Anteil an bedeutet Wirklich positiv als Falsche Detrimental. Um den Graphen auszugleichen, mรผssen wir ihn ausbalancieren Schwelle. Je nรคher die Kurve an einem rechten Winkel liegt, desto genauer ist das Modell.
Um es besser zu verstehen, graben wir tiefer. Nehmen wir additionally zwei Fรคlle:
๐๐ช๐ผ๐ฎ 1: Wenn der Schwellenwert zu klein ist.
An dieser Stelle, Wirklich positiv steigt aber Falsch negativ Verringerungen fรผhren zu einer Erhรถhung von Echt-Positiv-Price wohingegen Falsch positiv erhรถht und Echt negativ Verringerungen fรผhren zu einer Erhรถhung von Falsch-Positiv-Price. Lassen Sie uns nun dieses Diagramm zeichnen.
Hier kรถnnen wir deutlich erkennen, dass unser Punkt zu weit vom rechten Winkel entfernt ist.
๐๐ช๐ผ๐ฎ 2: Wenn der Schwellenwert zu groร ist
An dieser Stelle, Wirklich positiv nimmt aber ab Falsch negativ Erhรถhungen fรผhren zu einer Verringerung Echt-Positiv-Price wohingegen Falsch positiv nimmt ab und Echt negativ Erhรถhungen fรผhren zu einer Verringerung Falsch-Positiv-Price. Lassen Sie uns nun dieses Diagramm zeichnen.
In diesem Fall kรถnnen wir deutlich erkennen, dass unser Punkt zu weit vom rechten Winkel entfernt ist.
Aus beiden oben genannten Fรคllen kรถnnen wir schlieรen, dass wir unseren Schwellenwert anpassen mรผssen, um ein genaueres Modell zu erhalten.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline# Fashions for scikit-learn
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
# Mannequin Analysis
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_curve, roc_auc_score
df = pd.read_csv("pima_indians_diabetes.csv", names= ["Pregnancies","Glucose","BloodPressure","Skinthickness","Insulin","BMI","DiabetesPedigreeFunction","age","Outcome"])# Splitting dataset into coaching and testing information
X = df.drop(["Outcome","Insulin"],axis=1)
y=df[['Outcome']]
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.20)
rfc = RandomForestClassifier()
rfc.match(X_train, y_train)
lr = LogisticRegression()
lr.match(X_train, y_train)
# prediction chances
pred_proba1 = lr.predict_proba(X_test)
pred_proba2 = rfc.predict_proba(X_test)# roc curve for fashions
fpr1, tpr1, threshold1 = roc_curve(y_test, pred_proba1[:,1])
fpr2, tpr2, threshold2 = roc_curve(y_test, pred_proba2[:,1])
# roc curve when FPR = TPR
random_probab = [0 for i in range(len(y_test))]
random_fpr, random_tpr, _ = roc_curve(y_test, random_probab, pos_label=1)
# auc scores
auc_score1 = roc_auc_score(y_test, pred_proba1[:,1])
auc_score2 = roc_auc_score(y_test, pred_proba2[:,1])
# plot roc curves
plt.plot(fpr1, tpr1, linestyle='--',shade='orange', label='Logistic Regression')
plt.plot(fpr2, tpr2, linestyle='--',shade='inexperienced', label='Random Forest Classifier')
plt.plot(random_fpr, random_tpr, linestyle='--', shade='blue')
plt.title('ROC curve')
plt.xlabel('False Constructive Price')
plt.ylabel('True Constructive Price')
plt.legend()
plt.present();
Hier dreht sich alles um die AUC-ROC-Kurve. Ich hoffe, Sie fanden diesen Weblog sowohl interessant als auch verstรคndlich. Danke schรถn.