Das Bankwesen gehört zu den Glücksfällen, in denen historisch sehr viele strukturierte Daten erhoben wurden – und es zählt zu den ersten Branchen, die Data-Science-Technologien eingesetzt haben.
Wie wird Data Science im Bankwesen genutzt? Heute sind Daten der wertvollste Rohstoff dieser Branche. Data Science ist für Banken unverzichtbar, um mit der Konkurrenz Schritt zu halten, neue Kundinnen und Kunden zu gewinnen, die Loyalität bestehender Kundschaft zu steigern, effizientere datenbasierte Entscheidungen zu treffen, das Geschäft zu stärken, operative Effizienz zu erhöhen, bestehende Services/Produkte zu verbessern und neue einzuführen, die Sicherheit zu erhöhen und so am Ende mehr Umsatz zu erzielen. Es ist kein Wunder, dass ein Großteil der Nachfrage nach Data-Science-Jobs aus dem Bankwesen kommt.
Data Science ermöglicht der Bankenbranche unter anderem folgende Aufgaben:
Analyse von Investitionsrisiken
Vorhersage des Customer Lifetime Value
Kundensegmentierung
Prognose der Abwanderungsrate
Personalisierte Ansprache
Stimmungsanalyse von Kundinnen und Kunden
Virtuelle Assistenten und Chatbots
Im Folgenden schauen wir uns einen der häufigsten Data-Science-Anwendungsfälle im Bankwesen genauer an.
Data-Science-Anwendungsfall im Bankwesen: Betrug erkennen
Betrügerische Aktivitäten sind nicht nur im Bankwesen eine große Herausforderung, sondern auch in vielen anderen Bereichen wie öffentliche Verwaltung, Versicherungen, öffentlicher Sektor, Vertrieb und Gesundheitswesen. Jedes Unternehmen mit vielen Online-Transaktionen trägt ein erhebliches Betrugsrisiko. Finanzdelikte nehmen viele Formen an: betrügerische Kreditkartentransaktionen, gefälschte Schecks, Steuerhinterziehung, Geldwäsche, Cyberangriffe, Kontodiebstahl, synthetische Identitäten, Fake-Anträge und Scams.
Betrugserkennung umfasst proaktive Maßnahmen, um betrügerische Aktivitäten und finanzielle Verluste zu identifizieren und zu verhindern. Die wichtigsten Analysetechniken lassen sich in zwei Gruppen einteilen:
Künstliche Intelligenz (KI): Data Mining, Machine Learning, Deep Learning
Machine Learning ist eine tragende Säule der Betrugserkennung. Das Toolkit bietet zwei Ansätze:
Überwachte Methoden: k-nächste Nachbarn, logistische Regression, Support Vector Machines, Entscheidungsbaum, Random Forest, Zeitreihenanalyse, neuronale Netze etc.
Unüberwachte Methoden: Clusteranalyse, Linkanalyse, selbstorganisierende Karten, Hauptkomponentenanalyse, Anomalieerkennung etc.
Es gibt keinen universellen, zuverlässigen Machine-Learning-Algorithmus für die Betrugserkennung. In realen Projekten testet man mehrere Techniken oder Kombinationen daraus, berechnet die Vorhersagegenauigkeit und wählt dann den besten Ansatz aus.
Die größte Herausforderung für Systeme zur Betrugserkennung ist, sich schnell an ständig wechselnde Muster und Taktiken der Betrüger anzupassen und neue, immer ausgeklügeltere Schemata rasch aufzudecken. Betrugsfälle sind stets in der Minderheit und gut zwischen echten Transaktionen verborgen.
Datensatz vorbereiten
Wir schauen uns nun eine Machine-Learning-Implementierung zur Erkennung von Kreditkartenbetrug in der Programmiersprache Python an. Wir arbeiten mit dem Datensatz creditcard_data, einer modifizierten Stichprobe aus einem Kaggle-Datensatz zur Credit Card Fraud Detection. Die Originaldaten umfassen Transaktionen europäischer Kreditkarteninhaber innerhalb von zwei Tagen im September 2013.
Importieren wir die Daten und werfen einen kurzen Blick darauf:
import pandas as pd
creditcard_data = pd.read_csv('creditcard_data.csv', index_col=0)print(creditcard_data.info())print('\n')
pd.options.display.max_columns =len(creditcard_data)print(creditcard_data.head(3))Bereitgestellt von
Numerisch kodierte Variablen V1 bis V28, also die Hauptkomponenten aus einer PCA-Transformation. Aus Vertraulichkeitsgründen gibt es keine Hintergrundinfos zu den ursprünglichen Merkmalen.
Die Variable Amount steht für den Transaktionsbetrag.
Die Variable Class zeigt, ob die Transaktion betrügerisch war (1) oder nicht (0).
Zum Glück sind Betrugsfälle in jeder Transaktionsliste stark in der Minderheit. Machine-Learning-Algorithmen funktionieren jedoch meist am besten, wenn die Klassen im Datensatz in etwa gleich stark vertreten sind. Andernfalls gibt es zu wenig Lernsignale. Dieses Problem heißt Klassenungleichgewicht.
Betrugsanteil im Datensatz berechnen
Berechnen wir den prozentualen Anteil betrügerischer Transaktionen an allen Transaktionen in unserem Datensatz:
round(creditcard_data['Class'].value_counts()*100/len(creditcard_data)).convert_dtypes()Bereitgestellt von
Und erstellen wir eine Grafik, um Betrugs- und Nicht-Betrugsfälle zu visualisieren:
import matplotlib.pyplot as plt
import numpy as np
defprep_data(df):
X = df.iloc[:,1:28]
X = np.array(X).astype(float)
y = df.iloc[:,29]
y = np.array(y).astype(float)return X, y
defplot_data(X, y):
plt.scatter(X[y==0,0], X[y==0,1], label='Class #0', alpha=0.5, linewidth=0.15)
plt.scatter(X[y==1,0], X[y==1,1], label='Class #1', alpha=0.5, linewidth=0.15, c='r')
plt.legend()return plt.show()
X, y = prep_data(creditcard_data)
plot_data(X, y)Bereitgestellt von
SMOTE zur Daten-Balancierung einsetzen
Wir sehen, dass der Anteil betrügerischer Transaktionen sehr gering ist – ein klassischer Fall von Klassenungleichgewicht. Um das zu beheben, können wir die Daten mit der Synthetic Minority Oversampling Technique (SMOTE) ausbalancieren. Anders als beim zufälligen Oversampling erzeugt SMOTE nicht einfach exakte Kopien, sondern nutzt Eigenschaften der nächsten Nachbarn von Betrugsfällen, um neue, synthetische Stichproben zu generieren, die der Minderheitsklasse ähneln. Wenden wir SMOTE auf unsere Kreditkartendaten an:
from imblearn.over_sampling import SMOTE
method = SMOTE()
X_resampled, y_resampled = method.fit_resample(X, y)
plot_data(X_resampled, y_resampled)Bereitgestellt von
Wie man sieht, liefert SMOTE deutlich mehr Beobachtungen der Minderheitsklasse. Um das noch klarer zu machen, vergleichen wir die Ergebnisse mit den Originaldaten:
Original set:0.050001.050
dtype: int64
SMOTE:0.050001.05000
dtype: int64Bereitgestellt von
Die SMOTE-Methode hat unsere Daten also komplett ausbalanciert; die Minderheitsklasse ist nun genauso groß wie die Mehrheitsklasse.
Wir kehren gleich zur praktischen Anwendung von SMOTE zurück. Zunächst betrachten wir aber wieder die Originaldaten und versuchen, Betrugsfälle zu erkennen. Auf dem „Old-School“-Weg definieren wir Regeln, um Betrug zu fassen – etwa ungewöhnliche Ortsangaben oder verdächtig häufige Transaktionen. Die Idee: Schwellwerte auf Basis einfacher Statistiken (oft Mittelwerte) festlegen und diese auf unsere Features anwenden.
print(creditcard_data.groupby('Class').mean().round(3)[['V1','V3']])Bereitgestellt von
In unserem Fall setzen wir folgende Bedingungen: V1 < -3 und V3 < -5. Um die Leistung dieses Ansatzes zu bewerten, vergleichen wir die markierten Betrugsfälle mit den tatsächlichen:
creditcard_data['flag_as_fraud']= np.where(np.logical_and(creditcard_data['V1']<-3, creditcard_data['V3']<-5),1,0)print(pd.crosstab(creditcard_data['Class'], creditcard_data['flag_as_fraud'], rownames=['Actual Fraud'], colnames=['Flagged Fraud']))Bereitgestellt von
Wir haben 22 von 50 Betrugsfällen erkannt, 28 jedoch verpasst und 16 False Positives erzeugt. Schauen wir, ob Machine-Learning-Methoden diese Ergebnisse schlagen.
Wir implementieren nun eine einfache Klassifikation mit logistischer Regression auf unseren Kreditkartendaten, um Betrugsfälle zu identifizieren, und visualisieren die Ergebnisse in einer Confusion-Matrix:
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
lr = LogisticRegression()
lr.fit(X_train, y_train)
predictions = lr.predict(X_test)print(pd.crosstab(y_test, predictions, rownames=['Actual Fraud'], colnames=['Flagged Fraud']))Bereitgestellt von
Wichtig: In dieser Confusion-Matrix sehen wir weniger Beobachtungen, weil wir nur den Test-Teil des Datensatzes für die Modellbewertung verwenden, also rund 30% der Gesamtdaten.
Wir haben einen höheren Anteil an Betrugsfällen erkannt: 90% (9 von 10) gegenüber zuvor 44% (22 von 50). Zudem gibt es deutlich weniger False Positives – ein klarer Fortschritt.
Kehren wir nun zum Problem des Klassenungleichgewichts zurück und prüfen, ob sich die Vorhersage weiter verbessern lässt, wenn wir die logistische Regression mit SMOTE kombinieren. Damit das effizient in einem Schritt passiert, definieren wir eine Pipeline und lassen sie auf unseren Daten laufen:
from imblearn.pipeline import Pipeline
# Defining which resampling method and which ML model to use in the pipeline
resampling = SMOTE()
lr = LogisticRegression()
pipeline = Pipeline([('SMOTE', resampling),('Logistic Regression', lr)])
pipeline.fit(X_train, y_train)
predictions = pipeline.predict(X_test)print(pd.crosstab(y_test, predictions, rownames=['Actual Fraud'], colnames=['Flagged Fraud']))Bereitgestellt von
In unserem Fall bringt SMOTE keinen Vorteil: Wir erkennen weiterhin 90% der Betrugsfälle, haben aber leicht mehr False Positives. Der Grund: Resampling führt nicht in allen Fällen zu besseren Ergebnissen. Wenn Betrugsfälle stark über die Daten verteilt sind, sind ihre nächsten Nachbarn nicht zwingend ebenfalls Betrugsfälle – SMOTE kann dadurch einen Bias einführen.
Fazit
Als nächsten Schritt können wir die Parameter der logistischen Regression feinjustieren, um die Genauigkeit zu steigern. Statt einer einfachen Teilung in Train/Test bietet sich auch K-Fold-Cross-Validation an. Außerdem lohnt es, andere Machine-Learning-Algorithmen (z. B. Entscheidungsbaum oder Random Forest) auszuprobieren und die Ergebnisse zu vergleichen.
Wenn du tiefer in die theoretischen und technischen Aspekte der Implementierung von Betrugserkennungsmodellen einsteigen möchtest, schau dir den Kurs Fraud Detection in Python an.
Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Lerne die wichtigsten Arten von KI-Agenten kennen, wie sie mit ihrer Umgebung interagieren und wie sie in verschiedenen Branchen eingesetzt werden. Verstehe einfache reflexive, modellbasierte, zielbasierte, nutzenbasierte, lernende Agenten und mehr.
DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Erforsche Pythons match-case: eine Anleitung zu seiner Syntax, Anwendungen in Data Science und ML sowie eine vergleichende Analyse mit dem traditionellen switch-case.
Das Bankwesen gehört zu den Glücksfällen, in denen historisch sehr viele strukturierte Daten erhoben wurden – und es zählt zu den ersten Branchen, die Data-Science-Technologien eingesetzt haben.
Wie wird Data Science im Bankwesen genutzt? Heute sind Daten der wertvollste Rohstoff dieser Branche. Data Science ist für Banken unverzichtbar, um mit der Konkurrenz Schritt zu halten, neue Kundinnen und Kunden zu gewinnen, die Loyalität bestehender Kundschaft zu steigern, effizientere datenbasierte Entscheidungen zu treffen, das Geschäft zu stärken, operative Effizienz zu erhöhen, bestehende Services/Produkte zu verbessern und neue einzuführen, die Sicherheit zu erhöhen und so am Ende mehr Umsatz zu erzielen. Es ist kein Wunder, dass ein Großteil der Nachfrage nach Data-Science-Jobs aus dem Bankwesen kommt.
Data Science ermöglicht der Bankenbranche unter anderem folgende Aufgaben:
Im Folgenden schauen wir uns einen der häufigsten Data-Science-Anwendungsfälle im Bankwesen genauer an.
Data-Science-Anwendungsfall im Bankwesen: Betrug erkennen
Betrügerische Aktivitäten sind nicht nur im Bankwesen eine große Herausforderung, sondern auch in vielen anderen Bereichen wie öffentliche Verwaltung, Versicherungen, öffentlicher Sektor, Vertrieb und Gesundheitswesen. Jedes Unternehmen mit vielen Online-Transaktionen trägt ein erhebliches Betrugsrisiko. Finanzdelikte nehmen viele Formen an: betrügerische Kreditkartentransaktionen, gefälschte Schecks, Steuerhinterziehung, Geldwäsche, Cyberangriffe, Kontodiebstahl, synthetische Identitäten, Fake-Anträge und Scams.
Betrugserkennung umfasst proaktive Maßnahmen, um betrügerische Aktivitäten und finanzielle Verluste zu identifizieren und zu verhindern. Die wichtigsten Analysetechniken lassen sich in zwei Gruppen einteilen:
Machine Learning ist eine tragende Säule der Betrugserkennung. Das Toolkit bietet zwei Ansätze:
Es gibt keinen universellen, zuverlässigen Machine-Learning-Algorithmus für die Betrugserkennung. In realen Projekten testet man mehrere Techniken oder Kombinationen daraus, berechnet die Vorhersagegenauigkeit und wählt dann den besten Ansatz aus.
Die größte Herausforderung für Systeme zur Betrugserkennung ist, sich schnell an ständig wechselnde Muster und Taktiken der Betrüger anzupassen und neue, immer ausgeklügeltere Schemata rasch aufzudecken. Betrugsfälle sind stets in der Minderheit und gut zwischen echten Transaktionen verborgen.
Datensatz vorbereiten
Wir schauen uns nun eine Machine-Learning-Implementierung zur Erkennung von Kreditkartenbetrug in der Programmiersprache Python an. Wir arbeiten mit dem Datensatz creditcard_data, einer modifizierten Stichprobe aus einem Kaggle-Datensatz zur Credit Card Fraud Detection. Die Originaldaten umfassen Transaktionen europäischer Kreditkarteninhaber innerhalb von zwei Tagen im September 2013.
Importieren wir die Daten und werfen einen kurzen Blick darauf:
Der Datensatz enthält folgende Variablen:
Zum Glück sind Betrugsfälle in jeder Transaktionsliste stark in der Minderheit. Machine-Learning-Algorithmen funktionieren jedoch meist am besten, wenn die Klassen im Datensatz in etwa gleich stark vertreten sind. Andernfalls gibt es zu wenig Lernsignale. Dieses Problem heißt Klassenungleichgewicht.
Betrugsanteil im Datensatz berechnen
Berechnen wir den prozentualen Anteil betrügerischer Transaktionen an allen Transaktionen in unserem Datensatz:
Und erstellen wir eine Grafik, um Betrugs- und Nicht-Betrugsfälle zu visualisieren:
SMOTE zur Daten-Balancierung einsetzen
Wir sehen, dass der Anteil betrügerischer Transaktionen sehr gering ist – ein klassischer Fall von Klassenungleichgewicht. Um das zu beheben, können wir die Daten mit der Synthetic Minority Oversampling Technique (SMOTE) ausbalancieren. Anders als beim zufälligen Oversampling erzeugt SMOTE nicht einfach exakte Kopien, sondern nutzt Eigenschaften der nächsten Nachbarn von Betrugsfällen, um neue, synthetische Stichproben zu generieren, die der Minderheitsklasse ähneln. Wenden wir SMOTE auf unsere Kreditkartendaten an:
Wie man sieht, liefert SMOTE deutlich mehr Beobachtungen der Minderheitsklasse. Um das noch klarer zu machen, vergleichen wir die Ergebnisse mit den Originaldaten:
Die SMOTE-Methode hat unsere Daten also komplett ausbalanciert; die Minderheitsklasse ist nun genauso groß wie die Mehrheitsklasse.
Wir kehren gleich zur praktischen Anwendung von SMOTE zurück. Zunächst betrachten wir aber wieder die Originaldaten und versuchen, Betrugsfälle zu erkennen. Auf dem „Old-School“-Weg definieren wir Regeln, um Betrug zu fassen – etwa ungewöhnliche Ortsangaben oder verdächtig häufige Transaktionen. Die Idee: Schwellwerte auf Basis einfacher Statistiken (oft Mittelwerte) festlegen und diese auf unsere Features anwenden.
In unserem Fall setzen wir folgende Bedingungen: V1 < -3 und V3 < -5. Um die Leistung dieses Ansatzes zu bewerten, vergleichen wir die markierten Betrugsfälle mit den tatsächlichen:
Logistische Regression anwenden
Wir haben 22 von 50 Betrugsfällen erkannt, 28 jedoch verpasst und 16 False Positives erzeugt. Schauen wir, ob Machine-Learning-Methoden diese Ergebnisse schlagen.
Wir implementieren nun eine einfache Klassifikation mit logistischer Regression auf unseren Kreditkartendaten, um Betrugsfälle zu identifizieren, und visualisieren die Ergebnisse in einer Confusion-Matrix:
Wichtig: In dieser Confusion-Matrix sehen wir weniger Beobachtungen, weil wir nur den Test-Teil des Datensatzes für die Modellbewertung verwenden, also rund 30% der Gesamtdaten.
Wir haben einen höheren Anteil an Betrugsfällen erkannt: 90% (9 von 10) gegenüber zuvor 44% (22 von 50). Zudem gibt es deutlich weniger False Positives – ein klarer Fortschritt.
Kehren wir nun zum Problem des Klassenungleichgewichts zurück und prüfen, ob sich die Vorhersage weiter verbessern lässt, wenn wir die logistische Regression mit SMOTE kombinieren. Damit das effizient in einem Schritt passiert, definieren wir eine Pipeline und lassen sie auf unseren Daten laufen:
In unserem Fall bringt SMOTE keinen Vorteil: Wir erkennen weiterhin 90% der Betrugsfälle, haben aber leicht mehr False Positives. Der Grund: Resampling führt nicht in allen Fällen zu besseren Ergebnissen. Wenn Betrugsfälle stark über die Daten verteilt sind, sind ihre nächsten Nachbarn nicht zwingend ebenfalls Betrugsfälle – SMOTE kann dadurch einen Bias einführen.
Fazit
Als nächsten Schritt können wir die Parameter der logistischen Regression feinjustieren, um die Genauigkeit zu steigern. Statt einer einfachen Teilung in Train/Test bietet sich auch K-Fold-Cross-Validation an. Außerdem lohnt es, andere Machine-Learning-Algorithmen (z. B. Entscheidungsbaum oder Random Forest) auszuprobieren und die Ergebnisse zu vergleichen.
Wenn du tiefer in die theoretischen und technischen Aspekte der Implementierung von Betrugserkennungsmodellen einsteigen möchtest, schau dir den Kurs Fraud Detection in Python an.