Die Erkennung von Kreditkartenbetrug ist eine Plage, der alle Finanzinstitute ausgesetzt sind. Im Allgemeinen ist die Betrugserkennung eine große Herausforderung, da Betrüger neue und modern Methoden zur Betrugserkennung entwickeln. Daher ist es schwierig, ein Muster zu finden, das wir erkennen können. Im Diagramm sehen beispielsweise alle Symbole gleich aus, aber es gibt ein Image, das sich geringfügig von den anderen unterscheidet, und wir haben dieses ausgewählt. Kannst du es erkennen?

Hier ist es:

Bild vom Autor

Lassen Sie mich vor diesem Hintergrund einen Plan für heute vorstellen und erläutern, was Sie im Zusammenhang mit unserem Anwendungsfall „Erkennung von Kreditkartenbetrug“ lernen werden:

1. Was ist ein Datenungleichgewicht?

2. Mögliche Ursachen für Datenungleichgewichte

3. Warum ist Klassenungleichgewicht ein Downside beim maschinellen Lernen?

4. Kurze Auffrischung zum Random-Forest-Algorithmus

5. Verschiedene Stichprobenmethoden zum Umgang mit Datenungleichgewichten

6. Vergleich, welche Methode in unserem Kontext intestine funktioniert, anhand einer praktischen Demonstration mit Python

7. Geschäftserkenntnisse darüber, welches Modell Sie wählen sollten und warum?

Da die Anzahl betrügerischer Transaktionen nicht sehr groß ist, müssen wir in den meisten Fällen mit Daten arbeiten, die im Vergleich zu Betrugsfällen typischerweise viele Nicht-Betrugsfälle aufweisen. In der Fachsprache wird ein solcher Datensatz als „unausgeglichene Daten“ bezeichnet. Dennoch ist es wichtig, Betrugsfälle aufzudecken, da nur eine einzige betrügerische Transaktion den Banken/Finanzinstituten Verluste in Millionenhöhe verursachen kann. Lassen Sie uns nun genauer untersuchen, was ein Datenungleichgewicht ist.

Wir werden den Kreditkartenbetrugsdatensatz von berücksichtigen https://www.kaggle.com/mlg-ulb/creditcardfraud (Open-Knowledge-Lizenz).

Formal bedeutet dies, dass die Verteilung der Stichproben auf verschiedene Klassen ungleich ist. In unserem Fall des binären Klassifizierungsproblems gibt es zwei Klassen

a) Mehrheitsklasse – die nicht betrügerischen/echten Transaktionen

b) Minderheitenklasse – die betrügerischen Transaktionen

Im betrachteten Datensatz ist die Klassenverteilung wie folgt (Tabelle 1):

Tabelle 1: Klassenverteilung (nach Autor)

Wie wir beobachten können, ist der Datensatz stark unausgewogen, da nur 0,17 % der Beobachtungen in die Kategorie „Betrug“ fallen.

Es kann zwei Hauptursachen für ein Datenungleichgewicht geben:

a) Voreingenommene Stichproben-/Messfehler: Dies ist darauf zurückzuführen, dass Proben nur aus einer Klasse oder aus einer bestimmten Area gesammelt werden oder dass Proben falsch klassifiziert werden. Dies kann durch eine Verbesserung der Probenahmemethoden behoben werden

b) Anwendungsfall-/Domänenmerkmal: Ein relevanteres Downside wie in unserem Fall könnte auf das Downside der Vorhersage eines seltenen Ereignisses zurückzuführen sein, das automatisch zu einer Schiefe gegenüber der Mehrheitsklasse führt, da das Auftreten einer Nebenklasse in der Praxis nicht häufig vorkommt.

Dies stellt ein Downside dar, da sich die meisten Algorithmen des maschinellen Lernens darauf konzentrieren, aus häufig auftretenden Vorkommnissen, additionally der Mehrheitsklasse, zu lernen. Dies wird als Frequenzbias bezeichnet. Bei unausgeglichenen Datensätzen funktionieren diese Algorithmen möglicherweise nicht richtig. Typischerweise sind baumbasierte Algorithmen oder Anomalieerkennungsalgorithmen nur wenige Techniken, die intestine funktionieren. Traditionell werden bei Betrugserkennungsproblemen häufig geschäftsregelbasierte Methoden eingesetzt. Baumbasierte Methoden funktionieren intestine, da ein Baum eine regelbasierte Hierarchie erstellt, die beide Klassen trennen kann. Entscheidungsbäume neigen dazu, die Daten zu stark anzupassen. Um diese Möglichkeit auszuschließen, verwenden wir eine Ensemble-Methode. Für unseren Anwendungsfall werden wir heute den Random Forest-Algorithmus verwenden.

