Einführung
Interaktionsterme sind integriert in Regressionsmodellierung um die Wirkung von zwei oder mehr unabhängigen Variablen auf die abhängige Variable zu erfassen. Manchmal wird nicht nur die einfache Beziehung zwischen den Kontrollvariablen und der Zielvariablen untersucht, sondern Interaktionsterme können in solchen Momenten sehr hilfreich sein. Diese sind auch dann nützlich, wenn die Beziehung zwischen einer unabhängigen Variable und der abhängigen Variable vom Niveau einer anderen unabhängigen Variable abhängt.
Dies impliziert natürlich, dass die Auswirkung eines Prädiktors auf die Antwortvariable vom Niveau eines anderen Prädiktors abhängt. In diesem Weblog untersuchen wir die Idee von Interaktionstermen anhand eines simulierten Szenarios: Wir sagen anhand ihres früheren Verhaltens immer wieder vorher, wie viel Zeit Benutzer in einem E-Commerce-Kanal verbringen würden.
Lernziele
- Verstehen Sie, wie Interaktionsterme die Vorhersagekraft von Regressionsmodellen verbessern.
- Lernen Sie, Interaktionsbegriffe zu erstellen und zu integrieren in einem Regressionsanalyse.
- Analysieren Sie den Einfluss von Interaktionstermen auf die Modellgenauigkeit anhand eines praktischen Beispiels.
- Visualisieren und interpretieren Sie die Auswirkungen von Interaktionstermen auf vorhergesagte Ergebnisse.
- Gewinnen Sie Einblicke darüber, wann und warum Interaktionsbegriffe in realen Szenarien angewendet werden sollten.
Dieser Artikel erschien im Rahmen der Information Science-Blogathon.
Die Grundlagen der Interaktionsbegriffe verstehen
Im wirklichen Leben funktionieren Variablen nicht isoliert von den anderen. Daher sind die realen Modelle viel komplexer als die, die wir im Unterricht lernen. Beispielsweise ist die Auswirkung der Navigationsaktionen des Endbenutzers, wie das Hinzufügen von Artikeln zu einem Einkaufswagen, auf die auf einer E-Commerce-Plattform verbrachte Zeit unterschiedlich, wenn der Benutzer die Artikel zu einem Einkaufswagen hinzufügt und kauft. Das Hinzufügen von Interaktionstermen als Variablen zu einem Regressionsmodell ermöglicht es daher, diese Schnittpunkte zu berücksichtigen und so die Eignung des Modells für den Zweck zu verbessern, indem die den beobachteten Daten zugrunde liegenden Muster erklärt und/oder zukünftige Werte der abhängigen Variablen vorhergesagt werden.
Mathematische Darstellung
Betrachten wir ein lineares Regressionsmodell mit zwei unabhängigen Variablen, X1 und X2:
Y = β0 + β1X1 + β2X2 + ϵ,
wobei Y die abhängige Variable, β0 der Achsenabschnitt, β1 und β2 die Koeffizienten für die unabhängigen Variablen X1 bzw. X2 und ϵ der Fehlerterm ist.
Hinzufügen eines Interaktionsterms
Um einen Interaktionsterm zwischen X1 und X2 einzubeziehen, führen wir eine neue Variable X1⋅X2 ein:
Y = β0 + β1X1 + β2X2 + β3(X1⋅X2) + ϵ,
wobei β3 den Wechselwirkungseffekt zwischen X1 und X2 darstellt. Der Time period X1⋅X2 ist das Produkt der beiden unabhängigen Variablen.
Wie beeinflussen Interaktionsterme Regressionskoeffizienten?
- β0: Der Achsenabschnitt, der den erwarteten Wert von Y darstellt, wenn alle unabhängigen Variablen Null sind.
- β1: Die Auswirkung von X1 auf Y, wenn X2 Null ist.
- β2: Die Auswirkung von X2 auf Y, wenn X1 Null ist.
- β3: Die Änderung der Wirkung von X1 auf Y bei einer Änderung von X2 um eine Einheit oder gleichwertig die Änderung der Wirkung von X2 auf Y bei einer Änderung von X1 um eine Einheit.
Beispiel: Benutzeraktivität und Verweildauer
Lassen Sie uns zunächst einen simulierten Datensatz erstellen, um das Benutzerverhalten in einem On-line-Store darzustellen. Die Daten bestehen aus:
- zum Warenkorb hinzugefügt: Gibt an, ob ein Benutzer Produkte in seinen Einkaufswagen gelegt hat (1 für „hinzugefügt“ und 0 für „nicht hinzugefügt“).
- gekauft: Ob der Benutzer einen Kauf abgeschlossen hat oder nicht (1 für Abschluss oder 0 für Nichtabschluss).
- aufgewendete Zeit: Die Zeit, die ein Benutzer auf einer E-Commerce-Plattform verbracht hat. Unser Ziel ist es, die Dauer des Besuchs eines Benutzers in einem On-line-Store vorherzusagen, indem wir analysieren, ob er Produkte in seinen Warenkorb legt und eine Transaktion abschließt.
# import libraries
import pandas as pd
import numpy as np
# Generate artificial knowledge
def generate_synthetic_data(n_samples=2000):
np.random.seed(42)
added_in_cart = np.random.randint(0, 2, n_samples)
bought = np.random.randint(0, 2, n_samples)
time_spent = 3 + 2*bought + 2.5*added_in_cart + 4*bought*added_in_cart + np.random.regular(0, 1, n_samples)
return pd.DataFrame({'bought': bought, 'added_in_cart': added_in_cart, 'time_spent': time_spent})
df = generate_synthetic_data()
df.head()
Ausgabe:
Simuliertes Szenario: Nutzerverhalten auf einer E-Commerce-Plattform
Als nächsten Schritt bauen wir zunächst eine gewöhnliche kleinste Quadrate Regressionsmodell unter Berücksichtigung dieser Marktaktionen, aber ohne Berücksichtigung ihrer Interaktionseffekte. Unsere Hypothesen lauten wie folgt: (Hypothese 1) Es gibt einen Effekt der auf der Web site verbrachten Zeit, wobei jede Aktion separat ausgeführt wird. Nun werden wir ein zweites Modell erstellen, das den Interaktionsterm zwischen dem Hinzufügen von Produkten in den Einkaufswagen und dem Tätigen eines Kaufs enthält.
Dies hilft uns dabei, die Auswirkungen dieser Aktionen einzeln oder kombiniert auf die auf der Web site verbrachte Zeit auszugleichen. Dies legt nahe, dass wir herausfinden möchten, ob Benutzer, die sowohl Produkte in den Warenkorb legen als auch einen Kauf tätigen, mehr Zeit auf der Web site verbringen als die Zeit, die sie verbringen, wenn jedes Verhalten einzeln betrachtet wird.
Modell ohne Interaktionsterm
Nach der Erstellung des Modells wurden die folgenden Ergebnisse festgestellt:
- Mit einem mittlerer quadrierter Fehler (MSE) von 2,11, das Modell ohne den Interaktionsterm erklärt etwa 80 % (Check-R-Quadrat) und 82 % (Trainings-R-Quadrat) der Varianz in der aufgewendeten Zeit. Dies zeigt, dass die Vorhersagen der aufgewendeten Zeit im Durchschnitt 2,11 Quadrateinheiten von der tatsächlich aufgewendeten Zeit abweichen. Obwohl dieses Modell verbessert werden kann, ist es einigermaßen genau.
- Darüber hinaus zeigt die folgende Grafik, dass das Modell zwar recht intestine funktioniert, aber dennoch viel Raum für Verbesserungen besteht, insbesondere im Hinblick auf die Erfassung höherer Werte für die aufgewendete Zeit.
# Import libraries
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
import statsmodels.api as sm
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
# Mannequin with out interplay time period
X = df(('bought', 'added_in_cart'))
y = df('time_spent')
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Add a continuing for the intercept
X_train_const = sm.add_constant(X_train)
X_test_const = sm.add_constant(X_test)
mannequin = sm.OLS(y_train, X_train_const).match()
y_pred = mannequin.predict(X_test_const)
# Calculate metrics for mannequin with out interplay time period
train_r2 = mannequin.rsquared
test_r2 = r2_score(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
print("Mannequin with out Interplay Time period:")
print('Coaching R-squared Rating (%):', spherical(train_r2 * 100, 4))
print('Check R-squared Rating (%):', spherical(test_r2 * 100, 4))
print("MSE:", spherical(mse, 4))
print(mannequin.abstract())
# Perform to plot precise vs predicted
def plot_actual_vs_predicted(y_test, y_pred, title):
plt.determine(figsize=(8, 4))
plt.scatter(y_test, y_pred, edgecolors=(0, 0, 0))
plt.plot((y_test.min(), y_test.max()), (y_test.min(), y_test.max()), 'k--', lw=2)
plt.xlabel('Precise')
plt.ylabel('Predicted')
plt.title(title)
plt.present()
# Plot with out interplay time period
plot_actual_vs_predicted(y_test, y_pred, 'Precise vs Predicted Time Spent (With out Interplay Time period)')
Ausgabe:
Modell mit einem Interaktionsterm
- Eine bessere Anpassung des Modells an den Interaktionsterm ergibt sich aus der Streudiagramm mit dem Interaktionsterm, der prognostizierte Werte anzeigt, die wesentlich näher an den tatsächlichen Werten liegen.
- Das Modell erklärt einen viel größeren Teil der Varianz in der mit dem Interaktionsterm verbrachten Zeit, wie der höhere R-Quadrat-Wert des Assessments (von 80,36 % auf 90,46 %) zeigt.
- Die Vorhersagen des Modells mit dem Interaktionsterm sind genauer, was durch den niedrigeren MSE (von 2,11 auf 1,02) belegt wird.
- Die engere Ausrichtung der Punkte an der Diagonalen, insbesondere bei höheren Werten von time_spent, weist auf eine bessere Anpassung hin. Der Interaktionsterm hilft auszudrücken, wie sich Benutzeraktionen insgesamt auf die aufgewendete Zeit auswirken.
# Add interplay time period
df('purchased_added_in_cart') = df('bought') * df('added_in_cart')
X = df(('bought', 'added_in_cart', 'purchased_added_in_cart'))
y = df('time_spent')
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Add a continuing for the intercept
X_train_const = sm.add_constant(X_train)
X_test_const = sm.add_constant(X_test)
model_with_interaction = sm.OLS(y_train, X_train_const).match()
y_pred_with_interaction = model_with_interaction.predict(X_test_const)
# Calculate metrics for mannequin with interplay time period
train_r2_with_interaction = model_with_interaction.rsquared
test_r2_with_interaction = r2_score(y_test, y_pred_with_interaction)
mse_with_interaction = mean_squared_error(y_test, y_pred_with_interaction)
print("nModel with Interplay Time period:")
print('Coaching R-squared Rating (%):', spherical(train_r2_with_interaction * 100, 4))
print('Check R-squared Rating (%):', spherical(test_r2_with_interaction * 100, 4))
print("MSE:", spherical(mse_with_interaction, 4))
print(model_with_interaction.abstract())
# Plot with interplay time period
plot_actual_vs_predicted(y_test, y_pred_with_interaction, 'Precise vs Predicted Time Spent (With Interplay Time period)')
# Print comparability
print("nComparison of Fashions:")
print("R-squared with out Interplay Time period:", spherical(r2_score(y_test, y_pred)*100,4))
print("R-squared with Interplay Time period:", spherical(r2_score(y_test, y_pred_with_interaction)*100,4))
print("MSE with out Interplay Time period:", spherical(mean_squared_error(y_test, y_pred),4))
print("MSE with Interplay Time period:", spherical(mean_squared_error(y_test, y_pred_with_interaction),4))
Ausgabe:
Vergleich der Modellleistung
- Die Modellvorhersagen ohne den Interaktionsterm werden durch die blauen Punkte dargestellt. Wenn die tatsächlich aufgewendeten Zeitwerte höher sind, liegen diese Punkte weiter von der Diagonalen entfernt.
- Die Modellvorhersagen mit dem Interaktionsterm werden durch die roten Punkte dargestellt. Das Modell mit dem Interaktionsterm liefert genauere Vorhersagen. Insbesondere bei höheren Werten für die tatsächlich aufgewendete Zeit, da diese Punkte näher an der Diagonalen liegen.
# Examine mannequin with and with out interplay time period
def plot_actual_vs_predicted_combined(y_test, y_pred1, y_pred2, title1, title2):
plt.determine(figsize=(10, 6))
plt.scatter(y_test, y_pred1, edgecolors="blue", label=title1, alpha=0.6)
plt.scatter(y_test, y_pred2, edgecolors="pink", label=title2, alpha=0.6)
plt.plot((y_test.min(), y_test.max()), (y_test.min(), y_test.max()), 'k--', lw=2)
plt.xlabel('Precise')
plt.ylabel('Predicted')
plt.title('Precise vs Predicted Person Time Spent')
plt.legend()
plt.present()
plot_actual_vs_predicted_combined(y_test, y_pred, y_pred_with_interaction, 'Mannequin With out Interplay Time period', 'Mannequin With Interplay Time period')
Ausgabe:
Abschluss
Die Leistungsverbesserung des Modells durch den Interaktionsterm zeigt, dass das Hinzufügen von Interaktionstermen zu Ihrem Modell manchmal dessen Bedeutung steigern kann. Dieses Beispiel zeigt, wie Interaktionsterme zusätzliche Informationen erfassen können, die allein aus den Haupteffekten nicht ersichtlich sind. In der Praxis kann die Berücksichtigung von Interaktionstermen in Regressionsmodellen möglicherweise zu genaueren und aufschlussreicheren Vorhersagen führen.
In diesem Weblog haben wir zunächst einen synthetischen Datensatz generiert, um das Benutzerverhalten auf einer E-Commerce-Plattform zu simulieren. Anschließend haben wir zwei Regressionsmodelle erstellt: eines ohne Interaktionsterme und eines mit Interaktionstermen. Durch den Vergleich ihrer Leistung haben wir den erheblichen Einfluss der Interaktionsterme auf die Genauigkeit des Modells nachgewiesen.
Die wichtigsten Erkenntnisse
- Regressionsmodelle mit Interaktionstermen können helfen, die Beziehungen zwischen zwei oder mehr Variablen und der Zielvariablen besser zu verstehen, indem sie ihre kombinierten Effekte erfassen.
- Die Einbeziehung von Interaktionstermen kann die Modellleistung erheblich verbessern, wie die höheren R-Quadrat-Werte und der niedrigere MSE in diesem Handbuch belegen.
- Interaktionsbegriffe sind nicht nur theoretische Konzepte, sie können auch auf reale Szenarien angewendet werden.
Häufig gestellte Fragen
A. Es handelt sich um Variablen, die durch Multiplikation zweier oder mehrerer unabhängiger Variablen entstehen. Sie werden verwendet, um die kombinierte Auswirkung dieser Variablen auf die abhängige Variable zu erfassen. Dies kann zu einem differenzierteren Verständnis der Beziehungen in den Daten führen.
A. Sie sollten den Einsatz von IT in Betracht ziehen, wenn Sie vermuten, dass die Auswirkung einer unabhängigen Variable auf die abhängige Variable vom Niveau einer anderen unabhängigen Variable abhängt. Wenn Sie beispielsweise glauben, dass die Auswirkung des Hinzufügens von Artikeln zum Einkaufswagen auf die auf einer E-Commerce-Plattform verbrachte Zeit davon abhängt, ob der Benutzer einen Kauf tätigt. Sie sollten einen Interaktionsterm zwischen diesen Variablen einschließen.
A. Der Koeffizient eines Interaktionsterms stellt die Änderung der Auswirkung einer unabhängigen Variable auf die abhängige Variable bei einer Änderung einer anderen unabhängigen Variable um eine Einheit dar. In unserem obigen Beispiel haben wir beispielsweise einen Interaktionsterm zwischen gekauft und in den Warenkorb gelegt. Der Koeffizient gibt an, wie sich die Auswirkung des Hinzufügens von Artikeln zum Warenkorb auf die dafür aufgewendete Zeit ändert, wenn ein Kauf getätigt wird.
Die in diesem Artikel gezeigten Medien sind nicht Eigentum von Analytics Vidhya und werden nach Ermessen des Autors verwendet.