"Im ersten Schritt wird das Geschäftsverständnis entwickelt, um sicherzustellen, dass das Data Science-Projekt die Geschäftsziele unterstützt und echten Mehrwert bietet. Hierzu gehören die klare Definition der Projektziele, das Verständnis der Anforderungen und Erwartungen der Stakeholder sowie eine Kosten-Nutzen-Analyse des Projekts.\n",
"\n",
"## Datenverständnis\n",
"Bevor mit der Modellierung begonnen werden kann, ist ein tiefes Verständnis der verfügbaren Daten notwendig. Dies umfasst die Identifikation und Sammlung aller relevanten Datenquellen, die Bewertung der Datenqualität sowie eine erste Analyse der Daten, um Muster und Zusammenhänge zu erkennen.\n",
"\n",
"## Machine Learning Strategie\n",
"In diesem Schritt wird eine Strategie für den Einsatz von Machine Learning entwickelt. Dazu gehört die Auswahl geeigneter Algorithmen, die Festlegung von Modellierungsansätzen und die Planung der erforderlichen Infrastruktur und Ressourcen.\n",
"\n",
"## Modellierung\n",
"Der Modellierungsprozess umfasst die Entwicklung und das Training von Machine Learning-Modellen basierend auf den zuvor festgelegten Strategien. Hier werden verschiedene Algorithmen angewendet und die Modelle auf Trainingsdaten angepasst, um spezifische Muster und Beziehungen in den Daten zu lernen.\n",
"\n",
"## Evaluierung\n",
"Nach der Modellierung werden die entwickelten Modelle evaluiert, um ihre Leistung zu beurteilen. Dies erfolgt durch den Einsatz verschiedener Metriken und Validierungstechniken. Ziel ist es, die Genauigkeit, Robustheit und Verallgemeinerungsfähigkeit der Modelle zu überprüfen und gegebenenfalls Optimierungen vorzunehmen.\n",
"\n",
"## Bereitstellung\n",
"Im letzten Schritt werden die Modelle in die Produktionsumgebung überführt. Dies umfasst die Implementierung, das Monitoring und die Wartung der Modelle, um sicherzustellen, dass sie zuverlässig und effizient arbeiten. Zudem werden Strategien zur kontinuierlichen Verbesserung und Anpassung der Modelle entwickelt, um den sich ändernden Geschäftsanforderungen gerecht zu werden.\n"
]
},
{
{
"attachments": {},
"attachments": {},
"cell_type": "markdown",
"cell_type": "markdown",
...
@@ -3842,8 +3865,8 @@
...
@@ -3842,8 +3865,8 @@
"version": "3.12.3"
"version": "3.12.3"
},
},
"skipNotebookInDeployment": false,
"skipNotebookInDeployment": false,
"title": "Customer Churn Prediction",
"teaser": "In diesem Praxisbeispiel können Sie mithilfe des Machine Learning Models herausfinden, wie Sie die Kundenabwanderung in der Telekommunikationsbranche präzise vorhersagen und proaktiv darauf reagieren können. ",
"teaser": "In diesem Praxisbeispiel können Sie mithilfe des Machine Learning Models herausfinden, wie Sie die Kundenabwanderung in der Telekommunikationsbranche präzise vorhersagen und proaktiv darauf reagieren können. "
"title": "Customer Churn Prediction"
},
},
"nbformat": 4,
"nbformat": 4,
"nbformat_minor": 4
"nbformat_minor": 4
...
...
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## Geschäftsverständnis
Im ersten Schritt wird das Geschäftsverständnis entwickelt, um sicherzustellen, dass das Data Science-Projekt die Geschäftsziele unterstützt und echten Mehrwert bietet. Hierzu gehören die klare Definition der Projektziele, das Verständnis der Anforderungen und Erwartungen der Stakeholder sowie eine Kosten-Nutzen-Analyse des Projekts.
## Datenverständnis
Bevor mit der Modellierung begonnen werden kann, ist ein tiefes Verständnis der verfügbaren Daten notwendig. Dies umfasst die Identifikation und Sammlung aller relevanten Datenquellen, die Bewertung der Datenqualität sowie eine erste Analyse der Daten, um Muster und Zusammenhänge zu erkennen.
## Machine Learning Strategie
In diesem Schritt wird eine Strategie für den Einsatz von Machine Learning entwickelt. Dazu gehört die Auswahl geeigneter Algorithmen, die Festlegung von Modellierungsansätzen und die Planung der erforderlichen Infrastruktur und Ressourcen.
## Modellierung
Der Modellierungsprozess umfasst die Entwicklung und das Training von Machine Learning-Modellen basierend auf den zuvor festgelegten Strategien. Hier werden verschiedene Algorithmen angewendet und die Modelle auf Trainingsdaten angepasst, um spezifische Muster und Beziehungen in den Daten zu lernen.
## Evaluierung
Nach der Modellierung werden die entwickelten Modelle evaluiert, um ihre Leistung zu beurteilen. Dies erfolgt durch den Einsatz verschiedener Metriken und Validierungstechniken. Ziel ist es, die Genauigkeit, Robustheit und Verallgemeinerungsfähigkeit der Modelle zu überprüfen und gegebenenfalls Optimierungen vorzunehmen.
## Bereitstellung
Im letzten Schritt werden die Modelle in die Produktionsumgebung überführt. Dies umfasst die Implementierung, das Monitoring und die Wartung der Modelle, um sicherzustellen, dass sie zuverlässig und effizient arbeiten. Zudem werden Strategien zur kontinuierlichen Verbesserung und Anpassung der Modelle entwickelt, um den sich ändernden Geschäftsanforderungen gerecht zu werden.
%% Cell type:markdown id: tags:
# 1. Business Understanding
# 1. Business Understanding
Test Input Kundenabwanderung ist die Entscheidung eines Kunden, eine bestimmte Unternehmensdienstleistung nicht mehr zu kaufen. Sie stellt somit das Gegenstück zur langfristigen Kundenbindung dar. Um die Kundenbindung zu fördern, müssen Unternehmen Analysen einsetzen, die frühzeitig erkennen, ob ein Kunde das Unternehmen verlassen will. So können Marketing- und Vertriebsmaßnahmen eingeleitet werden, bevor es zum eigentlichen Kundenverlust kommt. In diesem Zusammenhang beantwortet der Service konkret diese beiden Fragen: Wie hoch ist die Wahrscheinlichkeit, dass anhand historischer Daten vorhergesagt werden kann, ob ein Kunde zu einem anderen Anbieter abwandert? Welche Faktoren führen zur Kundenabwanderung?
Test Input Kundenabwanderung ist die Entscheidung eines Kunden, eine bestimmte Unternehmensdienstleistung nicht mehr zu kaufen. Sie stellt somit das Gegenstück zur langfristigen Kundenbindung dar. Um die Kundenbindung zu fördern, müssen Unternehmen Analysen einsetzen, die frühzeitig erkennen, ob ein Kunde das Unternehmen verlassen will. So können Marketing- und Vertriebsmaßnahmen eingeleitet werden, bevor es zum eigentlichen Kundenverlust kommt. In diesem Zusammenhang beantwortet der Service konkret diese beiden Fragen: Wie hoch ist die Wahrscheinlichkeit, dass anhand historischer Daten vorhergesagt werden kann, ob ein Kunde zu einem anderen Anbieter abwandert? Welche Faktoren führen zur Kundenabwanderung?
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
# 2. Daten und Datenverständnis
# 2. Daten und Datenverständnis
Zur Visualisierung und Implementierung des Dienstes wird der Datensatz eines fiktiven Telekommunikationsunternehmens verwendet. Dieser besteht aus 7.043 Zeilen. Jede Zeile beschreibt einen Kunden mit 21 Spalten. Jede Spalte definiert verschiedene Merkmale (Attribute) der Kunden. Anhand der Daten soll klassifiziert werden, ob ein Kunde das Unternehmen verlässt oder nicht. Zu diesem Zweck enthalten die historischen Daten die Zielvariable "Churn", die Auskunft darüber gibt, ob ein Kunde abgewandert ist oder nicht.ot.
Zur Visualisierung und Implementierung des Dienstes wird der Datensatz eines fiktiven Telekommunikationsunternehmens verwendet. Dieser besteht aus 7.043 Zeilen. Jede Zeile beschreibt einen Kunden mit 21 Spalten. Jede Spalte definiert verschiedene Merkmale (Attribute) der Kunden. Anhand der Daten soll klassifiziert werden, ob ein Kunde das Unternehmen verlässt oder nicht. Zu diesem Zweck enthalten die historischen Daten die Zielvariable "Churn", die Auskunft darüber gibt, ob ein Kunde abgewandert ist oder nicht.ot.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## 2.1. Import von relevanten Modulen
## 2.1. Import von relevanten Modulen
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
import pandas as pd
import pandas as pd
import numpy as np
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
import seaborn as sns
import seaborn as sns
import statsmodels.api as sm
import statsmodels.api as sm
import warnings
import warnings
import imblearn
import imblearn
from statsmodels.stats.outliers_influence import variance_inflation_factor
from statsmodels.stats.outliers_influence import variance_inflation_factor
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.linear_model import LogisticRegression
from imblearn.under_sampling import InstanceHardnessThreshold
from imblearn.under_sampling import InstanceHardnessThreshold
from sklearn import metrics
from sklearn import metrics
from sklearn.metrics import classification_report, confusion_matrix
from sklearn.metrics import classification_report, confusion_matrix
from sklearn.model_selection import train_test_split
from sklearn.model_selection import train_test_split
Die Konvertierung der TotalCharges hat zu Nullwerten geführt. Diese Nullwerte müssen korrigiert werden.
Die Konvertierung der TotalCharges hat zu Nullwerten geführt. Diese Nullwerte müssen korrigiert werden.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
# Remove zero values
# Remove zero values
# axis = 0 rows / axis = 1 columns
# axis = 0 rows / axis = 1 columns
data_no_mv = data_raw.dropna(axis=0)
data_no_mv = data_raw.dropna(axis=0)
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## 2.4. Deskriptive Analytik
## 2.4. Deskriptive Analytik
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
In diesem Teil des Notebooks soll das Datenverständnis mit Hilfe der deskriptiven Analytik berücksichtigt werden. Nach dem Entfernen der Nullwerte besteht der Datensatz aus 7032 Zeilen, von denen jeweils eine einen Kunden beschreibt, und 21 Spalten, die die Attribute des Kunden definieren. Mit Hilfe dieser Daten soll versucht werden, zu klassifizieren, ob ein Kunde abwandert oder nicht. Zu diesem Zweck enthalten die historischen Daten die Zielvariable "Churn", die Auskunft darüber gibt, ob ein Kunde abgewandert ist.
In diesem Teil des Notebooks soll das Datenverständnis mit Hilfe der deskriptiven Analytik berücksichtigt werden. Nach dem Entfernen der Nullwerte besteht der Datensatz aus 7032 Zeilen, von denen jeweils eine einen Kunden beschreibt, und 21 Spalten, die die Attribute des Kunden definieren. Mit Hilfe dieser Daten soll versucht werden, zu klassifizieren, ob ein Kunde abwandert oder nicht. Zu diesem Zweck enthalten die historischen Daten die Zielvariable "Churn", die Auskunft darüber gibt, ob ein Kunde abgewandert ist.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## 2.4.1. Kontinuierliche Merkmale
## 2.4.1. Kontinuierliche Merkmale
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
Zunächst werden die Verteilungen der kontinuierlichen Merkmale einzeln untersucht und in einem zweiten Schritt die kategorialen Merkmale in Zusammenhang mit der Zielvariablen gesetzt.
Zunächst werden die Verteilungen der kontinuierlichen Merkmale einzeln untersucht und in einem zweiten Schritt die kategorialen Merkmale in Zusammenhang mit der Zielvariablen gesetzt.
Die Korrelationsmatrix zeigt, dass die Attribute "Tenure" und "TotalCharges" eine kritische positive Korrelation von über 0,8 aufweisen. Diese Beziehung wird später im Zusammenhang mit der Multikollinearität erneut untersucht und muss entfernt werden.
Die Korrelationsmatrix zeigt, dass die Attribute "Tenure" und "TotalCharges" eine kritische positive Korrelation von über 0,8 aufweisen. Diese Beziehung wird später im Zusammenhang mit der Multikollinearität erneut untersucht und muss entfernt werden.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
### Streudiagramme mit kontinuierlichen Merkmalen und Ziel
### Streudiagramme mit kontinuierlichen Merkmalen und Ziel
Das Streudiagramm deutet darauf hin, dass Kunden im oberen linken Bereich, d. h. Kunden mit hohen monatlichen Kosten und kurzer Betriebszugehörigkeit, am ehesten abwandern.
Das Streudiagramm deutet darauf hin, dass Kunden im oberen linken Bereich, d. h. Kunden mit hohen monatlichen Kosten und kurzer Betriebszugehörigkeit, am ehesten abwandern.
Es besteht eine rein logische, lineare Beziehung zwischen der Dauer der Betriebszugehörigkeit und den in Rechnung gestellten Gesamtkosten. Je länger eine Person Kunde ist, desto mehr monatliche Beträge musste sie bereits zahlen.
Es besteht eine rein logische, lineare Beziehung zwischen der Dauer der Betriebszugehörigkeit und den in Rechnung gestellten Gesamtkosten. Je länger eine Person Kunde ist, desto mehr monatliche Beträge musste sie bereits zahlen.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## 2.4.2. Kategorische Merkmale
## 2.4.2. Kategorische Merkmale
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
### Abwanderung (Ziel)
### Abwanderung (Ziel)
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
Zunächst wird die Verteilung der Zielvariablen Churn untersucht.
Zunächst wird die Verteilung der Zielvariablen Churn untersucht.
Bei Kunden mit kurzfristigen Verträgen ist die Wahrscheinlichkeit größer, dass sie das Unternehmen verlassen, als bei Kunden mit längerfristigen Verträgen.
Bei Kunden mit kurzfristigen Verträgen ist die Wahrscheinlichkeit größer, dass sie das Unternehmen verlassen, als bei Kunden mit längerfristigen Verträgen.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
# 3. Aufbereitung der Daten
# 3. Aufbereitung der Daten
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## 3.1. Reduzieren der Kunden-ID
## 3.1. Reduzieren der Kunden-ID
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
# Removing the Customer ID, it does not add value to the model
# Removing the Customer ID, it does not add value to the model
# Dropping of dummies that also contain No phone service and No Internet service
# Dropping of dummies that also contain No phone service and No Internet service
dup_variables = ["OnlineSecurity_No internet service","OnlineBackup_No internet service", "TechSupport_No internet service","StreamingTV_No internet service","StreamingMovies_No internet service", "DeviceProtection_No internet service","MultipleLines_No phone service"]
dup_variables = ["OnlineSecurity_No internet service","OnlineBackup_No internet service", "TechSupport_No internet service","StreamingTV_No internet service","StreamingMovies_No internet service", "DeviceProtection_No internet service","MultipleLines_No phone service"]
Um ein korrektes Funktionieren der späteren Regression zu gewährleisten, darf keine Multikollinearität zwischen den Variablen bestehen. Das Vorhandensein einer solchen wird mit Hilfe der Bibliothek Statsmodel überprüft.
Um ein korrektes Funktionieren der späteren Regression zu gewährleisten, darf keine Multikollinearität zwischen den Variablen bestehen. Das Vorhandensein einer solchen wird mit Hilfe der Bibliothek Statsmodel überprüft.
Zur Lösung des Problems wird die logistische Regression verwendet. Hierfür werden die beiden Bibliotheken Statsmodels und Scikit-Learn verwendet. Die komplette Auswertung des Modells findet erst im Unterkapitel zu Scikit-Learn statt.
Zur Lösung des Problems wird die logistische Regression verwendet. Hierfür werden die beiden Bibliotheken Statsmodels und Scikit-Learn verwendet. Die komplette Auswertung des Modells findet erst im Unterkapitel zu Scikit-Learn statt.
Possibly complete quasi-separation: A fraction 0.37 of observations can be
Possibly complete quasi-separation: A fraction 0.37 of observations can be
perfectly predicted. This might indicate that there is complete
perfectly predicted. This might indicate that there is complete
quasi-separation. In this case some parameters will not be identified.
quasi-separation. In this case some parameters will not be identified.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
Das trainierte Modell zeigt statistisch nicht-signifikante Variablen an. Dies ist gegeben, wenn der Wert P>|z| größer als 0,05 ist und es sich nicht um die Konstante handelt.
Das trainierte Modell zeigt statistisch nicht-signifikante Variablen an. Dies ist gegeben, wenn der Wert P>|z| größer als 0,05 ist und es sich nicht um die Konstante handelt.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
# Removing the statistically non-significant features (P>|z|> 0.05)
# Removing the statistically non-significant features (P>|z|> 0.05)
# Statsmodel only gives the probabilities, therefore rounding is required.
# Statsmodel only gives the probabilities, therefore rounding is required.
prediction = list(map(round, y_hat))
prediction = list(map(round, y_hat))
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## 4.1. Auswertung
## 4.1. Auswertung
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
Zur Evaluation sollen mehrere Metriken verwendet werden, die komfortabler mittels Scikit-Learn erzeugt werden können. Deshalb wird das identische Modell wie mit Statsmodels nochmals in Scikit-Learn erzeugt.
Zur Evaluation sollen mehrere Metriken verwendet werden, die komfortabler mittels Scikit-Learn erzeugt werden können. Deshalb wird das identische Modell wie mit Statsmodels nochmals in Scikit-Learn erzeugt.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## Scikit-Learn
## Scikit-Learn
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
### Training und Vorhersage
### Training und Vorhersage
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
# C is needed to build the exact same model as with Statsmodels; source: https://www.kdnuggets.com/2016/06/regularization-logistic-regression.html
# C is needed to build the exact same model as with Statsmodels; source: https://www.kdnuggets.com/2016/06/regularization-logistic-regression.html
Die Genauigkeit deutet auf ein überdurchschnittliches Modell hin. Allerdings handelt es sich um einen unausgewogenen Datensatz. Daher müssen weitere Metriken analysiert werden.
Die Genauigkeit deutet auf ein überdurchschnittliches Modell hin. Allerdings handelt es sich um einen unausgewogenen Datensatz. Daher müssen weitere Metriken analysiert werden.
Höhere Genauigkeit für das Training als für den Testdatensatz. Insgesamt sind die Werte für den Test- und den Trainingsdatensatz sehr ähnlich. Daher sollte nicht von einem Overfitting oder Underfitting ausgegangen werden.
Höhere Genauigkeit für das Training als für den Testdatensatz. Insgesamt sind die Werte für den Test- und den Trainingsdatensatz sehr ähnlich. Daher sollte nicht von einem Overfitting oder Underfitting ausgegangen werden.
Präzision und Recall vermitteln ein viel realistischeres Bild des Modells. Es erreicht eine Präzision von rund 68 % und eine Wiederauffindbarkeit von 52 %. Der Recall ist für den Anwendungsfall eindeutig wichtiger und muss daher auf Kosten der Präzision verbessert werden.
Präzision und Recall vermitteln ein viel realistischeres Bild des Modells. Es erreicht eine Präzision von rund 68 % und eine Wiederauffindbarkeit von 52 %. Der Recall ist für den Anwendungsfall eindeutig wichtiger und muss daher auf Kosten der Präzision verbessert werden.
Der AUC der ROC-Kurve ergibt einen guten Wert von 0,84. Daraus lässt sich schließen, dass durch die Optimierung des Schwellenwertes Optimierungspotenzial besteht.
Der AUC der ROC-Kurve ergibt einen guten Wert von 0,84. Daraus lässt sich schließen, dass durch die Optimierung des Schwellenwertes Optimierungspotenzial besteht.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## 4.3. Interpretation
## 4.3. Interpretation
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
Zunächst sollen jedoch die Ergebnisse für das Unternehmen veranschaulicht werden und es soll geklärt werden, welche Kunden zur Abwanderung führen und welche gegen eine Abwanderung sprechen.
Zunächst sollen jedoch die Ergebnisse für das Unternehmen veranschaulicht werden und es soll geklärt werden, welche Kunden zur Abwanderung führen und welche gegen eine Abwanderung sprechen.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
# Read out regression coefficients and thus find out importance of individual attributes
# Read out regression coefficients and thus find out importance of individual attributes
weights = pd.Series(logistic_model.coef_[0],
weights = pd.Series(logistic_model.coef_[0],
index=X_train.columns.values)
index=X_train.columns.values)
weights.sort_values(ascending = False)
weights.sort_values(ascending = False)
```
```
%% Output
%% Output
InternetService_Fiber optic 3.115901
InternetService_Fiber optic 3.115901
StreamingMovies_Yes 1.439381
StreamingMovies_Yes 1.439381
PaymentMethod_Electronic check 1.310265
PaymentMethod_Electronic check 1.310265
StreamingTV_Yes 1.219198
StreamingTV_Yes 1.219198
PaperlessBilling 1.216093
PaperlessBilling 1.216093
MultipleLines_Yes 1.098867
MultipleLines_Yes 1.098867
SeniorCitizen 0.395488
SeniorCitizen 0.395488
Dependents -0.732812
Dependents -0.732812
TechSupport_Yes -0.835712
TechSupport_Yes -0.835712
PhoneService -1.207319
PhoneService -1.207319
OnlineSecurity_Yes -1.744166
OnlineSecurity_Yes -1.744166
InternetService_No -2.846463
InternetService_No -2.846463
tenure -2.924275
tenure -2.924275
Contract_One year -3.457173
Contract_One year -3.457173
Contract_Two year -6.329852
Contract_Two year -6.329852
dtype: float64
dtype: float64
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
# Graphical representation of key features that lead to churn.
# Graphical representation of key features that lead to churn.
Die drei wichtigsten Merkmale, die Kunden von der Abwanderung abhalten, sind:
Die drei wichtigsten Merkmale, die Kunden von der Abwanderung abhalten, sind:
- Die Verträge, die für zwei Jahre gekündigt werden können (Contract_Two year),
- Die Verträge, die für zwei Jahre gekündigt werden können (Contract_Two year),
- Die Zeit, die man Kunde eines Unternehmens ist (Tenure) und
- Die Zeit, die man Kunde eines Unternehmens ist (Tenure) und
- kein Abonnement für den Internetdienst (InternetService_No).
- kein Abonnement für den Internetdienst (InternetService_No).
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## 4.4. Modell-Optimierung
## 4.4. Modell-Optimierung
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
Die Recall-Rate ist als Zielmetrik zu niedrig und muss daher erhöht werden. Daher werden die Metriken bei verschiedenen Schwellenwerten der logistischen Regression analysiert.
Die Recall-Rate ist als Zielmetrik zu niedrig und muss daher erhöht werden. Daher werden die Metriken bei verschiedenen Schwellenwerten der logistischen Regression analysiert.
Ein Schwellenwert von 0,3 bietet ein besseres Ergebnis für die Anwendung. Er erhöht die Wiederauffindbarkeit auf ein zufriedenstellendes Niveau von 73,21 %, was zu Lasten der Präzision geht. Die Präzision ist jedoch vernachlässigbar.
Ein Schwellenwert von 0,3 bietet ein besseres Ergebnis für die Anwendung. Er erhöht die Wiederauffindbarkeit auf ein zufriedenstellendes Niveau von 73,21 %, was zu Lasten der Präzision geht. Die Präzision ist jedoch vernachlässigbar.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
Daraus ergeben sich die folgenden Werte:
Daraus ergeben sich die folgenden Werte:
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
# Threshold about 0,3
# Threshold about 0,3
y_test_pred = pred_proba_df.apply(lambda x: 1 if x>0.30 else 0)
y_test_pred = pred_proba_df.apply(lambda x: 1 if x>0.30 else 0)
Erwartungsgemäß steigt die Rate der fälschlicherweise als abgewandert eingestuften Kunden. Im Gegenzug steigt aber auch die Anzahl der Kunden, die korrekt als Abwanderer vorhergesagt werden (True Positives). Wie in der Hausarbeit ausgeführt, ist dies essentiell, denn im Zweifelsfall würde ein Kunde fälschlicherweise vom Serviceteam angerufen werden und diesen Anruf sogar als guten Service wahrnehmen und längerfristig an das Unternehmen binden.
Erwartungsgemäß steigt die Rate der fälschlicherweise als abgewandert eingestuften Kunden. Im Gegenzug steigt aber auch die Anzahl der Kunden, die korrekt als Abwanderer vorhergesagt werden (True Positives). Wie in der Hausarbeit ausgeführt, ist dies essentiell, denn im Zweifelsfall würde ein Kunde fälschlicherweise vom Serviceteam angerufen werden und diesen Anruf sogar als guten Service wahrnehmen und längerfristig an das Unternehmen binden.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
# 5. Deployment
# 5. Deployment
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
# Separate individual (scaled) customer
# Separate individual (scaled) customer
customer_df = X_test.iloc[896]
customer_df = X_test.iloc[896]
```
```
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
# Overview about the customer
# Overview about the customer
customer_df
customer_df
```
```
%% Output
%% Output
SeniorCitizen 0.000000
SeniorCitizen 0.000000
Dependents 0.000000
Dependents 0.000000
tenure -0.302393
tenure -0.302393
PhoneService 1.000000
PhoneService 1.000000
PaperlessBilling 0.000000
PaperlessBilling 0.000000
MultipleLines_Yes 0.000000
MultipleLines_Yes 0.000000
InternetService_Fiber optic 0.000000
InternetService_Fiber optic 0.000000
InternetService_No 1.000000
InternetService_No 1.000000
OnlineSecurity_Yes 0.000000
OnlineSecurity_Yes 0.000000
TechSupport_Yes 0.000000
TechSupport_Yes 0.000000
StreamingTV_Yes 0.000000
StreamingTV_Yes 0.000000
StreamingMovies_Yes 0.000000
StreamingMovies_Yes 0.000000
Contract_One year 0.000000
Contract_One year 0.000000
Contract_Two year 1.000000
Contract_Two year 1.000000
PaymentMethod_Electronic check 0.000000
PaymentMethod_Electronic check 0.000000
Name: 1544, dtype: float64
Name: 1544, dtype: float64
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
# execute prediction
# execute prediction
cust_pred = logistic_model.predict([customer_df])
cust_pred = logistic_model.predict([customer_df])
```
```
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
# evaluate results
# evaluate results
def check_prediction(pred):
def check_prediction(pred):
if pred[0] == 1:
if pred[0] == 1:
print("The customer will probably churn! Inform Customer Relationship Management!")
print("The customer will probably churn! Inform Customer Relationship Management!")
else:
else:
print("The customer probably will not churn.")
print("The customer probably will not churn.")
```
```
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
check_prediction(cust_pred)
check_prediction(cust_pred)
```
```
%% Output
%% Output
The customer probably will not churn.
The customer probably will not churn.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
# Zusammenfassung
# Zusammenfassung
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
Das Notebook hat gezeigt, wie eine logistische Regression verwendet werden kann, um die Abwanderung von Kunden im Telekommunikationssegment vorherzusagen.
Das Notebook hat gezeigt, wie eine logistische Regression verwendet werden kann, um die Abwanderung von Kunden im Telekommunikationssegment vorherzusagen.