Random Forest funktioniert durch die Erstellung mehrerer Entscheidungsbaum-Prädiktoren und der Modus der Klassen dieser einzelnen Entscheidungsbäume ist die endgültig ausgewählte Klasse oder Ausgabe. Es ist, als würde man für die beliebteste Klasse stimmen. Beispiel: Wenn zwei Bäume vorhersagen, dass Regel 1 Betrug anzeigt, während ein anderer Baum angibt, dass Regel 1 keinen Betrug vorhersagt, dann lautet die endgültige Vorhersage gemäß dem Random-Forest-Algorithmus Betrug.

Formale Definition: Ein Zufallswald ist ein Klassifikator, der aus einer Sammlung baumstrukturierter Klassifikatoren {h(x,Θk), okay=1, …} besteht, wobei die {Θk} unabhängige, identisch verteilte Zufallsvektoren sind und jeder Baum eine Einheitsstimme abgibt für die beliebteste Klasse am Eingang x . (Quelle)

Jeder Baum hängt von einem Zufallsvektor ab, der unabhängig abgetastet wird, und alle Bäume haben eine ähnliche Verteilung. Der Generalisierungsfehler konvergiert mit zunehmender Anzahl der Bäume. In seinen Aufteilungskriterien sucht Random Forest nach dem besten Characteristic aus einer zufälligen Teilmenge von Options, und wir können auch die Variablenwichtigkeit berechnen und dementsprechend eine Characteristic-Auswahl durchführen. Die Bäume können mithilfe der Bagging-Technik gezüchtet werden, bei der Beobachtungen zufällig (ohne Ersatz) aus dem Trainingssatz ausgewählt werden können. Die andere Methode kann die zufällige Teilungsauswahl sein, bei der an jedem Knoten eine zufällige Teilung aus den Okay-besten Teilungen ausgewählt wird.

Sie können mehr darüber lesen Hier

Wir werden nun drei Stichprobenmethoden veranschaulichen, die das Datenungleichgewicht beheben können.

A) Zufällige Unterabtastung: Aus den Nicht-Betrugsbeobachtungen, additionally der Mehrheitsklasse, werden zufällige Ziehungen vorgenommen, um sie mit den Betrugsbeobachtungen, additionally der Minderheitsklasse, abzugleichen. Das bedeutet, dass wir einige Informationen aus dem Datensatz verwerfen, die möglicherweise nicht immer preferrred sind.

Abb. 1: Zufällige Unterabtastung (Bild vom Autor)

B) Zufällige Überabtastung: In diesem Fall machen wir genau das Gegenteil einer Unterstichprobe, d. h. duplizieren die Minderheitsklasse, d. h. Betrugsbeobachtungen nach dem Zufallsprinzip, um die Anzahl der Minderheitsklassen zu erhöhen, bis wir einen ausgeglichenen Datensatz erhalten. Eine mögliche Einschränkung besteht darin, dass wir mit dieser Methode viele Duplikate erstellen.

Abb. 2: Zufällige Überabtastung (Bild vom Autor)

c) SMOTE: (Artificial Minority Oversampling Approach) ist eine weitere Methode, die synthetische Daten mit KNN verwendet, anstatt doppelte Daten zu verwenden. Jedes Minderheitenklassenbeispiel wird zusammen mit seinen k-nächsten Nachbarn berücksichtigt. Dann werden entlang der Liniensegmente, die beliebige/alle Minderheitsklassenbeispiele und k-nächste Nachbarn verbinden, synthetische Beispiele erstellt. Dies ist in der folgenden Abbildung 3 dargestellt:

Abb. 3: SMOTE (Bild vom Autor)

Bei alleiniger Überabtastung wird die Entscheidungsgrenze kleiner, während wir mit SMOTE größere Entscheidungsbereiche erstellen können, wodurch sich die Likelihood erhöht, die Minderheitsklasse besser zu erfassen.

Eine mögliche Einschränkung besteht darin, dass, wenn die Minderheitsklasse, d. h. betrügerische Beobachtungen, über die Daten verteilt und nicht eindeutig ist, die Verwendung der nächsten Nachbarn zur Schaffung weiterer Betrugsfälle zu Rauschen in den Daten führt, was zu einer Fehlklassifizierung führen kann.

Einige der Metriken, die zur Beurteilung der Leistung eines Modells nützlich sind, sind unten aufgeführt. Diese Metriken geben Aufschluss darüber, wie intestine/wie genau das Modell in der Lage ist, die Zielvariable(n) vorherzusagen/zu klassifizieren:

