Vergleich von F-Test und gegenseitiger Information

Beginner

This tutorial is from open-source community. Access the source code

Einführung

In diesem Lab werden wir die Unterschiede zwischen den einvarianten F-Test-Statistiken und der gegenseitigen Information lernen. Wir werden die scikit-learn-Bibliothek verwenden, um einen F-Test und eine gegenseitige Informationsregression auf einem Datensatz durchzuführen und die Ergebnisse zu vergleichen.

Tipps für die VM

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Bibliotheken importieren

Wir beginnen, indem wir die erforderlichen Bibliotheken für dieses Lab importieren. Für dieses Lab werden wir numpy, matplotlib und scikit-learn verwenden.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.feature_selection import f_regression, mutual_info_regression

Datensatz erstellen

Wir werden einen Datensatz mit 3 Merkmalen erstellen, wobei das erste Merkmal eine lineare Beziehung zum Ziel hat, das zweite Merkmal eine nicht-lineare Beziehung zum Ziel hat und das dritte Merkmal völlig irrelevant ist. Für diesen Datensatz werden wir 1000 Stichproben erstellen.

np.random.seed(0)
X = np.random.rand(1000, 3)
y = X[:, 0] + np.sin(6 * np.pi * X[:, 1]) + 0.1 * np.random.randn(1000)

F-Test berechnen

Wir werden nun den F-Test-Wert für jedes Merkmal berechnen. Der F-Test erfasst nur die lineare Abhängigkeit zwischen Variablen. Wir werden die F-Test-Werte normalisieren, indem wir sie durch den maximalen F-Test-Wert dividieren.

f_test, _ = f_regression(X, y)
f_test /= np.max(f_test)

Gegenseitige Information berechnen

Wir werden nun den Wert der gegenseitigen Information für jedes Merkmal berechnen. Die gegenseitige Information kann jede Art von Abhängigkeit zwischen Variablen erfassen. Wir werden die Werte der gegenseitigen Information normalisieren, indem wir sie durch den maximalen Wert der gegenseitigen Information dividieren.

mi = mutual_info_regression(X, y)
mi /= np.max(mi)

Die Ergebnisse plotten

Wir werden nun die Abhängigkeit des Ziels von jedem Merkmal sowie die F-Test- und die Werte der gegenseitigen Information für jedes Merkmal plotten.

plt.figure(figsize=(15, 5))
for i in range(3):
    plt.subplot(1, 3, i + 1)
    plt.scatter(X[:, i], y, edgecolor="black", s=20)
    plt.xlabel("$x_{}$".format(i + 1), fontsize=14)
    if i == 0:
        plt.ylabel("$y$", fontsize=14)
    plt.title("F-test={:.2f}, MI={:.2f}".format(f_test[i], mi[i]), fontsize=16)
plt.show()

Zusammenfassung

In diesem Lab haben wir die Unterschiede zwischen der einvarianten F-Test-Statistik und der gegenseitigen Information kennengelernt. Wir haben einen F-Test und eine gegenseitige Informationsregression auf einem Datensatz durchgeführt und die Ergebnisse verglichen. Wir haben festgestellt, dass der F-Test nur die lineare Abhängigkeit zwischen Variablen erfasst, während die gegenseitige Information jede Art von Abhängigkeit zwischen Variablen erfassen kann.