Skalowanie cech (ang. feature scaling)

W przypadku cech numerycznych, które mają być atrybutami wejściowymi do modelu uczenia maszynowego, należy zwrócić uwagę na skalę w jakiej te cechy występują.

Country Age Salary
France 44.0 72000.0
Spain 27.0 48000.0
Germany 30.0 54000.0
Spain 38.0 61000.0
Germany 40.0
France 35.0 58000.0
Spain 52000.0

W przykładzie powyżej cecha "Age" występuję w zakresie 27-44, a cecha "Salary" 48.000 - 72.000. Na pierwszy rzut oka widać, że skale te różnią się od siebie bardzo znacznie. Może to powodować spore problemy w algorytmach uczenia maszynowego, związane z faktem, że algorytmy te posługują się często odległościami między krotkami cech liczonymi w przestrzenii euklidesowej. W przestrzenii dwuwymiarowej odległość taka liczona jest jako pierwiastek z sumy kwadratów różnic pomiędzy cechami. I widać wyraźnie, że przy dużej różnicy w skali cechy, cecha w większej skali będzie wyraźnie dominować nad cechą w skali mniejszej. Z tego względu należy przeprowadzić skalowanie tych cech, aby skale były maksymalnie porównywalne.

Przykład w Python
# feature scaling
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()

X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)

Warto zwrócić uwagę, że dane treningowe są wykorzystane do zasilenia modelu i na podstawie tego zasilenia do jego transformaty, natomiast dane testowe są wyłącznie przekształcane na podstawie zasilenia danymi treningowymi,

results matching ""

    No results matching ""