Abb. 3: Klassifizierungsmatrix (Bild vom Autor)

· TP (Richtig positiv)/TN (Richtig negativ) sind die Fälle korrekter Vorhersagen, d. h. die Vorhersage von Betrugsfällen als Betrug (TP) und die Vorhersage von Nicht-Betrugsfällen als Nicht-Betrug (TN)

· FP (Falsch positiv) sind Fälle, bei denen es sich tatsächlich nicht um Betrug handelt, die das Modell jedoch als Betrug vorhersagt

· FN (False Unfavourable) sind Fälle, bei denen es sich tatsächlich um Betrug handelt, bei denen es sich jedoch laut Modellprognose um keinen Betrug handelt

Präzision = TP / (TP + FP): Präzision misst, wie genau das Modell Betrug erfassen kann, dh wie viele der insgesamt vorhergesagten Betrugsfälle sich tatsächlich als Betrug herausstellten.

Recall = TP/ (TP+FN): Recall misst aus allen tatsächlichen Betrugsfällen, wie viele das Modell korrekt als Betrug vorhersagen konnte. Dies ist hier eine wichtige Kennzahl.

Genauigkeit = (TP +TN)/(TP+FP+FN+TN): Misst, wie viele Mehrheits- und Minderheitsklassen korrekt klassifiziert werden konnten.

F-Rating = 2*TP/ (2*TP + FP +FN) = 2* Precision *Recall/ (Precision *Recall) ; Dies ist ein Gleichgewicht zwischen Präzision und Erinnerung. Beachten Sie, dass Präzision und Erinnerung in einem umgekehrten Zusammenhang stehen. Daher ist der F-Rating ein gutes Maß, um ein Gleichgewicht zwischen beiden zu erreichen.

Zunächst trainieren wir das Random-Forest-Modell mit einigen Standardfunktionen. Bitte beachten Sie, dass die Optimierung des Modells durch Funktionsauswahl oder Kreuzvalidierung der Einfachheit halber hier nicht berücksichtigt wurde. Posten Sie, dass wir das Modell mit Unterabtastung, Überabtastung und dann SMOTE trainieren. Die folgende Tabelle veranschaulicht die Verwirrungsmatrix zusammen mit den Präzisions-, Rückruf- und Genauigkeitsmetriken für jede Methode.

Tabelle 2: Vergleich der Modellergebnisse (nach Autor)

A) Keine Interpretation der Probenahmeergebnisse: Ohne Stichproben können wir 76 betrügerische Transaktionen erfassen. Obwohl die Gesamtgenauigkeit 97 % beträgt, liegt der Rückruf bei 75 %. Das bedeutet, dass es eine ganze Reihe betrügerischer Transaktionen gibt, die unser Modell nicht erfassen kann.

Nachfolgend finden Sie den Code, der verwendet werden kann:

# Coaching the mannequin
from sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier(n_estimators=10,criterion='entropy', random_state=0)
classifier.match(x_train,y_train)

# Predict Y on the take a look at set
y_pred = classifier.predict(x_test)

# Get hold of the outcomes from the classification report and confusion matrix
from sklearn.metrics import classification_report, confusion_matrix

print('Classifcation report:n', classification_report(y_test, y_pred))
conf_mat = confusion_matrix(y_true=y_test, y_pred=y_pred)
print('Confusion matrix:n', conf_mat)

B) Interpretation der Ergebnisse der Unterabtastung: Bei Unterabtastung ist das Modell zwar in der Lage, 90 Betrugsfälle mit deutlich verbesserter Erinnerung zu erfassen, die Genauigkeit und Präzision sinkt jedoch drastisch. Dies liegt daran, dass die Zahl der Fehlalarme phänomenal zugenommen hat und das Modell viele echte Transaktionen bestraft.

Codeausschnitt mit Unterabtastung:

# That is the pipeline module we want from imblearn
from imblearn.under_sampling import RandomUnderSampler
from imblearn.pipeline import Pipeline

# Outline which resampling technique and which ML mannequin to make use of within the pipeline
resampling = RandomUnderSampler()
mannequin = RandomForestClassifier(n_estimators=10,criterion='entropy', random_state=0)

# Outline the pipeline,and mix sampling technique with the RF mannequin
pipeline = Pipeline((('RandomUnderSampler', resampling), ('RF', mannequin)))

pipeline.match(x_train, y_train)
predicted = pipeline.predict(x_test)

