Präzision – chatgpz.de – KI-Tools & Praxiswissen https://chatgpz.de Unabhängige Tests, Anleitungen und Hintergründe zu KI-Tools. Tue, 09 Jun 2026 05:51:28 +0000 de-DE hourly 1 https://wordpress.org/?v=6.4.2 234900186 Erhöhen Sie die Präzision von Empfehlungssystemen mit LLMs und Python https://chatgpz.de/machine-learning/erhoehen-sie-die-praezision-von-empfehlungssystemen-mit-llms-und-python/ https://chatgpz.de/machine-learning/erhoehen-sie-die-praezision-von-empfehlungssystemen-mit-llms-und-python/#respond Tue, 09 Jun 2026 05:51:27 +0000 https://chatgpz.de/machine-learning/erhoehen-sie-die-praezision-von-empfehlungssystemen-mit-llms-und-python/ [ad_1]

in der amerikanischen Kultur ist Folgendes:

„Du kannst nicht deinen Kuchen haben und ihn auch essen.“

Ich finde diesen Satz äußerst poetisch, aber auch sehr praktisch und nützlich. Die Botschaft dieses Sprichworts ist klar: Alles, was Sie erreichen, wird durch einen Kompromiss erreicht, denn alles hat seinen Preis.

Die philosophische Diskussion würde den Rahmen dieses Artikels sprengen, aber die praktischen Konsequenzen dieser Überlegungen stimmen weitgehend mit der Datenwissenschaft und Softwareentwicklung im Allgemeinen überein. Lass es mich erklären.

In der Softwareentwicklung und Datenwissenschaft gibt es kein „perfektes Design“ an sich. Derselbe Algorithmus, der für eine bestimmte Anwendung fantastisch ist, versagt bei anderen kläglich.

Denken Sie an die Kompromisse zwischen Berechnung und Speicher in den folgenden Fällen:

Es macht sehr viel Sinn, die Entfernung zwischen zwei Städten vorab zu berechnen und in einem Datensatz zu speichern, aber es macht keinen Sinn, sie während des Fluges zu berechnen. Dies liegt daran, dass Sie davon ausgehen, dass der Datensatz einigermaßen wartungsarm ist (Städte bewegen sich nicht einfach so oft) und es dumm wäre, die Entfernung zwischen New York und San Francisco jeden Bruchteil einer Sekunde zu berechnen. (Fall A)

Allerdings wäre es für einen Chatbot ebenso dumm (und wahrscheinlich unmöglich), sich alle möglichen Fragen zu merken, die ein Mensch stellen kann, und die Antwort auf diese Frage zu finden, wann immer sie gestellt wird. Dies liegt daran, dass das Drawback viel dynamischer ist und eine Berechnung „im laufenden Betrieb“ erfordert. (Fall B)

Im Fall A opfern wir Speicher und erhalten extrem schnelle Berechnungen. In Fall B verbringen wir mehr Rechenzeit, verwenden aber keinen „Abfrage“-Speicher.

Können Sie keine Rechenzeit und kein Gedächtnis bekommen? Nicht wirklich, denn du kannst deinen Kuchen nicht haben und ihn auch essen 🙂


Aber nehmen wir ein weniger offensichtliches und „trendigeres“ Beispiel. Lassen Sie uns über Massive Language Fashions (LLMs) sprechen.

LLMs sind die leistungsstärksten KI-Modelle, die wir haben, und sie basieren auf dem gesamten weltweit verfügbaren Wissen. Das sind sie auch massiv. Sie sind tatsächlich so groß, dass wir sie selten intern haben und sie normalerweise über APIs aufrufen. Allerdings gilt: API-Aufruf = Token = Kosten.

Stellen Sie sich nun vor, Sie möchten mithilfe eines intelligenten Methods das beste Restaurant für heute Abend auswählen. Sie würden ChatGPT etwa fragen: „Können Sie mir ein gutes italienisches Restaurant anbieten, das nicht superteuer, aber romantisch und in einer guten Lage ist?“

