Kundenabwanderung aufdecken: Nutzung von Klassifizierungsalgorithmen für prädiktive Erkenntnisse | von Abdulakeem Adebayo | Juni 2023

0
25


Was ist Klassifizierung beim maschinellen Lernen?

Die Klassifizierung ist eine überwachte maschinelle Lernaufgabe, bei der eine kategoriale oder diskrete Zielvariable auf der Grundlage von Eingabemerkmalen vorhergesagt wird. Es dient dazu, eine Instanz anhand ihrer Merkmale einer der vordefinierten Klassen oder Kategorien zuzuordnen. Das Ziel der Klassifizierung besteht darin, ein Vorhersagemodell zu erstellen, das Muster und Beziehungen in den Trainingsdaten lernen und diese Muster verallgemeinern kann, um Vorhersagen über unsichtbare oder zukünftige Daten zu treffen. Das Modell wird mithilfe gekennzeichneter Daten trainiert, wobei jede Instanz einer bekannten Klasse oder Bezeichnung zugeordnet ist. Zur Klassifizierung werden je nach Daten- und Problemanforderungen verschiedene Algorithmen wie logistische Regression, Entscheidungsbäume, Random Forests, SVM, Naive Bayes und KNN verwendet. Die Klassifizierung findet Anwendung in der Bilderkennung, Textkategorisierung, Betrugserkennung, Krankheitsdiagnose und vielen anderen Bereichen und liefert wertvolle Erkenntnisse und unterstützt Entscheidungsprozesse.

Zielsetzung:

In diesem Artikel möchten wir die Aufgabe der Vorhersage von Kundenabwanderungsdaten untersuchen. Das Ziel besteht darin, ein Prognosemodell zu entwickeln, das Kunden, bei denen eine Abwanderung wahrscheinlich ist, effektiv identifizieren und proaktive Maßnahmen zu deren Bindung ermöglichen kann. Ich werde die Projektstruktur skizzieren, den verwendeten Datensatz besprechen und die technischen Schritte vorstellen, die zur Erzielung einer genauen Abwanderungsvorhersage erforderlich sind.

Projektstruktur:

Das Projekt folgt einer bestimmten Reihenfolge von Phasen, um die Aufgabe der Kundenabwanderungsvorhersage zu erfüllen. Die Struktur umfasst folgende Komponenten:

1. Daten:

  • Kundenabwanderungsdaten.csv: Der Datensatz mit Kundeninformationen und Abwanderungsbezeichnungen. Der Datensatz bestand aus 21 Spalten, einschließlich einer Abwanderungsspalte.

2. Seiten:

– Churn Prediction.py: Python-Codedatei zur Implementierung des Churn-Vorhersagemodells.

– major.py: Hauptskript zum Ausführen des Projekts.

– README.md: Dokumentation mit Anweisungen und Informationen zum Projekt.

– Anforderungen.txt: Liste der Abhängigkeiten, die zum Ausführen des Codes erforderlich sind.

Technischer Inhalt:

Wir werden das Projekt nun in seine wichtigsten Phasen unterteilen und Codeausschnitte und Visualisierungen bereitstellen, um jeden Schritt zu unterstützen:

1. Datenerfassung:

  • Beschaffung von Daten aus drei Quellen, zwei für Schulungen und eine für Exams. Der erste 3000-Datensatz wurde von einem Datenbankserver abgerufen, der zweite 2000-Datensatz wurde von OneDrive abgerufen, während der letzte 2000-Datensatz von GitHub abgerufen wurde.
# Get the credentials from .env file
server = env_var.get("SERVER")
database = env_var.get("DATABASE")
username = env_var.get("USERNAME")
password = env_var.get("PASSWORD")

connection_string = f"DRIVER={{SQL Server}};SERVER={server};DATABASE={database};UID={username};PWD={password}"

# Connecting to the DB
connection = pyodbc.join(connection_string)

# Deciding on the Desk
question = "Choose * from dbo.LP2_Telco_churn_first_3000"
data_from_database = pd.read_sql(question, connection)

# Preview the information
data_from_database.head()

take a look at = pd.read_excel("C:/Customers/hp/Paperwork/GitHub/Buyer-Churn-ML-Prediction/Datasets/Telco-churn-second-2000.xlsx")

data_from_github = pd.read_csv("C:/Customers/hp/Paperwork/GitHub/Buyer-Churn-ML-Prediction/Datasets/LP2_Telco-churn-last-2000.csv")

2. Datenbereinigung:

  • Vorverarbeitung der Daten durch Behandlung fehlender Werte, Behebung von Ausreißern und Sicherstellung der Datenqualität.

3. Hypothese:

– Formulierung von Hypothesen über Faktoren, die zur Kundenabwanderung beitragen könnten. Es wurden zwei verschiedene Hypothesentests verwendet, nämlich:

Shapiro-Hypothesetest: Der Shapiro-Wilk-Check ist ein statistischer Check, mit dem beurteilt wird, ob ein bestimmter Datensatz einer Normalverteilung folgt. Es hilft festzustellen, ob genügend Beweise vorliegen, um die Nullhypothese der Normalität abzulehnen.

Testen der Chi-Quadrat-Hypothese: Der Chi-Quadrat-Check ist ein statistischer Check, der zur Untersuchung des Zusammenhangs zwischen zwei kategorialen Variablen verwendet wird. Es hilft dabei, anhand der beobachteten und erwarteten Häufigkeiten festzustellen, ob ein signifikanter Zusammenhang zwischen den Variablen besteht.

Daraus wurden vier verschiedene Hypothesen formuliert:

· Hypothese 1.

o Nullhypothese: Es gibt keinen signifikanten Einfluss der Vertragslaufzeit der Kunden und der Abwanderungsrate der Kunden

o Alternativhypothese: Es gibt einen signifikanten Einfluss der Vertragslaufzeit der Kunden und der Abwanderungsrate der Kunden

· Hypothese 2.

o Nullhypothese: Es gibt keinen signifikanten Einfluss der Vertragsart der Kunden und der Abwanderungsrate der Kunden

o Various Hypothese: Es gibt einen signifikanten Einfluss der Vertragsart der Kunden und der Abwanderungsrate der Kunden

· Hypothese 3.

o Nullhypothese: Es gibt keinen signifikanten Einfluss des Geschlechts der Kunden und der Abwanderungsrate der Kunden

o Various Hypothese: Es gibt einen signifikanten Einfluss des Geschlechts der Kunden und der Abwanderungsrate der Kunden

· Hypothese 4.

o Nullhypothese: Es hat keinen signifikanten Effekt, dass ein Unternehmen als Senior mehr Abwanderungskunden hat

o Alternativhypothese: Es hat einen erheblichen Effekt, dass ein Unternehmen als Senior mehr Abwanderungskunden hat

# Utilizing the 'churn' and 'tenure' columns in our Information
df = coaching[['Churn', 'tenure']]

# Create a contingency desk
contingency_table = pd.crosstab(df['Churn'], df['tenure'])

# Carry out the chi-square take a look at
chi2, p_value, dof, anticipated = chi2_contingency(contingency_table)

# Print the outcomes
print("Chi-square statistic:", chi2)
print("P-value:", p_value)
print("Levels of freedom:", dof)
#print("Anticipated frequencies:n", anticipated)

print()

# Interpret the outcomes
alpha = 0.05 # Significance stage
if p_value < alpha:
print("There's a statistically vital relationship between churn and tenure.")
print("We are able to reject the null speculation.")
else:
print("There isn't a statistically vital relationship between churn and tenure.")
print("We fail to reject the null speculation.")

Und für den Shapiro-Check

# Getting the Senior Citizen knowledge 
citizen = coaching.SeniorCitizen

# Substitute Values
citizen = citizen.apply(lambda x: str(x).change("No", "0"))
citizen = citizen.apply(lambda x: str(x).change("Sure", "1"))

# Convert to integer
citizen = citizen.astype(int)

# Getting the Churn knowledge
churn = coaching.Churn

# Substitute Values
churn = churn.apply(lambda x: str(x).change("No", "0"))
churn = churn.apply(lambda x: str(x).change("Sure", "1"))

# Convert to integer
churn = churn.astype(int)

# Outcomes
print(stats.shapiro(churn))
print(stats.levene(churn, citizen))

# Two pattern t-test
t_stat, p_value = stats.ttest_ind(citizen, churn)
print("T_Stat:", t_stat)
print("P_Value:", p_value)

print()

#Interpret End result
alpha = 0.05
if p_value < alpha:
print("Reject Null Speculation, P_Value is lower than 0.05, so there's a vital impact")
else:
print("Did not reject Null Speculation, P_Value is bigger than 0.05, so there isn't a vital impact")

4. Explorative Datenanalyse (EDA):

– Beantwortung relevanter Fragen durch Visualisierungen und Gewinnung von Einblicken in die Daten. Die EDA bestand aus univariater, bivariater und multivariater Analyse.

Die Fragen, die durch Visualisierungen beantwortet wurden, sind:

· Wie ist das Geschlecht verteilt?

· Wie viele Kunden sind Senioren?

· Wie viele Kunden nutzen verschiedene Arten von Dienstleistungen des Unternehmens?

· Wie viele Kunden haben das Unternehmen verlassen?

· Wie hoch ist die durchschnittliche monatliche Gebühr?

· Wie hoch ist der Durchschnitt der Gesamtkosten, die das Unternehmen erzielt hat?

Welche Artwork von Internetdiensten nutzen Kunden?

5. Characteristic-Skalierung und Engineering:

  • Transformieren und Normalisieren von Funktionen, um die Kompatibilität sicherzustellen und die Modellleistung zu verbessern. Für diesen Datensatz haben wir die Spalte „customerID“ entfernt. Dann werden für die Normalisierung ein Ordinal-Encoder und ein Standardskalierer für kategoriale bzw. numerische Spalten verwendet.
take a look at.drop(["customerID"] , axis = 1 , inplace = True) 
coaching.drop('customerID', inplace=True, axis=1)

# assigning an encoder
categorical_preprocessor = OrdinalEncoder()
numerical_preprocessor = StandardScaler()

# collaborating the processing
preprocessor = ColumnTransformer(
[
("ordinal-encoder", categorical_preprocessor, categorical_columns),
("standard_scaler", numerical_preprocessor, numerical_columns),
]
)

6. Ausbalancieren des Modells:

  • Behebung von Klassenungleichgewichten, um eine unvoreingenommene Modellschulung und -bewertung sicherzustellen. Zum Ausbalancieren des Datensatzes wurde die Oversampling-Technik SMOTE (Artificial Minority Oversampling Approach) verwendet. SMOTE (Artificial Minority Oversampling Approach) ist eine der am häufigsten verwendeten Oversampling-Methoden zur Lösung des Ungleichgewichtsproblems. Ziel ist es, die Klassenverteilung auszugleichen, indem die Beispiele von Minderheitenklassen durch deren Replikation zufällig erhöht werden. SMOTE synthetisiert neue Minderheitsinstanzen zwischen vorhandenen Minderheitsinstanzen.
from imblearn.over_sampling import SMOTE

nm = SMOTE()

data_balanced_t , target_balanced_t = nm.fit_resample(data_t , target_t)

7. Modellierung des maschinellen Lernens:

– Da es sich um ein Klassifizierungsprojekt handelt, wurden diese sechs Modelle (SVM, Random Forest, Logistic Regression, Choice Tree, KNN Classifier, HistGradientBoosting Classifier) ​​für die Abwanderungsvorhersage verwendet.

Die bereitgestellte Liste enthält mehrere beliebte Klassifizierungsalgorithmen:

1. Assist Vector Machine (SVM): SVM ist ein leistungsstarker Algorithmus, der Datenpunkte trennt, indem er eine optimale Hyperebene findet, um den Spielraum zwischen verschiedenen Klassen zu maximieren. Es kann sowohl lineare als auch nichtlineare Klassifizierungsprobleme lösen.

2. Random Forest: Random Forest ist eine Ensemble-Lernmethode, die mehrere Entscheidungsbäume kombiniert, um Vorhersagen zu treffen. Es erstellt eine Sammlung von Entscheidungsbäumen, die jeweils auf einer zufälligen Teilmenge der Daten und Merkmale trainiert werden. Die endgültige Vorhersage erfolgt durch die Aggregation der Vorhersagen einzelner Bäume.

3. Logistische Regression: Die logistische Regression ist ein binärer Klassifizierungsalgorithmus, der die Wahrscheinlichkeit eines binären Ergebnisses mithilfe einer logistischen Funktion modelliert. Es schätzt die Beziehung zwischen den unabhängigen Variablen und der abhängigen Variablen und eignet sich daher für binäre Klassifizierungsaufgaben.

4. Entscheidungsbaum: Der Entscheidungsbaum ist ein einfacher, aber leistungsstarker Algorithmus, der auf der Grundlage der Merkmalswerte ein baumartiges Entscheidungsmodell erstellt. Es teilt die Daten rekursiv basierend auf verschiedenen Merkmalen auf, um eine Baumstruktur zu erstellen, die sowohl für Klassifizierungs- als auch für Regressionsaufgaben verwendet werden kann.

5. Okay-Nearest Neighbors (KNN)-Klassifikator: Der KNN-Klassifikator ist ein nichtparametrischer Algorithmus, der Datenpunkte basierend auf der Mehrheitsstimme ihrer nächsten Nachbarn klassifiziert. Es weist einen neuen Datenpunkt der Klasse zu, die unter seinen okay nächsten Nachbarn am häufigsten vorkommt.

6. HistGradientBoosting-Klassifikator: HistGradientBoosting ist ein Gradienten-Boosting-Algorithmus, der histogrammbasierte Gradienten verwendet, um die Trainingsgeschwindigkeit und -effizienz zu verbessern. Es trainiert nacheinander schwache Modelle, wie z. B. Entscheidungsbäume, und kombiniert ihre Vorhersagen, um die endgültige Vorhersage zu treffen.

Diese Algorithmen haben unterschiedliche Stärken und Schwächen und ihre Leistung kann je nach Datensatz und Drawback variieren. Es ist wichtig, mit verschiedenen Algorithmen zu experimentieren und denjenigen auszuwählen, der für eine bestimmte Aufgabe die besten Ergebnisse liefert.

8. Modellvergleich:

  • Bewertung und Vergleich der Leistung der 6 verschiedenen verwendeten Modelle.

9. Hyperparameter-Tuning:

  • Optimierung der Modellleistung durch Optimierung von Hyperparametern.



Source link

HINTERLASSEN SIE EINE ANTWORT

Please enter your comment!
Please enter your name here