Metody wyboru cech
Metody filtrujące (wariancja, korelacja), wrapper (RFE) i osadzone (regularyzacja L1).
Metody wyboru cech to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Dlaczego wybierać cechy
Wybór cech zachowuje tylko najbardziej użyteczne kolumny. Mniejsza liczba cech oznacza szybsze trenowanie, mniejsze ryzyko przeuczenia i łatwiejszą interpretację. Usunięcie szumu często poprawia również dokładność.
Trzy grupy metod
Metody wyboru cech dzielą się na trzy grupy:
- Filtrujące szeregują cechy według statystyki (są szybkie i niezależne od modelu)
- Wykorzystujące opakowanie wyszukują podzbiory, trenując modele (są wolne, ale dokładne)
- Wbudowane przeprowadzają wybór podczas dopasowywania modelu
VarianceThreshold
Najprostsza metoda filtrująca: VarianceThreshold usuwa cechy, których wariancja jest niższa od ustalonego progu. Prawie stałe kolumny nie zawierają informacji.
from sklearn.feature_selection import VarianceThreshold
sel = VarianceThreshold(threshold=0.01)
X_reduced = sel.fit_transform(X)
print("Kept:", X_reduced.shape[1], "of", X.shape[1])SelectKBest z f_classif
SelectKBest zachowuje K cech o najwyższych wynikach. W połączeniu z f_classif wykorzystuje test F ANOVA, mierzący siłę związku każdej cechy z etykietą klasy.
from sklearn.feature_selection import SelectKBest, f_classif
sel = SelectKBest(score_func=f_classif, k=10)
X_best = sel.fit_transform(X, y)
print(sel.get_support(indices=True))Informacja wzajemna
mutual_info_classif mierzy dowolną zależność, w tym nieliniową, między cechą a zmienną docelową. W przeciwieństwie do testu F wykrywa zależności nieliniowe, których ANOVA nie rejestruje.
from sklearn.feature_selection import SelectKBest, mutual_info_classif
sel = SelectKBest(score_func=mutual_info_classif, k=10)
X_mi = sel.fit_transform(X, y)Porównanie f_classif i mutual_info
f_classif działa szybko i wykrywa zależności liniowe, natomiast mutual_info_classif działa wolniej, ale wykrywa także zależności nieliniowe. Jeśli podejrzewa się złożone zależności, należy wybrać informację wzajemną.
import numpy as np
from sklearn.feature_selection import f_classif, mutual_info_classif
f_scores, _ = f_classif(X, y)
mi_scores = mutual_info_classif(X, y)
print("F-test top:", np.argsort(f_scores)[::-1][:5])
print("MI top:", np.argsort(mi_scores)[::-1][:5])Rekurencyjne eliminowanie cech
RFE to metoda wykorzystująca opakowanie: trenuje model, usuwa najsłabszą cechę i powtarza ten proces. Do szeregowania cech wykorzystuje własny wskaźnik ważności modelu.
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
rfe = RFE(estimator=LogisticRegression(max_iter=1000), n_features_to_select=10)
rfe.fit(X, y)
print(rfe.support_)RFECV: automatyczny wybór liczby cech
RFECV dodaje do RFE walidację krzyżową, dzięki czemu znajduje optymalną liczbę cech na podstawie wyniku walidacji, zamiast korzystać z ustalonego przypuszczenia.
from sklearn.feature_selection import RFECV
from sklearn.ensemble import RandomForestClassifier
rfecv = RFECV(
estimator=RandomForestClassifier(),
cv=5,
scoring="accuracy",
)
rfecv.fit(X, y)
print("Optimal features:", rfecv.n_features_)SelectFromModel z Lasso
Wybór wbudowany: Lasso (L1) zmniejsza nieistotne współczynniki dokładnie do zera. Następnie SelectFromModel zachowuje tylko współczynniki różne od zera.
from sklearn.feature_selection import SelectFromModel
from sklearn.linear_model import Lasso
sel = SelectFromModel(Lasso(alpha=0.01))
sel.fit(X, y)
X_lasso = sel.transform(X)
print("Kept:", X_lasso.shape[1])SelectFromModel z ważnościami drzew
SelectFromModel działa również z dowolnym estymatorem udostępniającym feature_importances_, na przykład z lasami losowymi. Należy ustawić threshold, na przykład na "mean" lub "median".
from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import RandomForestClassifier
sel = SelectFromModel(
RandomForestClassifier(n_estimators=200),
threshold="median",
)
sel.fit(X, y)Wybór metody
Należy zacząć od tanich metod filtrujących (VarianceThreshold, SelectKBest), aby usunąć oczywiście zbędne cechy. W celu uzyskania dobrego kompromisu warto użyć wbudowanego SelectFromModel. RFECV należy zarezerwować dla sytuacji, gdy dokładność ma największe znaczenie, a zasoby obliczeniowe na to pozwalają.
Szybki sprawdzian
Proszę sprawdzić swoją wiedzę na temat wyboru cech.
Podsumowanie
Podsumowanie: Wybór cech obejmuje metody filtrujące (VarianceThreshold, SelectKBest z f_classif lub mutual_info_classif), metody wykorzystujące opakowanie (RFECV) oraz metody wbudowane (SelectFromModel z Lasso lub ważnościami cech z modeli drzewiastych). Metody filtrujące są najszybsze, a RFECV zapewnia największą dokładność. Informacji wzajemnej należy używać w przypadku zależności nieliniowych.
Często zadawane pytania
Czy lekcja „Metody wyboru cech” jest bezpłatna?
Tak — pełny tekst „Metody wyboru cech” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Metody wyboru cech”?
Metody filtrujące (wariancja, korelacja), wrapper (RFE) i osadzone (regularyzacja L1). Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Metody wyboru cech”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Metody wyboru cech
- Tworzenie cech interakcyjnych i wielomianowych
- Kodowanie docelowe i zaawansowana obsługa danych kategorialnych
- Automatyczne tworzenie cech za pomocą Featuretools