Stellen Sie sich nun vor, das GPT-Modell müsste alle Eating places im Universum erkunden und entscheiden, ob sie italienisch, nicht teuer, an einem guten Standort und in der Nähe Ihres Zuhauses sind. Im besten Fall würden Sie Millionen in Token ausgeben und wären zum Zeitpunkt der Berechnung bereits im Bett.

Allerdings wollen wir auch nicht ganz auf die ganze saftige, natürlichsprachliche Interpretations- und Informationsbeschaffungsfähigkeit der LLMs verzichten. Der Schlüssel liegt darin, dass wir, um das LLM zu nutzen und intelligente Informationen zu erhalten, nicht ständig den intelligentesten Teil der Pipeline nutzen können (das wäre so, als ob wir Ihren Kuchen hätten und ihn auch essen würden).

In diesem Artikel werde ich Ihnen ein Rezept für diese intelligenten, durch LLM verbesserten Empfehlungssysteme geben, wobei ich das Beispiel einer Restaurantempfehlung als Anwendungsfall verwende.

Die Eingabe dieses Methods ist die Beschreibung des Benutzers seines idealen Eating places in einer bestimmten Stadt und die Ausgabe ist eine Reihe empfohlener Eating places.

Fangen wir an!

1. Systemdesign

Der Kuchenspruch, den wir besprochen haben, ist in der Technik auch als Genauigkeit-Skalen-Zeit-Dreieck bekannt:

  1. Sie können anhand eines riesigen Datensatzes etwas Genaues machen, aber es wird langsam sein
  2. Sie können etwas Genaues und Schnelles erstellen, aber es lässt sich nicht intestine auf einen großen Datensatz skalieren
  3. Man kann etwas schnell machen und intestine skalieren, aber es wird nicht so genau sein.
Bild vom Autor erstellt

Natürlich möchten wir, dass unsere Ergebnisse letztendlich genau sind, daher reicht Choice 3 allein nicht aus. Allerdings können wir Choice 3 mit einem genaueren Modell zusätzlich zum ersten verfeinern. Mit anderen Worten: Choice 3 kann uns mit wenig Rechenzeit eine gute Kandidatenliste liefern und wir können mithilfe eines großen Sprachmodells die genaueste Empfehlungsliste auswählen.

Mit anderen Worten, das Design sieht so aus:

  1. Eine schnelle und einfache Suche findet die High-Okay-Eating places in der Nähe (regelbasiert, hohe Erinnerung, niedrige Präzision)
  2. Ein langsames, sehr intelligentes Massive-Language-Modell wird uns dabei helfen, basierend auf der Abfrage unter den besten Okay die besten auszuwählen. (KI-basiert, hohe Präzision)

Auf diese Weise verschwenden wir keine Zeit und kein Geld mit dem langsamen LLM, profitieren aber dennoch von deren Intelligenz, indem wir sie auf einer ausgewählten Kandidatenliste einsetzen.

Genug gejault. Beginnen wir mit dem Codieren!

2. Das Drehbuch

2.1 Das Setup

Ich habe die Drecksarbeit hinter den Kulissen für Sie erledigt 🙂

Alles ist in objektorientierter Programmierung (OOP) geschrieben, mit Skripten und einer Pipeline, die den gesamten Prozess übernimmt. Der GitHub-Ordner ist Dieses hierund um den Relaxation des Codes zu generieren, können Sie ihn klonen und diesen Importblock hier verwenden:

2.2 Datengenerierung

Bevor wir etwas empfehlen können, brauchen wir etwas, das wir empfehlen können. In einem realen System würden wir eine Restaurantdatenbank an einem S3-Standort verwenden. Für diesen Artikel generieren wir eine synthetische Model, damit das Ganze vollständig reproduzierbar und frei lauffähig ist.

Dies ist die Aufgabe des RestaurantDataGenerator Klasse drinnen datagenerator.py. Es erstellt eine reproduzierbare Tabelle von ~10.000 Eating places verteilt auf acht Städte (New York, San Francisco, Chicago, Austin, Seattle, Boston, Miami und Denver). Jedes Restaurant erhält:

– ein zufällig zusammengestelltes Title

