Narzedzia AI
Narzedzia AI · 4 min czytania · 6 stycznia 2026

Pułapka zmiennych dummy – błąd, który psuje Twój model AI

Pułapka zmiennych dummy – błąd, który psuje Twój model AI

Źródło: Link

AI dla Twojej firmy

Szkolenia, warsztaty i wdrożenia AI. Dopasowane do Twojego zespołu.

Sprawdź ofertę →

Budujesz model AI, który ma przewidywać ceny mieszkań. Masz dane: lokalizacja (Warszawa, Kraków, Gdańsk), liczba pokoi, metraż. Problem? Algorytm nie rozumie słów. Musisz zamienić "Warszawa" na liczby.

I tu wchodzi pułapka, o której mało kto mówi na początku.

Czemu AI nie trawi kategorii

Większość algorytmów uczenia maszynowego to matematyczne maszyny. Regresja liniowa, sieci neuronowe, drzewa decyzyjne – wszystkie operują na liczbach. Podasz im "Warszawa" – dostaną błąd.

Rozwiązanie? Zamienić kategorie na zmienne binarne. Zamiast jednej kolumny "Miasto" tworzysz trzy:

  • Warszawa: 1 lub 0
  • Kraków: 1 lub 0
  • Gdańsk: 1 lub 0

Mieszkanie w Warszawie? Warszawa=1, reszta=0. To się nazywa kodowanie dummy (ang. dummy encoding) lub one-hot encoding – jakby każda kategoria dostawała własną flagę.

Brzmi logicznie.

I tu zaczyna się problem.

Gdy model widzi dwa razy to samo

Załóżmy, że masz te trzy zmienne: Warszawa, Kraków, Gdańsk. Patrzysz na wiersz danych:

  • Warszawa = 0
  • Kraków = 0
  • Gdańsk = 1

Skąd wiesz, że to Gdańsk? Bo dwie pozostałe są zerem. Teraz odwrotnie:

  • Warszawa = 0
  • Kraków = 0

Nie musisz już patrzeć na Gdańsk – wiesz, że to musi być 1. Informacja jest redundantna. Jedna zmienna jest całkowicie przewidywalna na podstawie pozostałych.

To się nazywa współliniowość (ang. multicollinearity).

Dla algorytmów regresji to katastrofa.

Co się psuje

Regresja liniowa próbuje znaleźć wagi dla każdej zmiennej. "Jak bardzo Warszawa wpływa na cenę? A Kraków?" Problem w tym, że gdy zmienne są współliniowe, algorytm nie potrafi rozdzielić ich wpływu.

Matematycznie: macierz staje się osobliwa (nieodwracalna). Praktycznie: dostajesz błędy, niestabilne współczynniki lub wyniki bez sensu.

Przykład: model mówi, że mieszkanie w Warszawie kosztuje +500 tys. zł, ale w Krakowie -500 tys. zł. Liczby się kompensują, ale nic nie znaczą.

Zostaw jedną kategorię za drzwiami

Zasada jest prosta: jeśli masz N kategorii, stwórz N-1 zmiennych dummy.

Trzy miasta? Dwie zmienne. Pięć kolorów? Cztery zmienne.

Wracamy do przykładu:

  • Warszawa: 1 lub 0
  • Kraków: 1 lub 0
  • Gdańsk: [usuwamy]

Gdańsk staje się kategorią referencyjną (ang. reference category). Gdy obie zmienne są zerem – wiesz, że to Gdańsk. Informacja jest zachowana, współliniowości nie ma.

Teraz model może powiedzieć: "Mieszkanie w Warszawie kosztuje +300 tys. zł w porównaniu do Gdańska".

To ma sens.

Która kategoria powinna być referencyjna?

Technicznie – dowolna. Matematycznie nie ma różnicy.

Praktycznie? Wybierz tę, która jest:

  • Najczęstsza (jeśli masz 1000 przypadków z Warszawy i 50 z Zakopanego)
  • Neutralna ("inne", "brak", "standard")
  • Bazowa dla Twojej analizy (jeśli porównujesz miasta do stolicy)

To ułatwia interpretację wyników.

Jak to działa w praktyce

Większość bibliotek do ML robi to automatycznie. Warto wiedzieć, co się dzieje pod maską.

W Pythonie (pandas)

Funkcja pd.get_dummies() ma parametr drop_first=True:

import pandas as pd
Df = pd.DataFrame({'miasto': ['Warszawa', 'Kraków', 'Gdańsk', 'Warszawa']})
Df_encoded = pd.get_dummies(df, columns=['miasto'], drop_first=True)

Wynik: dwie kolumny zamiast trzech. Pierwsza kategoria (alfabetycznie) zostaje pominięta.

W R

Domyślnie R robi to sam przy tworzeniu modeli:

model <- lm(cena ~ miasto, data = df)

Pierwsza kategoria (alfabetycznie lub według poziomów faktora) staje się referencją.

W scikit-learn

OneHotEncoder ma parametr drop='first':

from sklearn.preprocessing import OneHotEncoder
Encoder = OneHotEncoder(drop='first', sparse=False)
X_encoded = encoder.fit_transform(X)

Bez tego dostajesz pełny zestaw zmiennych – i potencjalną pułapkę.

Kiedy pułapka NIE ma znaczenia

Nie wszystkie algorytmy są wrażliwe na współliniowość.

Drzewa decyzyjne (i lasy losowe, gradient boosting) radzą sobie bez problemu. Nie liczą współczynników – dzielą dane na podstawie progów. Dla nich redundantna zmienna to po prostu ignorowany szum.

Sieci neuronowe też są odporne – regularyzacja i dropout radzą sobie z nadmiarem zmiennych.

Problem dotyczy głównie:

  • Regresji liniowej
  • Regresji logistycznej
  • Algorytmów opartych na macierzach (np. SVD)

Jeśli używasz XGBoost do klasyfikacji – możesz zostawić wszystkie zmienne. Ale jeśli budujesz model regresji i chcesz interpretować współczynniki – musisz uważać.

Co zapamiętać

Pułapka zmiennych dummy to nie błąd w danych – to błąd w sposobie ich kodowania.

Jedna zmienna za dużo i Twój model przestaje rozumieć, co wpływa na wynik.

Zasada: N kategorii = N-1 zmiennych dummy. Jedna zostaje za drzwiami jako punkt odniesienia.

Większość narzędzi robi to za Ciebie – ale tylko jeśli wiesz, gdzie szukać odpowiedniego parametru.

Źródła

Informacje o artykule

Podoba Ci się ten artykuł?

Co piątek wysyłam podsumowanie najlepszych artykułów tygodnia. Zapisz się!

Ten temat omawiam szerzej na webinarze

90 minut praktycznej wiedzy o AI. Pokaze Ci krok po kroku, jak zaczac oszczedzac 10 godzin tygodniowo dzieki sztucznej inteligencji.

Zapisz sie na webinar
Udostępnij:
Jan Gajos

Ekspert AI & Founder, AI Evolution

Pasjonat sztucznej inteligencji, który od ponad 15 lat działa z sukcesem biznesowo i szkoleniowo. Wprowadzam AI do swoich firm oraz codziennego życia. Fascynują mnie nowe technologie, gry wideo i składanie klocków Lego – tam też widzę logikę i kreatywność, które AI potrafi wzmacniać. Wierzę, że dobrze użyta sztuczna inteligencja to nie ogłupiające ułatwienie, lecz prawdziwy przełom w sposobie, w jaki myślimy, tworzymy i pracujemy.