# Algorytmy uczenia maszynowego: kompletny przewodnik po rozmowach technicznych > Opanowanie kluczowych algorytmów uczenia maszynowego wymaganych na rozmowach technicznych w 2026 roku. Uczenie nadzorowane i nienadzorowane, metody zespolowe, metryki ewaluacji i regularyzacja z implementacjami w Pythonie. - Published: 2026-04-06 - Updated: 2026-04-06 - Author: Anthony Fillion-Maillet - Tags: machine-learning, data-science, interview-prep - Reading time: 12 min --- Algorytmy uczenia maszynowego stanowią fundament każdej rozmowy technicznej dla data scientistów w 2026 roku. Niezależnie od tego, czy stanowisko dotyczy juniora, czy seniora ML engineer, rekruterzy oczekują od kandydatów umiejętności wyjaśnienia, zaimplementowania i porównania podstawowych rodzin algorytmów — od modeli liniowych, przez metody zespolowe, aż po techniki nienadzorowane. Poniższy przewodnik omawia każdą kategorię algorytmów z implementacjami w Pythonie przy użyciu scikit-learn 1.8, strategiami ewaluacji i dokładnymi kompromisami, które odróżniają mocnych kandydatów od reszty. > **Rodziny algorytmów ML w skrócie** > > Algorytmy uczenia maszynowego dzielą się na trzy rodziny: uczenie nadzorowane (regresja, klasyfikacja), uczenie nienadzorowane (klasteryzacja, redukcja wymiarowości) i uczenie przez wzmacnianie. Rozmowy techniczne w 2026 roku skupiają się mocno na dwóch pierwszych, z naciskiem na to, kiedy wybrać jeden algorytm zamiast innego i jak oceniać wyniki. ## Uczenie nadzorowane: regresja i klasyfikacja Algorytmy uczenia nadzorowanego uczą się na danych oznakowanych — każdy przykład treningowy zawiera dane wejściowe i oczekiwany wynik. Regresja przewiduje wartości ciągłe (ceny domów, temperatury), podczas gdy klasyfikacja przypisuje etykiety dyskretne (spam/nie spam, diagnoza choroby). Znajomość obu jest niezbędna na [rozmowach z zakresu data science](/blog/data-science/top-25-data-science-interview-questions-2026). Regresja liniowa pozostaje punktem wyjścia dla każdego zadania regresji. Modeluje zależność między cechami a zmienną docelową jako ważoną sumę. Rekruterzy często proszą kandydatów o jej implementację, wyjaśnienie funkcji kosztu i omówienie sytuacji, w których model zawodzi. ```python # linear_regression_demo.py import numpy as np from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error, r2_score # Generate synthetic housing data: square footage -> price np.random.seed(42) sqft = np.random.uniform(500, 3000, size=200).reshape(-1, 1) price = 150 * sqft.flatten() + np.random.normal(0, 20000, size=200) X_train, X_test, y_train, y_test = train_test_split(sqft, price, test_size=0.2) model = LinearRegression() model.fit(X_train, y_train) # Fit on training data predictions = model.predict(X_test) # Predict on unseen data print(f"Coefficient: {model.coef_[0]:.2f}") # Weight per sqft print(f"R2 Score: {r2_score(y_test, predictions):.4f}") print(f"RMSE: {np.sqrt(mean_squared_error(y_test, predictions)):.2f}") ``` Współczynnik ujawnia, o ile każdy dodatkowy metr kwadratowy wpływa na cenę. Wynik R2 i RMSE mierzą jakość predykcji — dwie metryki, których interpretację rekruterzy oczekują bez wahania. Do klasyfikacji regresja logistyczna stosuje funkcję sigmoid, aby generować prawdopodobieństwa. Mimo swojej nazwy rozwiązuje problemy klasyfikacyjne. Granica decyzyjna, parametr regularyzacji C i różnica między ustawieniami binarnym a wieloklasowym to popularne tematy rozmów. ```python # logistic_classification.py from sklearn.linear_model import LogisticRegression from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report data = load_breast_cancer() # Binary classification dataset X_train, X_test, y_train, y_test = train_test_split( data.data, data.target, test_size=0.2, random_state=42 ) clf = LogisticRegression(max_iter=5000, C=1.0) # C controls regularization strength clf.fit(X_train, y_train) y_pred = clf.predict(X_test) print(classification_report(y_test, y_pred, target_names=data.target_names)) ``` Raport klasyfikacji pokazuje precyzję, czułość i F1-score dla każdej klasy — dokładnie te metryki omówione w kolejnej sekcji. Płynne odczytywanie tych raportów to umiejętność, którą rekruterzy szybko weryfikują. ## Drzewa decyzyjne i metody zespolowe dominujące na rozmowach Drzewa decyzyjne rekurencyjnie dzielą dane na podstawie progów cech. Samodzielnie łatwo ulegają przeuczeniu. Metody zespolowe — Random Forest i Gradient Boosting — rozwiązują ten problem, łącząc wiele drzew. Te algorytmy pojawiają się na niemal każdej rozmowie ML, ponieważ równoważą interpretowalność z wydajnością. Random Forest buduje wiele niezależnych drzew na próbkach bootstrapowych i uśrednia ich predykcje. Redukuje wariancję bez zwiększania obciążenia. Pytania o algorytmy drzewiaste i zespolone często testują zrozumienie różnicy między baggingiem a boostingiem, ważności cech i szacowania błędu out-of-bag. ```python # ensemble_comparison.py from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier from sklearn.datasets import load_wine from sklearn.model_selection import cross_val_score data = load_wine() # 3-class classification X, y = data.data, data.target # Random Forest: parallel trees, reduces variance rf = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=42) rf_scores = cross_val_score(rf, X, y, cv=5, scoring='accuracy') # Gradient Boosting: sequential trees, reduces bias gb = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, max_depth=3) gb_scores = cross_val_score(gb, X, y, cv=5, scoring='accuracy') print(f"Random Forest: {rf_scores.mean():.4f} +/- {rf_scores.std():.4f}") print(f"Gradient Boosting: {gb_scores.mean():.4f} +/- {gb_scores.std():.4f}") ``` Random Forest sprawdza się, gdy celem jest stabilność i minimalne strojenie. Gradient Boosting często osiąga wyższą dokładność, ale wymaga starannego doboru hiperparametrów — tempo uczenia, liczba estymatorów i głębokość drzewa wzajemnie na siebie wpływają. Rekruterzy sprawdzają, czy kandydat rozumie ten kompromis, a nie tylko który wynik liczbowy jest większy. | Kryterium | Random Forest | Gradient Boosting | |-----------|--------------|-------------------| | Szybkość trenowania | Szybkie (równoległe) | Wolniejsze (sekwencyjne) | | Ryzyko przeuczenia | Niskie | Wyższe bez strojenia | | Wrażliwość na hiperparametry | Niska | Wysoka | | Ważność cech | Wbudowana (oparta na nieczystości) | Wbudowana (oparta na zysku) | | Najlepsze zastosowanie | Modele bazowe, dane z szumem | Konkursy, dane tabelaryczne | ## Uczenie nienadzorowane: klasteryzacja i redukcja wymiarowości Algorytmy nienadzorowane odkrywają strukturę w danych bez etykiet. K-Means i PCA (analiza głównych składowych) to dwie techniki, o które rekruterzy pytają najczęściej. Opanowanie obu jest kluczowe na rozmowach z zakresu uczenia nienadzorowanego. K-Means dzieli dane na k klastrów, minimalizując wariancję wewnątrz klastra. Algorytm iteruje między przypisywaniem punktów do najbliższego centroidu a aktualizacją centroidów. Dwa krytyczne pytania rekrutacyjne: jak wybrać k (metoda łokcia, współczynnik sylwetkowy) i co się dzieje z klastrami o nieregularnym kształcie. ```python # kmeans_clustering.py from sklearn.cluster import KMeans from sklearn.preprocessing import StandardScaler from sklearn.metrics import silhouette_score from sklearn.datasets import load_iris data = load_iris() X = StandardScaler().fit_transform(data.data) # Scale features first # Test multiple values of k to find optimal cluster count for k in [2, 3, 4, 5]: kmeans = KMeans(n_clusters=k, n_init=10, random_state=42) labels = kmeans.fit_predict(X) sil = silhouette_score(X, labels) # Higher = better-defined clusters inertia = kmeans.inertia_ # Within-cluster sum of squares print(f"k={k}: silhouette={sil:.3f}, inertia={inertia:.1f}") ``` Skalowanie cech przed klasteryzacją jest obowiązkowe — K-Means używa odległości euklidesowej, więc nieskalowane cechy o dużym zakresie dominują w metryce. Ten szczegół pojawia się na rozmowach regularnie. PCA redukuje wymiarowość, projeksjonując dane na kierunki maksymalnej wariancji. Służy dwóm celom: wizualizacji (rzutowanie do 2D/3D) i przetwarzaniu wstępnemu (usuwanie szumu, przyspieszanie modeli downstream). Rekruterzy oczekują wyjaśnienia współczynników wyjaśnionej wariancji i sposobu wyboru liczby składowych. > **Kiedy PCA pomaga — a kiedy szkodzi** > > PCA działa najlepiej, gdy cechy są skorelowane i sygnał koncentruje się w kilku kierunkach. Na rzadkich, wysokowymiarowych danych (tekst, kategorie zakodowane one-hot) PCA może niszczyć użyteczną strukturę. W takich przypadkach lepiej sprawdzają się Truncated SVD lub specjalizowane embeddingi. ## Metryki ewaluacji modeli, które każdy kandydat musi znać Wybór właściwej metryki ewaluacji ma większe znaczenie niż wybór odpowiedniego algorytmu. Model z 99% dokładnością na niezbalansowanych danych (1% przypadków oszustwa) może być bezużyteczny — po prostu za każdym razem przewiduje brak oszustwa. Rekruterzy używają pytań o metryki, by sprawdzić praktyczną ocenę sytuacji. Dla klasyfikacji cztery metryki dominują na rozmowach: - **Precyzja**: spośród wszystkich pozytywnych predykcji, ile jest poprawnych? Kluczowa, gdy fałszywe alarmy są kosztowne (filtrowanie spamu) - **Czułość (Recall)**: spośród wszystkich rzeczywistych przypadków pozytywnych, ile zostało wykrytych? Kluczowa, gdy przeoczenia są kosztowne (diagnostyka medyczna) - **F1-Score**: średnia harmoniczna precyzji i czułości — zrównoważony wybór, gdy żaden typ błędu wyraźnie nie dominuje - **AUC-ROC**: mierzy jakość rankingową dla wszystkich progów klasyfikacji — niezbędna do porównywania modeli Dla regresji kluczowe metryki to RMSE (penalizuje duże błędy), MAE (odporna na wartości odstające) i R2 (część wyjaśnionej wariancji). Wiedza o tym, kiedy preferować MAE zamiast RMSE — lub odwrotnie — sygnalizuje prawdziwe zrozumienie. Warto ćwiczyć stosowanie tych metryk w scenariuszach rozmów o regresji. ```python # evaluation_metrics.py from sklearn.metrics import ( precision_score, recall_score, f1_score, roc_auc_score, confusion_matrix ) import numpy as np # Simulated predictions on imbalanced data (5% positive class) np.random.seed(42) y_true = np.array([1]*50 + [0]*950) y_pred = np.array([1]*40 + [0]*10 + [1]*30 + [0]*920) # Some errors print(f"Precision: {precision_score(y_true, y_pred):.3f}") # 40/(40+30) = 0.571 print(f"Recall: {recall_score(y_true, y_pred):.3f}") # 40/(40+10) = 0.800 print(f"F1-Score: {f1_score(y_true, y_pred):.3f}") # Harmonic mean cm = confusion_matrix(y_true, y_pred) print(f"\nConfusion Matrix:\n{cm}") # [[920, 30], -> TN=920, FP=30 # [10, 40]] -> FN=10, TP=40 ``` Poprawne odczytanie macierzy pomyłek wymaga praktyki. Komórka w lewym górnym rogu (prawdziwe negatywy) i prawym dolnym rogu (prawdziwe pozytywy) reprezentują prawidłowe predykcje. Komórki poza przekątną pokazują dwa typy błędów. Rekruterzy często prezentują macierz pomyłek i proszą kandydatów o obliczenie precyzji i czułości na jej podstawie. ## Kompromis obciążenie-wariancja i strategie regularyzacji Kompromis między obciążeniem a wariancją to najważniejsza koncepcja w teorii uczenia maszynowego. Wysokie obciążenie oznacza, że model jest zbyt prosty i niedouczony. Wysoka wariancja oznacza, że model jest zbyt złożony i przetrenowany. Każdy wybór algorytmu i decyzja dotycząca hiperparametrów wiąże się z nawigowaniem tym kompromisem. Regularyzacja kontroluje złożoność modelu, penalizując duże współczynniki. Regresja Ridge (L2) zmniejsza współczynniki w kierunku zera, ale zachowuje wszystkie cechy. Regresja Lasso (L1) sprowadza część współczynników dokładnie do zera, wykonując niejawną selekcję cech. Elastic Net łączy oba podejścia. Te rozróżnienia pojawiają się zarówno w pytaniach o klasyfikację, jak i w kontekstach regresji. > **Pułapka na rozmowach: regularyzacja bez skalowania** > > Regularyzacja penalizuje wielkość współczynników. Jeśli cechy mają różne skale (wiek w latach kontra dochód w tysiącach), kara nieproporcjonalnie wpływa na cechy o mniejszej skali. Przed zastosowaniem Ridge, Lasso lub Elastic Net zawsze należy standaryzować cechy. Zapomnienie o tym to częsty błąd na rozmowach. ```python # regularization_comparison.py from sklearn.linear_model import Ridge, Lasso, ElasticNet from sklearn.preprocessing import StandardScaler from sklearn.pipeline import make_pipeline from sklearn.model_selection import cross_val_score from sklearn.datasets import load_diabetes X, y = load_diabetes(return_X_y=True) models = { "Ridge (L2)": make_pipeline(StandardScaler(), Ridge(alpha=1.0)), "Lasso (L1)": make_pipeline(StandardScaler(), Lasso(alpha=0.1)), "ElasticNet (L1+L2)": make_pipeline(StandardScaler(), ElasticNet(alpha=0.1, l1_ratio=0.5)), } for name, model in models.items(): scores = cross_val_score(model, X, y, cv=5, scoring='r2') print(f"{name:25s} R2: {scores.mean():.4f} +/- {scores.std():.4f}") ``` Pipeline zapewnia, że skalowanie i regularyzacja odbywają się razem, zapobiegając wyciekowi danych spowodowanemu dopasowaniem skalera na danych testowych. Rekruterzy specjalnie testują ten aspekt: zastosowanie fit_transform na całym zbiorze danych przed podziałem to błąd dyskwalifikujący na rozmowach na poziomie senior. ## Przygotowanie do pytań o algorytmy ML w 2026 roku Przygotowanie do rozmów o algorytmach uczenia maszynowego w 2026 roku wykracza poza zapamiętywanie wzorów. Zespoły rekrutacyjne oceniają trzy wymiary: rozumienie teoretyczne (czy kandydat potrafi wyjaśnić matematykę?), praktyczna implementacja (czy potrafi napisać kod?) i ocena sytuacji (czy wie, który algorytm pasuje do problemu?). Ścieżka przygotowania do rozmów z data science na SharpSkill obejmuje wszystkie trzy wymiary z praktycznymi pytaniami. Oto obszary generujące najwięcej pytań rekrutacyjnych: - **Dobór algorytmu**: mając opis zbioru danych, uzasadnienie wyboru jednego algorytmu zamiast innego. Należy uwzględnić rozmiar danych, typy cech, wymagania interpretowalności i ograniczenia czasu trenowania - **Strojenie hiperparametrów**: wyjaśnienie, co kontroluje każdy hiperparametr i jak wpływa na kompromis obciążenie-wariancja. Grid search i random search to minimum — optymalizacja bayesowska z Optuna jest coraz częściej oczekiwana - **Aspekty produkcyjne**: wykrywanie dryfu danych, monitorowanie modeli, testy A/B i feature store to standardowe tematy dla stanowisk mid-level i senior w 2026 roku - **Wyjaśnialność**: wraz z rozwojem wyjaśnialnej AI kandydaci powinni znać wartości SHAP i metody ważności cech. Dokumentacja scikit-learn dostarcza solidnych implementacji referencyjnych Walidacja krzyżowa zasługuje na szczególną uwagę. Rekruterzy oczekują wyjaśnienia, dlaczego pojedynczy podział na zbiór treningowy i testowy jest niewystarczający, jak działa k-krotna walidacja krzyżowa i kiedy konieczne są folds stratyfikowane (niezbalansowane klasy). Dane szeregów czasowych wymagają podziału temporalnego — fakt, który zaskakuje wielu kandydatów. ## Podsumowanie - Modele liniowe (regresja, logistyczna) stanowią fundament — przed przejściem do złożonych algorytmów należy zrozumieć ich założenia, funkcje kosztu i przypadki, w których zawodzą - Drzewa decyzyjne samodzielnie przetrenowują; Random Forest i Gradient Boosting rozwiązują to odpowiednio przez bagging i boosting, oferując różne profile kompromisów - K-Means i PCA pokrywają podstawy uczenia nienadzorowanego, ale zawsze należy skalować cechy i znać ograniczenia każdej metody - Metryki ewaluacji muszą odpowiadać problemowi biznesowemu — sama dokładność jest bez znaczenia na niezbalansowanych danych; precyzja, czułość, F1 i AUC-ROC służą różnym celom - Regularyzacja (Ridge, Lasso, Elastic Net) kontroluje przetrenowanie, ale działa poprawnie tylko na standaryzowanych cechach wewnątrz pipeline - Sukces na rozmowach w 2026 roku wymaga wykazania się umiejętnością doboru algorytmów, a nie tylko implementacji — wyjaśnienie dlaczego stojącego za każdym wyborem jest kluczowe --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/pl/blog/data-science/machine-learning-algorithms-explained