– A Stadt und a Breiten-/Längengrad rund um das Stadtzentrum dieser Stadt beprobt (innerhalb von ca. 13 km),

– A Küchenstil (Italienisch, Japanisch, Mexikanisch, Thailändisch, Französisch, …),

– A diätetisch Profil (Allesfresser/Vegetarier/Veganer)

– ein durchschnittliche Punktzahl

– A Anzahl der Stimmen

– A Preisklasse (10 / 100 / 1000, ein durchschnittliches Ticket professional Individual in der Größenordnung).

Dieser Generator soll laufen einmal. Das Generieren der Daten ist so einfach wie:

Dieser einzelne Aufruf schreibt in die Tabelle knowledge/eating places.csvdas sieht so aus:

Perfekt, da wir nun unsere Eating places haben, wollen wir mal sehen, wie wir sie empfehlen können.

2.3 Generierung der Kandidaten

Das ist Stufe 1 des Trichters: die günstige, schnelle, regelbasierte Kandidatenliste. Der Benutzer teilt uns mit, in welcher Stadt er sich befindet, und wir behalten nur die geografisch nächstgelegenen Eating places. Der Code filtert die Tabelle nach der Stadt, berechnet die Großkreisentfernung vom Benutzer zu jedem Restaurant und identifiziert die N_DISTANCE_CANDIDATES (Standardmäßig 50).

Diese Section ist bewusst hoher Rückruf, geringe Präzision. Mit diesem Ansatz können wir den gesamten Tisch (10.000 Eating places) ohne einen einzigen API-Aufruf und ohne Token-Kosten abdecken. Natürlich machen wir hier nichts besonders Schlaues oder Ausgefallenes, aber wir filtern tatsächlich alle Daten, die für den Benutzer nicht in Frage kommen. Das allein ist eine große Sache.

Versuchen wir zum Beispiel eine echte Anfrage an die Suche:

„günstige vegane Tacos mit lebhafter Atmosphäre“ in mehreren Städten

Dies ist die Ausgabe:

Beachten Sie, dass die Auswahlliste unten keine Ahnung von „vegan“, „billig“ oder „Tacos“ hat: Sie kennt nur die Entfernung. Dies ist jedoch in Ordnung, da das Ziel dieser Section darin besteht, einen Ausgangspunkt in der richtigen Stadt zu schaffen, den der LLM in Section 2 neu einstufen wird.

Machen wir uns bereit für das LLM!

2.4 Auswahl der Kandidaten

Das ist Stufe 2das langsame, intelligente, LLM-gesteuerte, hochpräzise Ende des Trichters. Dies baut direkt auf der 50-Restaurant-Shortlist von 2.3 auf. Der LLM sieht nie die vollständige Tabelle mit 10.000 Zeilen. Es sieht immer nur den kleinen, bereits relevanten Ausschnitt, den ihm der Distanzfilter übergeben hat.

Wir kommunizieren mit dem Modell über einen kleinen OpenAI-Consumer. Der Schlüssel wird ausgelesen OPENAI_API_KEY (in der Umgebung gespeichert). Der Empfehlungsgeber, definiert als RestaurantRecommenderläuft auf der Abfrage und auf der Stadt durch RestaurantRecommender.recommender(question,metropolis):

Ein paar Dinge sind erwähnenswert:

  • Die Präzision steigt. Stufe 1 struggle ein hoher Rückruf, eine geringe Präzision: Es wurden unabhängig von der Anfrage die 50 nächstgelegenen Eating places zurückgegeben. Stufe 2 liest tatsächlich die Abfrage (günstige vegane Tacos mit lebhafter Atmosphäre), verwirft alles, was nicht passt, und gibt nur die besten 5 bis 10 mit einem ehrlichen Wert zurück fit_score.
  • Strukturierte Ausgabe mit Pydantic. Wir analysieren niemals Freiformtext. Das Modell wird gezwungen, in Kind eines Pydantic-Modells zu antworten (über strukturierte OpenAI-Ausgaben), sodass garantiert ist, dass jede Antwort mit dem Schema übereinstimmt.

Das Ausgabeschema trägt die restaurant_id Und title (von den Kandidaten), a fit_scoreWert zwischen 0 und 100 und ein Kurzschluss cause. Die Antwort wird ebenfalls mit einem freundlichen Abschluss versehen abstract. Die Durchführung des Aufrufs für unsere drei Städte ergibt zum Beispiel:

Wie Sie bemerken, ist dies viel besser als die reinen Distanz-Shortlists von 2.3. Dort struggle das nächstgelegene Restaurant in jeder Stadt eine im Wesentlichen zufällige Übereinstimmung (koreanisch, libanesisch, mexikanisch, aber vegetarisch). Hier hat das Modell das nachbestellt Dasselbe 50 Kandidaten rund um das, wonach wir eigentlich gefragt haben: vegane und mexikanische Lokale schweben mit Hoch an der Spitzefit_scoresund das Modell ist ehrlich, wenn nichts perfekt passt, indem es Teilübereinstimmungen notiert und erklärt, warum cause. Das ist die Präzision, die uns das LLM bietet, angewendet auf eine Auswahlliste, die klein genug ist, um im großen Maßstab günstig zu bleiben.

3. Ergebnisse

Gehen wir einen Schritt zurück und schauen wir uns an, was uns der zweistufige Trichter tatsächlich gebracht hat, indem wir dieselbe Anfrage in drei Städten verwenden: „günstige vegane Tacos mit lebhafter Atmosphäre“.

  • Stufe 1 liefert uns die Liste der Kandidaten. Die Distanz-Shortlists von 2.3 waren konstruktionsbedingt mit hoher Erinnerung und geringer Präzision ausgestattet.
  • Stufe 2 identifiziert die tatsächlichen Empfehlungen. Indem wir die 50 Kandidaten von Stufe 1 bis zum LLM weiterleiten, werden sie entsprechend den tatsächlich gestellten Fragen neu angeordnet.

Hier sind die endgültigen Empfehlungen, die das Modell für jede Stadt abgegeben hat:

  • New York: Goldener Löffel (vegan, 4,9) und Maison Fork (Mexikaner, im Funds) steigen mit Fitnesswerten von 90 und 85 an die Spitze auf.
  • Miami: Royal Tavern & Co. (vegan, mexikanisch, erschwinglich) führt mit 85.
  • Boston: Urbaner Löffel Und Kleines Hausbeide preisgünstige mexikanische Plätze, belegen mit 90 und 85 die ersten beiden Plätze.

In jeder Stadt bewarb das Modell die Kandidaten, die zu den veganen, billigen und mexikanisch/tacostypischen Vorstellungen passten, und struggle ehrlich, wenn es um unvollkommene Übereinstimmungen ging: Orte, die der Ernährung, aber nicht der Küche (oder umgekehrt) entsprachen, wurden als Backup mit sichtbar niedrigeren Werten behalten fit_scores.

4. Schlussfolgerungen

Danke, dass du Zeit mit mir verbringst, das bedeutet mir sehr viel. ❤ Das haben wir gemeinsam gemacht:

– Einen zweistufigen Empfehlungstrichter entwickelt, der sowohl skalierbar als auch clever ist.

– Verwendet einen günstigen, regelbasierten Distanzfilter (Stufe 1), um 10.000 Eating places auf die nächsten 50 zu reduzieren.

– Durch eine LLM-Neueinstufung (Stufe 2) wurden diese 50 Kandidaten zu den besten 5 bis 10 gemacht, mit einer ehrlichen Bewertung und Begründung für jeden.

In vielen realen Projekten erfreut sich ein Trichter wie der hier gebaute meist großer Beliebtheit. Solche Systeme sind sehr skalierbar, da das LLM sinnvoll eingesetzt wird, und clever, da wir Modelle verwenden, die den Kontext sehr effizient verstehen können.

7. Bevor Sie losfahren!

Nochmals vielen Dank für Ihre Zeit. Es bedeutet viel. Mein Title ist Piero Paialunga und ich bin dieser Typ hier:

Bild vom Autor erstellt