# Get hold of the outcomes from the classification report and confusion matrix
print('Classifcation report:n', classification_report(y_test, predicted))
conf_mat = confusion_matrix(y_true=y_test, y_pred=predicted)
print('Confusion matrix:n', conf_mat)

C) Interpretation der Oversampling-Ergebnisse: Die Oversampling-Methode weist die höchste Präzision und Genauigkeit auf und der Rückruf ist mit 81 % ebenfalls intestine. Wir konnten sechs weitere Betrugsfälle erfassen und auch die Zahl der Fehlalarme ist ziemlich gering. Insgesamt ist dieses Modell aus Sicht aller Parameter ein gutes Modell.

Oversampling-Codeausschnitt:

# That is the pipeline module we want from imblearn
from imblearn.over_sampling import RandomOverSampler

# Outline which resampling technique and which ML mannequin to make use of within the pipeline
resampling = RandomOverSampler()
mannequin = RandomForestClassifier(n_estimators=10,criterion='entropy', random_state=0)

# Outline the pipeline,and mix sampling technique with the RF mannequin
pipeline = Pipeline((('RandomOverSampler', resampling), ('RF', mannequin)))

pipeline.match(x_train, y_train)
predicted = pipeline.predict(x_test)

# Get hold of the outcomes from the classification report and confusion matrix
print('Classifcation report:n', classification_report(y_test, predicted))
conf_mat = confusion_matrix(y_true=y_test, y_pred=predicted)
print('Confusion matrix:n', conf_mat)

d) SMOTE: Smote verbessert die Oversampling-Methode weiter, indem drei weitere Betrügereien im Netz aufgedeckt wurden, und obwohl die Falschmeldungen etwas zunehmen, ist der Rückruf mit 84 % ziemlich intestine.

SMOTE-Codeausschnitt:

# That is the pipeline module we want from imblearn

from imblearn.over_sampling import SMOTE

# Outline which resampling technique and which ML mannequin to make use of within the pipeline
resampling = SMOTE(sampling_strategy='auto',random_state=0)
mannequin = RandomForestClassifier(n_estimators=10,criterion='entropy', random_state=0)

# Outline the pipeline, inform it to mix SMOTE with the RF mannequin
pipeline = Pipeline((('SMOTE', resampling), ('RF', mannequin)))

pipeline.match(x_train, y_train)
predicted = pipeline.predict(x_test)

# Get hold of the outcomes from the classification report and confusion matrix
print('Classifcation report:n', classification_report(y_test, predicted))
conf_mat = confusion_matrix(y_true=y_test, y_pred=predicted)
print('Confusion matrix:n', conf_mat)

In unserem Anwendungsfall der Betrugserkennung ist die Erinnerung die wichtigste Kennzahl. Dies liegt daran, dass die Banken/Finanzinstitute mehr darum besorgt sind, die meisten Betrugsfälle aufzudecken, da Betrug teuer ist und sie dadurch viel Geld verlieren könnten. Selbst wenn es additionally nur wenige Fehlalarme gibt, z. B. die Kennzeichnung echter Kunden als Betrug, ist dies möglicherweise nicht allzu umständlich, da dies nur die Blockierung einiger Transaktionen bedeutet. Das Blockieren zu vieler echter Transaktionen ist jedoch ebenfalls keine praktikable Lösung. Daher können wir je nach Risikobereitschaft des Finanzinstituts entweder die einfache Oversampling-Methode oder SMOTE verwenden. Wir können auch die Parameter des Modells optimieren, um die Modellergebnisse mithilfe der Rastersuche weiter zu verbessern.

Einzelheiten zum Code finden Sie unter diesem Hyperlink Github.

Referenzen:

(1) Mythili Krishnan, Madhan Okay. Srinivasan, Erkennung von Kreditkartenbetrug: Eine Untersuchung verschiedener Stichprobenmethoden zur Lösung des Klassenungleichgewichtsproblems (2022), ResearchGate

(1) Bartosz Krawczyk, Aus unausgeglichenen Daten lernen: offene Herausforderungen und zukünftige Richtungen (2016), Springer

(2) Nitesh V. Chawla, Kevin W. Bowyer, Lawrence O. Corridor und W. Philip Kegelmeyer, SMOTE: Synthetische Minderheits-Oversampling-Technik (2002), Journal of Synthetic Intelligence Analysis

(3) Leo Breiman, Zufällige Wälder (2001), stat.berkeley.edu

(4) Jeremy Jordan, Lernen aus unausgeglichenen Daten (2018)

(5) https://trenton3983.github.io/recordsdata/initiatives/2019-07-19_fraud_detection_python/2019-07-19_fraud_detection_python.html

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert