Obwohl kontinuierliche Variablen in realen Datensätzen detaillierte Informationen liefern, sind sie nicht immer die effektivste Type für die Modellierung und Interpretation. Hier kommt die Variablendiskretisierung ins Spiel.
Das Verständnis der Variablendiskretisierung ist für Studenten der Datenwissenschaft, die solide ML-Grundlagen aufbauen, und für KI-Ingenieure, die interpretierbare Systeme entwerfen, von entscheidender Bedeutung.
Zu Beginn meiner datenwissenschaftlichen Reise habe ich mich hauptsächlich auf die Optimierung von Hyperparametern, das Experimentieren mit verschiedenen Algorithmen und die Optimierung von Leistungsmetriken konzentriert.
Als ich mit Variablendiskretisierungsmethoden experimentierte, bemerkte ich, dass bestimmte ML-Modelle stabiler und interpretierbarer wurden. Deshalb habe ich beschlossen, diese Methoden in diesem Artikel zu erklären.
ist Variablendiskretisierung?
Einige arbeiten besser mit diskreten Variablen. Wenn wir beispielsweise ein Entscheidungsbaummodell anhand eines Datensatzes mit kontinuierlichen Variablen trainieren möchten, ist es besser, diese Variablen in diskrete Variablen umzuwandeln, um die Modelltrainingszeit zu verkürzen.
Bei der Variablendiskretisierung handelt es sich um den Prozess der Umwandlung kontinuierlicher Variablen in diskrete Variablen durch Erstellen Mülleimerdie eine Menge kontinuierlicher Intervalle sind.
Vorteile der Variablendiskretisierung
- Entscheidungsbäume und Naive-Bayes-Modelle funktionieren besser mit diskreten Variablen.
- Diskrete Funktionen sind leicht zu verstehen und zu interpretieren.
- Durch Diskretisierung können die Auswirkungen verzerrter Variablen und Ausreißer in Daten verringert werden.
Zusammenfassend vereinfacht die Diskretisierung die Daten und ermöglicht ein schnelleres Coaching der Modelle.
Nachteile der Variablendiskretisierung
Der Hauptnachteil der Variablendiskretisierung ist der Informationsverlust, der durch die Bildung von Bins entsteht. Wir müssen die minimale Anzahl von Behältern finden, ohne dass es zu einem erheblichen Informationsverlust kommt. Der Algorithmus kann diese Nummer selbst nicht finden. Der Benutzer muss die Anzahl der Bins als Modellhyperparameter eingeben. Anschließend findet der Algorithmus die Schnittpunkte, die der Anzahl der Bins entsprechen.
Überwachte und unüberwachte Diskretisierung
Die Hauptkategorien der Diskretisierungsmethoden sind überwachte und unbeaufsichtigte Methoden. Unüberwachte Methoden bestimmen die Grenzen der Klassen, indem sie die zugrunde liegende Verteilung der Variablen verwenden, während überwachte Methoden Grundwahrheitswerte verwenden, um diese Grenzen zu bestimmen.
Arten der Variablendiskretisierung
Wir werden die folgenden Arten der Variablendiskretisierung diskutieren.
- Diskretisierung gleicher Breite
- Gleichfrequenzdiskretisierung
- Diskretisierung beliebiger Intervalle
- Ok-bedeutet Clustering-basierte Diskretisierung
- Entscheidungsbaumbasierte Diskretisierung
Diskretisierung gleicher Breite
Wie der Identify schon sagt, erstellt diese Methode Behälter gleicher Größe. Die Breite eines Abschnitts wird berechnet, indem der Wertebereich einer Variablen geteilt wird. Xnach der Anzahl der Behälter, ok.
Breite = {Max(X) — Min(X)} / ok
Hier, ok ist ein vom Benutzer definierter Hyperparameter.
Wenn beispielsweise die Werte von X Wenn der Bereich zwischen 0 und 50 und ok=5 liegt, erhalten wir 10 als Klassenbreite und die Klassen sind 0–10, 10–20, 20–30, 30–40 und 40–50. Wenn ok=2, beträgt die Klassenbreite 25 und die Klassen sind 0–25 und 25–50. Die Bin-Breite unterscheidet sich additionally je nach Wert des ok Hyperparameter. Bei der Diskretisierung gleicher Breite wird jedem Bin eine unterschiedliche Anzahl von Datenpunkten zugeordnet. Die Behälterbreiten sind gleich.
Lassen Sie uns die Diskretisierung gleicher Breite implementieren unter Verwendung des Iris-Datensatzes. technique='uniform' In KBinsDiscretizer() Erstellt Behälter mit gleicher Breite.
# Import libraries
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.preprocessing import KBinsDiscretizer
# Load the Iris dataset
iris = load_iris()
df = pd.DataFrame(iris.information, columns=iris.feature_names)
# Choose one characteristic
characteristic = 'sepal size (cm)'
X = df((characteristic))
# Initialize
equal_width = KBinsDiscretizer(
n_bins=15,
encode='ordinal',
technique='uniform'
)
bins_equal_width = equal_width.fit_transform(X)
plt.hist(bins_equal_width, bins=15)
plt.title("Equal Width Discretization")
plt.xlabel(characteristic)
plt.ylabel("Depend")
plt.present()

Das Histogramm zeigt Bins mit gleicher Bereichsbreite.
Gleichfrequenzdiskretisierung
Diese Methode ordnet die Werte der Variablen den Bins zu, die eine ähnliche Anzahl von Datenpunkten enthalten. Die Behälterbreiten sind nicht gleich. Die Bin-Breite wird durch Quantile bestimmt, die die Daten in vier gleiche Teile unterteilen. Auch hier wird die Anzahl der Bins vom Benutzer als Hyperparameter definiert.
Der Hauptnachteil der Gleichfrequenzdiskretisierung besteht darin, dass es viele leere Bins oder Bins mit wenigen Datenpunkten gibt, wenn die Verteilung der Datenpunkte schief ist. Dies führt zu einem erheblichen Informationsverlust.
Lassen Sie uns die Diskretisierung gleicher Breite implementieren unter Verwendung des Iris-Datensatzes. technique='quantile' In KBinsDiscretizer() schafft ausgewogene Behälter. Jeder Abschnitt hat (ungefähr) die gleiche Anzahl an Datenpunkten.
# Import libraries
import pandas as pd
from sklearn.datasets import load_iris
# Load the Iris dataset
iris = load_iris()
df = pd.DataFrame(iris.information, columns=iris.feature_names)
# Choose one characteristic
characteristic = 'sepal size (cm)'
X = df((characteristic))
# Initialize
equal_freq = KBinsDiscretizer(
n_bins=3,
encode='ordinal',
technique='quantile'
)
bins_equl_freq = equal_freq.fit_transform(X)
Diskretisierung beliebiger Intervalle
Bei dieser Methode ordnet der Benutzer die Datenpunkte einer Variablen sinnvoll (willkürlich) in Bins ein. Beispielsweise können Sie die Werte der Variablen zuweisen Temperatur in Behältern darstellend „kalt“, „Regular“ Und „heiß“. Der allgemeine Sinn steht im Vordergrund. Es ist nicht erforderlich, die gleiche Bin-Breite oder die gleiche Anzahl von Datenpunkten in einem Bin zu haben.
Hier definieren wir manuell Bin-Grenzen basierend auf Domänenwissen.
# Import libraries
import pandas as pd
from sklearn.datasets import load_iris
# Load the Iris dataset
iris = load_iris()
df = pd.DataFrame(iris.information, columns=iris.feature_names)
# Choose one characteristic
characteristic = 'sepal size (cm)'
X = df((characteristic))
# Outline customized bins
custom_bins = (4, 5.5, 6.5, 8)
df('arbitrary') = pd.lower(
df(characteristic),
bins=custom_bins,
labels=(0,1,2)
)
Ok-bedeutet Clustering-basierte Diskretisierung
Beim Ok-Means-Clustering geht es darum, ähnliche Datenpunkte in Clustern zu gruppieren. Diese Funktion kann zur Variablendiskretisierung verwendet werden. Bei dieser Methode sind Bins die vom Ok-Means-Algorithmus identifizierten Cluster. Auch hier müssen wir die Anzahl der Cluster definieren, okals Modellhyperparameter. Es gibt verschiedene Methoden, um den optimalen Wert zu bestimmen ok. Lesen Das Artikel, um diese Methoden zu lernen.
Hier verwenden wir KMeans Algorithmus zum Erstellen von Gruppen, die als diskretisierte Kategorien fungieren.
# Import libraries
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
# Load the Iris dataset
iris = load_iris()
df = pd.DataFrame(iris.information, columns=iris.feature_names)
# Choose one characteristic
characteristic = 'sepal size (cm)'
X = df((characteristic))
kmeans = KMeans(n_clusters=3, random_state=42)
df('kmeans') = kmeans.fit_predict(X)
Entscheidungsbaumbasierte Diskretisierung
Der auf Entscheidungsbäumen basierende Diskretisierungsprozess verwendet Entscheidungsbäume, um die Grenzen der Klassen zu ermitteln. Im Gegensatz zu anderen Methoden findet diese Methode automatisch die optimale Anzahl an Behältern. Daher muss der Benutzer die Anzahl der Bins nicht als Hyperparameter definieren.
Die bisher besprochenen Diskretisierungsmethoden sind überwachte Methoden. Allerdings handelt es sich bei dieser Methode um eine unbeaufsichtigte Methode, d. h. wir verwenden auch Zielwerte, jum die Grenzen zu bestimmen.
# Import libraries
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
# Load the Iris dataset
iris = load_iris()
df = pd.DataFrame(iris.information, columns=iris.feature_names)
# Choose one characteristic
characteristic = 'sepal size (cm)'
X = df((characteristic))
# Get the goal values
y = iris.goal
tree = DecisionTreeClassifier(
max_leaf_nodes=3,
random_state=42
)
tree.match(X, y)
# Get leaf node for every pattern
df('decision_tree') = tree.apply(X)
tree = DecisionTreeClassifier(
max_leaf_nodes=3,
random_state=42
)
tree.match(X, y)
Dies ist die Übersicht über variable Diskretisierungsmethoden. Die Implementierung jeder Methode wird in separaten Artikeln besprochen.
Dies ist das Ende des heutigen Artikels.
Bitte lassen Sie mich wissen, wenn Sie Fragen oder Suggestions haben.
Wie wäre es mit einem KI-Kurs?
Wir sehen uns im nächsten Artikel. Viel Spaß beim Lernen!
Informationen zum Iris-Datensatz
- Zitat: Dua, D. und Graff, C. (2019). UCI Machine Studying Repository (http://archive.ics.uci.edu/ml). Irvine, CA: College of California, Faculty of Data and Laptop Science.
- Quelle: https://archive.ics.uci.edu/ml/datasets/iris
- Lizenz: RA Fisher besitzt das Urheberrecht an diesem Datensatz. Michael Marshall hat diesen Datensatz der Öffentlichkeit im Rahmen des gespendet Artistic Commons Public Area Widmungslizenz (CC0). Erfahren Sie mehr über die verschiedenen Arten von Datensatzlizenzen Hier.
Entworfen und geschrieben von:
Rukshan Pramoditha
2025–03–04