Ich komme ursprünglich aus Italien und habe einen Doktortitel. aus dem Universität von Cincinnatiund arbeite als Datenwissenschaftler bei The Commerce Desk in New York Metropolis. Ich schreibe darüber KI, maschinelles Lernen und die sich entwickelnde Rolle von Datenwissenschaftlern sowohl hier auf TDS als auch auf LinkedIn. Wenn Ihnen der Artikel gefallen hat und Sie mehr über maschinelles Lernen erfahren und meine Studien verfolgen möchten, können Sie:

A. Folge mir weiter Linkedinwo ich alle meine Geschichten veröffentliche
B. Folge mir weiter GitHubwo Sie meinen gesamten Code sehen können
C. Bei Fragen können Sie mir eine E-Mail senden an piero.paialunga@hotmail

[ad_2]

]]>
https://chatgpz.de/machine-learning/erhoehen-sie-die-praezision-von-empfehlungssystemen-mit-llms-und-python/feed/ 0 19129
Verwirrungsmatrix einfach gemacht: Genauigkeit, Präzision, Rückruf und F1-Rating https://chatgpz.de/machine-learning/verwirrungsmatrix-einfach-gemacht-genauigkeit-praezision-rueckruf-und-f1-rating/ https://chatgpz.de/machine-learning/verwirrungsmatrix-einfach-gemacht-genauigkeit-praezision-rueckruf-und-f1-rating/#respond Thu, 31 Jul 2025 05:42:27 +0000 https://chatgpz.de/machine-learning/verwirrungsmatrix-einfach-gemacht-genauigkeit-praezision-rueckruf-und-f1-score/ [ad_1]

Wir kümmern uns um Klassifizierungsalgorithmen In maschinellem Lernen wie logistischer Regression, Ok-Nearest-Nachbarn, unterstützen Vektorklassifizierer usw., verwenden wir keine Bewertungsmetriken wie den mittleren Absolute-Fehler (MAE), den mittleren quadratischen Fehler (MSE) oder den Stammquadrat (RMSE).

Stattdessen erstellen wir eine Verwirrungsmatrix und basierend auf der Verwirrungsmatrix, einem Klassifizierungsbericht.

In diesem Weblog wollen wir verstehen, was eine Verwirrungsmatrix ist, wie die Genauigkeit, Präzision, Rückruf und F1-Rating mithilfe der Relevanz berechnet werden und wie die relevante Metrik basierend auf den Merkmalen der Daten ausgewählt werden kann.

Um die Verwirrungsmatrix und Klassifizierungsmetriken zu verstehen, verwenden wir die Brustkrebs Wisconsin -Datensatz.

Dieser Datensatz besteht aus 569 Zeilen, und jede Zeile enthält Informationen zu verschiedenen Merkmalen eines Tumors zusammen mit seiner Diagnose, sei es bösartig (krebsartig) oder gutartig (nicht krebsartig).

Erstellen wir nun ein Klassifizierungsmodell für diese Daten, um die Tumoren anhand ihrer Merkmale zu klassifizieren.

Wir wenden nun eine logistische Regression an, um ein Modell auf diesem Datensatz zu trainieren.

Code:

import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix, classification_report
import seaborn as sns
import matplotlib.pyplot as plt

# Load the dataset 
column_names = (
    "id", "analysis", "radius_mean", "texture_mean", "perimeter_mean", "area_mean", "smoothness_mean",
    "compactness_mean", "concavity_mean", "concave_points_mean", "symmetry_mean", "fractal_dimension_mean",
    "radius_se", "texture_se", "perimeter_se", "area_se", "smoothness_se", "compactness_se", "concavity_se",
    "concave_points_se", "symmetry_se", "fractal_dimension_se", "radius_worst", "texture_worst",
    "perimeter_worst", "area_worst", "smoothness_worst", "compactness_worst", "concavity_worst",
    "concave_points_worst", "symmetry_worst", "fractal_dimension_worst"
)

df = pd.read_csv("C:/wdbc.information", header=None, names=column_names)

# Drop ID column
df = df.drop(columns=("id"))

# Encode goal: M=1 (malignant), B=0 (benign)
df("analysis") = df("analysis").map({"M": 1, "B": 0})

