AI: 3 sposoby na kodowanie kategorii w danych
Źródło: Link
Źródło: Link
90 minut praktyki na żywo. Pokazuję krok po kroku, jak zacząć z AI bez kodowania.
Masz bazę klientów. Kolumna "Miasto": Warszawa, Kraków, Gdańsk. Albo "Wykształcenie": podstawowe, średnie, wyższe.
Problem? Algorytmy nie czytają słów. Liczą.
I tu zaczyna się zabawa — bo sposób, w jaki przekształcisz te kategorie, zadecyduje, czy Twój model zadziała, czy padnie.
Uczysz kogoś matematyki, ale zamiast cyfr dostajesz: "trochę", "sporo", "masa". Jak to dodać?
Modele ML mnożą, dodają, porównują. Słowo "Warszawa" dla nich to pusty dźwięk. Zero sensu.
Dlatego potrzebujemy kodowania — zamiany kategorii (płeć, miasto, kolor) na liczby. Ale nie byle jakie.
Bo jeśli zakodujemy miasta jako: Warszawa = 1, Kraków = 2, Gdańsk = 3, model pomyśli, że Gdańsk jest "3 razy większy" od Warszawy. Co brzmi absurdalnie.
Najprostsza metoda. Każdej kategorii dajesz kolejną liczbę.
Przykład: Kolumna "Rozmiar koszulki" z wartościami S, M, L, XL. Kodujesz: S = 1, M = 2, L = 3, XL = 4.
Kiedy to działa? Gdy kategorie mają naturalny porządek — są ordinalne. Wykształcenie: podstawowe < średnie < wyższe. Oceny: słabo < średnio < dobrze.
Tu relacja "większe od" ma sens. Model zrozumie hierarchię i użyje jej.
Kolumna "Kolor samochodu": czerwony, niebieski, zielony. Kodujesz: czerwony = 1, niebieski = 2, zielony = 3.
Model pomyśli: zielony (3) jest "bardziej" niż czerwony (1). Że niebieski to coś pomiędzy. Nonsens — kolory nie mają hierarchii.
Efekt? Model znajdzie fałszywe zależności. Będzie myślał, że czerwone auta są "mniejsze". Twoje prognozy pójdą w las.
Najbezpieczniejsza metoda dla kategorii bez porządku (nominalnych).
Jak działa? Zamiast jednej kolumny "Miasto" tworzysz trzy:
Klient z Warszawy: [1, 0, 0]. Z Krakowa: [0, 1, 0].
Teraz model nie widzi żadnej hierarchii. Warszawa nie jest "mniejsza" od Gdańska — to po prostu różne opcje.
Kolumna "Kod pocztowy" z 10 000 unikalnymi wartościami. One-Hot Encoding stworzy 10 000 nowych kolumn.
Tabela eksploduje. Obliczenia zwolnią do granic absurdu. Model utonie.
Zasada? One-Hot sprawdza się, gdy masz mało kategorii — powiedzmy do 10-20. Płeć, województwo, typ produktu? Okej. Kod pocztowy, ID użytkownika? Już nie.
Najbardziej zaawansowana. I najbardziej ryzykowna.
Zamiast losowych liczb, kodujesz kategorię na podstawie tego, co chcesz przewidzieć (target).
Przykład: Przewidujesz, czy klient kupi produkt (tak/nie). Kolumna "Miasto".
Każde miasto ma teraz liczbę pokazującą "siłę kupowania". Model dostaje gotową podpowiedź.
Overfitting to sytuacja, gdy model "zakuwa na pamięć" dane treningowe, zamiast uczyć się ogólnych zasad.
Target Encoding daje modelowi zbyt łatwe życie. Widzi, że Gdańsk = 0.75, więc automatycznie: "Gdańsk = kupią". A co, jeśli Twoja próbka z Gdańska była przypadkowo pełna entuzjastów? Model nie zadziała na nowych danych.
Zabezpieczenie? Cross-validation — dzielisz dane na części i kodujesz każdą osobno. Albo dodajesz smoothing — wygładzanie, które łagodzi ekstremalne wartości.
To techniki dla osób z lekkim doświadczeniem. Dopiero zaczynasz? Trzymaj się One-Hot Encoding.
Zależy od typu danych:
Nie ma jednej złotej reguły. Czasem trzeba przetestować kilka metod i sprawdzić, która daje lepsze wyniki.
Jedno jest pewne: jeśli zignorujesz kodowanie i wrzucisz surowe słowa do modelu, dostaniesz błąd. Albo — co gorsze — model się nauczy kompletnie nie tego, co chciałeś.
Nie musisz kodować ręcznie. Biblioteka scikit-learn (najpopularniejsze narzędzie do ML w Pythonie) robi to za Ciebie.
Label Encoding:
from sklearn.preprocessing import LabelEncoder Le = LabelEncoder() Df['Rozmiar_zakodowany'] = le.fit_transform(df['Rozmiar'])
One-Hot Encoding:
df = pd.get_dummies(df, columns=['Miasto'])
Jedna linijka — i masz gotowe dane dla modelu.
Target Encoding wymaga dodatkowej biblioteki (category_encoders), ale zasada ta sama. Kilka linijek kodu i działa.
Dane z prawdziwego świata to nie arkusz Excela z liczbami. To chaos: słowa, kategorie, błędy.
Kodowanie to most między tym chaosem a modelem AI. Zrobisz to źle — model nauczy się bzdur. Zrobisz dobrze — dostaniesz prognozy, które działają.
Zacznij od One-Hot Encoding dla kategorii nominalnych. To bezpieczna stawka. Potem eksperymentuj.
Przeczytaj też:
Podoba Ci się ten artykuł?
Co piątek wysyłam podsumowanie najlepszych artykułów tygodnia. Zapisz się!
90 minut praktycznej wiedzy o AI. Pokaze Ci krok po kroku, jak zaczac oszczedzac 10 godzin tygodniowo dzieki sztucznej inteligencji.
Zapisz sie na webinar