# Break up options and goal
X = df.drop(columns=("analysis"))
y = df("analysis")

# Practice-test cut up
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, stratify=y, random_state=42)

# Scale the options
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.rework(X_test)

# Practice logistic regression
mannequin = LogisticRegression(max_iter=10000)
mannequin.match(X_train, y_train)

# Predict
y_pred = mannequin.predict(X_test)

# Confusion Matrix and Classification Report
conf_matrix = confusion_matrix(y_test, y_pred, labels=(1, 0))  # 1 = Malignant, 0 = Benign

report = classification_report(y_test, y_pred, labels=(1, 0), target_names=("Malignant", "Benign"))

# Show outcomes
print("Confusion Matrix:n", conf_matrix)
print("nClassification Report:n", report)

# Plot Confusion Matrix
sns.heatmap(conf_matrix, annot=True, fmt="d", cmap="Purples", xticklabels=("Malignant", "Benign"), yticklabels=("Malignant", "Benign"))
plt.xlabel("Predicted")
plt.ylabel("Precise")
plt.title("Confusion Matrix")
plt.tight_layout()
plt.present()

Nachdem wir nach Anwendung der logistischen Regression auf die Daten eine Verwirrungsmatrix und einen Klassifizierungsbericht generiert haben, um die Leistung des Modells zu bewerten.

Lassen Sie uns zunächst die Verwirrungsmatrix verstehen

Bild des Autors

Aus der obigen Verwirrungsmatrix

’60‘ ‚ repräsentiert die korrekt vorhergesagte maligne Tumorenwas wir uns bezeichnen „Wahre Constructive“.

‚4‘ repräsentiert die Falsch vorhergesagte gutartige Tumoren, die tatsächlich bösartige Tumoren sindwas wir uns bezeichnen „Falsche Adverse“.

‚1‘ repräsentiert die Falsch vorhergesagte maligne Tumoren, die tatsächlich gutartige Tumoren sindwas wir uns bezeichnen „Falsches Aspekte“.

‚106‘ repräsentiert die korrekt vorhergesagte gutartige Tumoren, was wir als als bezeichnen „Wahre Adverse“.

Lassen Sie uns nun sehen, was wir mit diesen Werten machen können.

Dafür betrachten wir den Klassifizierungsbericht.

Bild des Autors

Aus dem obigen Klassifizierungsbericht können wir das sagen

Für bösartig:
– Die Präzision beträgt 0,98, was bedeutet, dass es in 98% der Fälle korrekt ist, wenn das Modell den Tumor als bösartig vorhersagt.
– Der Rückruf beträgt 0,94, was bedeutet, dass das Modell 94% aller malignen Tumoren korrekt identifiziert hat.
-F1-Rating beträgt 0,96, was sowohl die Präzision als auch den Rückruf in Einklang bringt.

Für gutartig:
– Präzision beträgt 0,96, was bedeutet, dass es in 96% der Fälle korrekt ist, wenn das Modell den Tumor als gutartig vorhersagt.
– Der Rückruf beträgt 0,99, was bedeutet, dass das Modell 99% aller gutartigen Tumoren korrekt identifiziert hat.
-F1-Rating ist 0,98.

Aus dem Bericht können wir feststellen, dass die Genauigkeit des Modells 97percentbeträgt.

Wir haben auch Makro -Durchschnitt und gewichteter Durchschnitt, sehen wir, wie diese berechnet werden.

Makro -Durchschnitt

Der Makro-Durchschnitt berechnet den Durchschnitt aller Metriken (Präzision, Rückruf und F1-Rating) in beiden Klassen, die jeder Klasse gleiches Gewicht haben, unabhängig davon, wie viele Stichproben jede Klasse enthält.

Wir verwenden den Makro -Durchschnitt, wenn wir die Leistung des Modells in allen Klassen kennenlernen möchten und Klassenstörungen ignorieren möchten.

Für diese Daten:

Bild des Autors

Gewichteter Durchschnitt

Der gewichtete Durchschnitt berechnet auch den Durchschnitt aller Metriken, verleiht der Klasse jedoch mehr Proben.

Im obigen Code haben wir verwendet test_size = 0.3Dies bedeutet, dass wir 30% zum Testen beiseite legen, was bedeutet, dass wir 171 Proben aus Daten von 569 Proben für einen Testsatz verwenden.

Der Refusionsmatrix und der Klassifizierungsbericht basieren auf diesem Testsatz.

Von 171 Proben des Testsatzes haben wir 64 maligne Tumoren und 107 gutartige Tumoren.

Lassen Sie uns nun sehen, wie dieser gewichtete Durchschnitt für alle Metriken berechnet wird.

Bild des Autors

Der gewichtete Durchschnitt gibt uns eine realistischere Leistungsmaßnahme, wenn die Klassen unausgeglichene Datensätze haben.

Wir haben jetzt eine Vorstellung von jedem Begriff im Klassifizierungsbericht und wie man das Makro und die gewichteten Durchschnittswerte berechnet.

Lassen Sie uns nun sehen, wie die Verwirrungsmatrix zur Erstellung eines Klassifizierungsberichts verwendet wird.

Im Klassifizierungsbericht haben wir unterschiedliche Metriken wie Genauigkeit, Präzision usw. und diese Metriken werden unter Verwendung der Werte in der Verwirrungsmatrix berechnet.

Aus der Verwirrungsmatrix haben wir
Wahre constructive (tp) = 60
Falsche Adverse (fn) = 4
Fehlalarme (FP) = 1
Wahre Adverse (TN) = 106

Berechnen wir nun die Klassifizierungsmetriken anhand dieser Werte.

Bild des Autors

So berechnen wir die Klassifizierungsmetriken mithilfe einer Verwirrungsmatrix.

Aber warum haben wir vier verschiedene Klassifizierungsmetriken anstelle einer Metrik wie Genauigkeit? Dies liegt daran, dass die verschiedenen Metriken unterschiedliche Stärken und Schwächen des Klassifizierers auf der Grundlage des Kontextes der Daten zeigen.

Kommen wir nun zum Wisconsin -Brustkrebs -Datensatz zurück, den wir hier verwendet haben.

Als wir ein logistisches Regressionsmodell auf diese Daten angewendet haben, haben wir eine Genauigkeit von 97% erhältlich, was uns dazu bringen kann, dass das Modell effizient ist.

Betrachten wir jedoch eine andere Metrik namens „Rückruf“, die für dieses Modell 0,94 beträgt. Dies bedeutet, dass aus allen bösartigen Tumoren, die wir im Testsatz haben, das das Modell korrekt identifizieren konnte.

Hier verpasste das Modell 6% der malignen Fälle.

In realen Szenarien, hauptsächlich Gesundheitsanwendungen wie Krebserkennung, kann dies, wenn wir einen positiven Fall verpassen, die Diagnose und Behandlung verzögern.

Damit können wir verstehen, dass wir, wenn wir eine Genauigkeit von 97percenthaben, basierend auf dem Kontext der Daten durch Berücksichtigung unterschiedlicher Metriken tiefer aussehen müssen.

Additionally, was wir jetzt tun können, sollten wir einen Rückrufwert von 1,0 anstreben, was bedeutet, dass alle malignen Tumoren korrekt identifiziert werden. Wenn wir uns jedoch auf 1,0 auf 1,0 einsetzen, fällt die Präzision ab, weil das Modell kennhaftere Tumoren als bösartig klassifizieren kann.

Wenn das Modell gutartigere Tumoren als bösartig einstuft, würde es unnötige Angst geben und möglicherweise zusätzliche Checks oder Behandlungen erfordern.

Hier sollten wir den „Rückruf“ maximieren, indem wir die „Präzision“ einigermaßen hoch halten.

Wir können dies tun, indem wir die von Klassifikatoren festgelegten Schwellenwerte ändern, um die Stichproben zu klassifizieren.

Die meisten Klassifikatoren setzen den Schwellenwert auf 0,5, und wenn wir ihn 0,3 ändern, sagen wir, dass es, selbst wenn es 30% zuversichtlich ist, als bösartig klassifizieren.

Verwenden wir nun einen benutzerdefinierten Schwellenwert von 0,3.

Code:

# Practice logistic regression
mannequin = LogisticRegression(max_iter=10000)
mannequin.match(X_train, y_train)

# Predict possibilities
y_probs = mannequin.predict_proba(X_test)(:, 1)

# Apply customized threshold
threshold = 0.3
y_pred_custom = (y_probs >= threshold).astype(int)

# Classification Report
report = classification_report(y_test, y_pred_custom, target_names=("Benign", "Malignant"))

# Confusion Matrix
conf_matrix = confusion_matrix(y_test, y_pred_custom, labels=(1, 0))

# Plot Confusion Matrix
plt.determine(figsize=(6, 4))
sns.heatmap(
    conf_matrix,
    annot=True,
    fmt="d",
    cmap="Purples",
    xticklabels=("Malignant", "Benign"),
    yticklabels=("Malignant", "Benign")
)
plt.xlabel("Predicted")
plt.ylabel("Precise")
plt.title("Confusion Matrix (Threshold = 0.3)")
plt.tight_layout()
plt.present()

Hier haben wir einen benutzerdefinierten Schwellenwert von 0,3 angewendet und eine Verwirrungsmatrix und einen Klassifizierungsbericht erstellt.

Bild des Autors

Klassifizierungsbericht:

Bild des Autors

Hier stieg die Genauigkeit auf 98% und der Rückruf für Malignant stieg auf 97% und die Präzision blieb gleich.

Wir haben zuvor darüber diskutiert, dass die Genauigkeit möglicherweise zu einer Verringerung der Genauigkeit kommt, wenn wir versuchen, den Rückruf zu maximieren, aber hier bleibt die Genauigkeit gleich. Dies hängt von den Daten ab (ob ausgewogen oder nicht), die Vorbereitung von Schritten und das Einstellen des Schwellenwerts.

Bei solchen medizinischen Datensätzen wird der Maximierungsrückruf häufig gegenüber Genauigkeit oder Präzision bevorzugt.

Wenn wir Datensätze wie Spam -Erkennung oder Betrugserkennung berücksichtigen, bevorzugen wir Präzision und wie bei der obigen Methode, versuchen wir, die Genauigkeit zu verbessern, indem wir den Schwellenwert entsprechend einstellen und den Kompromiss zwischen Präzision und Rückruf ausbalancieren.

Wir verwenden F1-Rating, wenn die Daten unausgewogen sind und wenn wir sowohl Präzision als auch erinnern, wo weder falsch constructive noch falsche Adverse ignoriert werden können.


Datensatzquelle
Wisconsin Brustkrebs Datensatz
W. W. W., O. Mangasarian, N. Avenue & W. Avenue (1993). Brustkrebs Wisconsin (diagnostisch) (Datensatz). UCI maschinelles Lernen Repository. https://doi.org/10.24432/c5dw2b.

Dieser Datensatz ist unter einem lizenziert Inventive Commons Attribution 4.0 Worldwide (CC für 4.0) Lizenz und kann frei für kommerzielle oder pädagogische Zwecke verwendet werden, solange die ursprüngliche Quelle ordnungsgemäß eingestuft wird.


Hier haben wir diskutiert, was eine Verwirrungsmatrix ist und wie sie verwendet wird, um die verschiedenen Klassifizierungsmetriken wie Genauigkeit, Präzision, Rückruf und F1-Rating zu berechnen.

Wir haben auch untersucht, wann die Klassifizierungsmetrik priorisieren soll, wobei der Wisconsin Most cancers -Datensatz als Beispiel verwendet wird, wo wir die Maximierung des Rückrufs bevorzugten.

Ich hoffe, Sie haben diesen Weblog hilfreich gefunden, um Verwirrungsmatrix und Klassifizierungsmetriken klarer zu verstehen.

Danke fürs Lesen.

[ad_2]

]]>
https://chatgpz.de/machine-learning/verwirrungsmatrix-einfach-gemacht-genauigkeit-praezision-rueckruf-und-f1-rating/feed/ 0 11211