Amazon MLA-C01: Ewaluacja i wybór modeli — Przewodnik do nauki
Część AWS Machine Learning Engineer Associate MLA-C01 — Przewodnik do nauki. Ćwicz ze zweryfikowanymi odpowiedziami w centrum egzaminów Amazon, albo rozwiąż testy na czas na ExamRoll.io.
Dokładna ocena modelu zaczyna się od wyboru metryk, które odpowiadają celowi biznesowemu i charakterystyce klas/etykiet. W przypadku klasyfikacji binarnej, macierz pomyłek — prawdziwie pozytywne (true positives), fałszywie pozytywne (false positives), fałszywie negatywne (false negatives), prawdziwie negatywne (true negatives) — jest kanonicznym elementem, z którego wyprowadza się precyzję (TP / (TP+FP)), czułość (recall lub sensitivity) (TP / (TP+FN)), swoistość (TN / (TN+FP)) i dokładność ((TP+TN) / całość). Precyzja i czułość tworzą kompromis, który jest uchwycony w mierze F1 (2 * precyzja * czułość / (precyzja + czułość)), która jest średnią harmoniczną i podkreśla równowagę między fałszywie pozytywnymi a fałszywie negatywnymi wynikami. Gdy nierównowaga klas jest znaczna, dokładność może być myląca; pole pod krzywą ROC (AUC) mierzy separowalność klas dla różnych progów i w wielu przypadkach jest odporne na nierównowagę, podczas gdy pole pod krzywą precyzja-czułość (AUPRC) jest bardziej informatywne, gdy liczebność klasy pozytywnej jest niska. W przypadku regresji, pierwiastek błędu średniokwadratowego (RMSE) karze większe błędy kwadratowo i jest wrażliwy na wartości odstające; należy użyć średniego błędu bezwzględnego (MAE), gdy preferowana jest odporność na wartości odstające.
Wybór progu jest decyzją operacyjną: wiele algorytmów generuje wynik prawdopodobieństwa i wymaga progu do przekształcenia go na etykiety klas. Użyj krzywych ROC i precyzja-czułość, aby zlokalizować progi, które maksymalizują wybrany cel, taki jak miara F1 lub funkcja kosztu ważona biznesowo. Praktyczna metodologia polega na obliczeniu precyzji, czułości i miary F1 dla każdego progu na podstawie macierzy pomyłek, a następnie wybraniu progu, który spełnia docelowe ograniczenie precyzji lub czułości. Walidacja krzyżowa uzupełnia ten proces, redukując wariancję w oszacowaniach metryk: użyj stratified K-fold dla klasyfikacji z niezbalansowanymi klasami, aby zachować proporcje klas w poszczególnych podziałach (folds). W kodzie, StratifiedKFold z biblioteki scikit-learn z parametrami n_splits i shuffle=True oraz stałym random_state zapewnia powtarzalne podziały; rejestruj metryki dla każdego podziału i agreguj średnie oraz odchylenia standardowe, aby określić ilościowo oczekiwaną wariancję. Używając SageMaker, można zorganizować przebiegi walidacji krzyżowej jako oddzielne zadania treningowe i śledzić je za pomocą API SageMaker Experiments: CreateExperiment, CreateTrial, CreateTrialComponent, a następnie LogMetric i LogHyperParameter dla każdego podziału.
Kompromis między obciążeniem a wariancją (bias–variance trade-off) kieruje wyborami dotyczącymi złożoności modelu i regularyzacji. Modele o wysokim obciążeniu (high-bias) są niedopasowane (underfitting) i generują wysoki błąd na zbiorach treningowym i walidacyjnym, podczas gdy modele o wysokiej wariancji (high-variance) są przeuczone (overfitting) i mają niski błąd treningowy, ale wysoki błąd walidacyjny. Aby zaradzić obciążeniu, należy zwiększyć pojemność modelu, dodać informatywne cechy lub zmniejszyć siłę regularyzacji; aby zaradzić wariancji, należy dodać regularyzację (L1/L2), zmniejszyć złożoność, użyć dropout lub zwiększyć ilość danych treningowych. Użyj oszacowań z walidacji krzyżowej do wykrywania wariancji: duży rozrzut metryk między podziałami oznacza wysoką wariancję. W przypadku treningu iteracyjnego w SageMaker, zaimplementuj wczesne zatrzymywanie (dla XGBoost ustaw hiperparametr early_stopping_rounds i eval_metric='auc' lub 'error') i użyj SageMaker Automatic Model Tuning ze strategią bayesowską do przeszukiwania hyperparameter_space; skonfiguruj HyperparameterTuner za pomocą objective_metric_name, objective_type='Maximize' lub 'Minimize', hyperparameter_ranges, max_jobs i max_parallel_jobs.
Kluczowe usługi i konfiguracja
Usługi AWS tworzą ściśle zintegrowany zestaw narzędzi do śledzenia eksperymentów, rejestrowania modeli, wykrywania dryfu i wdrażania zabezpieczeń (guardrails). Użyj Amazon SageMaker Experiments do organizowania przebiegów; wywołuj sagemaker.create_experiment, sagemaker.create_trial i sagemaker.log_metric, aby utrwalać hiperparametry i metryki. Do scentralizowanego zarządzania cyklem życia modelu użyj SageMaker Model Registry (ModelPackageGroup i ModelPackage) i kontroluj proces wdrożenia za pomocą atrybutu pakietu modelu ModelPackageApprovalStatus, który obsługuje wartości takie jak "PendingManualApproval", "Approved" i "Rejected". Zintegruj ręczne zatwierdzenia z procesem CI/CD, wywołując UpdateModelPackage w celu zmiany approval_status z poziomu funkcji AWS Lambda lub akcji zatwierdzenia przez człowieka w Step Functions.
Do monitorowania po wdrożeniu oraz wykrywania obciążenia/dryfu użyj SageMaker Model Monitor i SageMaker Clarify. Włącz przechwytywanie danych w czasie rzeczywistym na punkcie końcowym (endpoint), ustawiając DataCaptureConfig w wywołaniu CreateEndpointConfig lub UpdateEndpointConfig; określ CaptureOptions: [{"CaptureMode":"Input"}, {"CaptureMode":"Output"}], DestinationS3Uri i SamplingPercentage, aby zbierać reprezentatywne ładunki (payloads). Użyj Model Monitor DefaultModelMonitor do wygenerowania punktu odniesienia (GenerateBaseline - pliki JSON baseline_statistics i baseline_constraints) na podstawie referencyjnego zbioru danych, a następnie utwórz harmonogram monitorowania za pomocą create_monitoring_schedule, podając MonitoringScheduleConfig, schedule_expression (cron lub rate) oraz MonitoringInputs, takie jak EndpointInput z local_path i S3InputMode. W celu analizy sprawiedliwości i obciążenia, użyj SageMaker Clarify jako ProcessingJob z parametrami clarify_config: compute_bias i compute_data_drift, lub użyj wbudowanej funkcji SageMaker Clarify w zadaniu typu Processing i zapisz wyniki w S3 na potrzeby pulpitów nawigacyjnych.
Kilka funkcji AWS jest często używanych razem do agregacji danych, przygotowywania cech i wykrywania anomalii:
- Amazon S3 do przechowywania i bezpiecznej izolacji (polityki bucketów, S3 Block Public Access i szyfrowanie KMS przez SSE-KMS).
- AWS Glue i AWS Glue Data Catalog do odkrywania, ujednolicania i katalogowania zbiorów danych ze źródeł S3 i JDBC.
- Amazon SageMaker Data Wrangler do transformacji typu “przeciągnij i upuść” oraz automatycznej wizualizacji rozkładów, brakujących wartości i skośności.
- Amazon SageMaker Feature Store do serwowania cech w trybie online i offline za pomocą API
PutRecordiGetRecordoraz do zapewnienia spójności cech między treningiem a serwowaniem. - SageMaker Model Monitor i SageMaker Clarify do wykrywania dryfu, obciążenia i monitorowania.
- Amazon Lookout for Metrics do automatycznego wykrywania anomalii w szeregach czasowych w odpowiednich przypadkach.
Wzorce projektowe i kompromisy
Gdy konieczne jest zminimalizowanie narzutu operacyjnego, preferuj usługi zarządzane i wbudowane funkcje algorytmów zamiast tworzenia niestandardowych potoków ETL lub monitorowania. Na przykład, trenując klasyfikator binarny do wykrywania oszustw, XGBoost jest wydajnym, wbudowanym wyborem w SageMaker, który oferuje trening o niskim opóźnieniu oraz hiperparametry dostosowane do niezbalansowanych danych, takie jak scale_pos_weight, który należy ustawić na (num_negative / num_positive). Skonfiguruj hiperparametry XGBoost w obiekcie Estimator lub kontenerze treningowym: objective=‘binary:logistic’, eval_metric=‘aucpr’ lub ‘auc’ oraz early_stopping_rounds, aby zakończyć zaszumione przebiegi. Pozwala to uniknąć budowania niestandardowych potoków nadpróbkowania (SMOTE), chyba że wymagane jest specyficzne dla domeny próbkowanie syntetyczne.
Do inżynierii cech (feature engineering) użyj SageMaker Data Wrangler, aby zastosować transformacje kodowania (one-hot dla cech kategorycznych o niskiej kardynalności, kodowanie porządkowe/etykietowe lub target encoding dla cech o wysokiej kardynalności), a następnie zmaterializuj czyste cechy w SageMaker Feature Store lub S3. Data Wrangler eliminuje znaczną część obciążenia operacyjnego i tworzy skrypty lub zadania przetwarzania, które można ponownie wykorzystać. Jeśli potrzebujesz zautomatyzowanego wyboru modelu przy minimalnym wysiłku, SageMaker Autopilot może automatycznie przetwarzać mieszane cechy kategoryczne i numeryczne oraz generować modele kandydujące; jednak Autopilot abstrahuje od transformacji i może nie być optymalny dla niestandardowych reżimów cech.
Porównywanie i promowanie modeli jest najbardziej niezawodne, gdy metryki, artefakty i pochodzenie danych (lineage) są rejestrowane. Użyj SageMaker Experiments do porównywania przebiegów, a następnie utwórz ModelPackage w ramach ModelPackageGroup. Promuj model, ustawiając ModelPackageApprovalStatus na “Approved” i tworząc EndpointConfig odnoszący się do ARN pakietu modelu. Gdy wymagana jest kontrola człowieka, pozostaw model w stanie “PendingManualApproval” i zaimplementuj przepływ pracy zatwierdzania przez człowieka za pomocą Step Functions lub AWS CodePipeline z akcją zatwierdzania, która wywołuje UpdateModelPackage, aby przenieść go do stanu “Approved”.
Częste pułapki i kryteria decyzyjne
Częstą pułapką jest mylenie spadku metryki F1 w środowisku produkcyjnym z błędem modelu, podczas gdy podstawowym problemem jest dryf danych. Najbardziej prawdopodobną przyczyną utrzymującego się spadku F1 kilka miesięcy po wdrożeniu jest dryf dystrybucji danych wejściowych lub dryf etykiet (dryf koncepcji), a nie nagły błąd w kodzie. Aby to zdiagnozować, włącz DataCaptureConfig na punkcie końcowym w celu przechwytywania żądań i odpowiedzi do S3, uruchom harmonogramy monitorowania Model Monitor w odniesieniu do bazowych ograniczeń (baseline constraints) i oblicz statystyki dystrybucji cech oraz PSI (indeks stabilności populacji). Uruchom również kontrole dryfu danych i stronniczości (bias) za pomocą Clarify, aby wykryć zmiany, które wpływają na metryki sprawiedliwości (fairness).
Innym częstym błędem jest niewłaściwe postępowanie z niezbalansowanymi klasami poprzez naiwny resampling, bez uwzględnienia wycieku danych w czasie (temporal leakage) czy kosztów biznesowych. W pierwszej kolejności preferuj mechanizmy kontrolne na poziomie algorytmu — dla XGBoost ustaw scale_pos_weight i dostosuj eval_metric do aucpr lub niestandardowej funkcji celu — zanim przejdziesz do strategii próbkowania, które mogą wprowadzać zduplikowane przykłady. Dla zapewnienia powtarzalności i śledzenia eksperymentów, zawsze używaj API SageMaker Experiments do logowania hiperparametrów i metryk oraz rejestruj pakiety modeli z identyfikatorami URI artefaktów i metadanymi pochodzenia (provenance), aby promocje do wyższych środowisk były audytowalne.
Problem praktyczny: Scenariusz użycia
Firma: FinSight Inc. — wykrywanie oszustw w transakcjach online z danymi w Amazon S3 i lokalnej bazie MySQL, z wymogiem bezpiecznej izolacji danych, zautomatyzowanego wykrywania anomalii i wizualizacji, ręcznej akceptacji przed wdrożeniem produkcyjnym, niskiego opóźnienia startowego dla iteracyjnego trenowania oraz scentralizowanego wersjonowania modeli przy minimalnym obciążeniu operacyjnym.
Agregacja i bezpieczeństwo danych: Użyj AWS Glue do przeszukania (crawl) logów transakcji w S3 i utworzenia tabel w Glue Catalog, ustaw szyfrowanie bucketu za pomocą SSE-KMS i ogranicz dostęp poprzez polityki IAM oraz punkty końcowe VPC. Dla lokalnej bazy MySQL użyj połączenia AWS Glue JDBC wewnątrz VPC z bezpiecznym połączeniem VPN lub AWS Direct Connect, albo użyj AWS DMS do replikacji wymaganych tabel do strefy lądowania (landing zone) w S3. Zarejestruj zbiory danych w Glue Data Catalog i nadaj rolom wykonawczym SageMaker dostęp na zasadzie najmniejszych uprawnień (least-privilege).
Przygotowanie cech i wykrywanie anomalii: Użyj Amazon SageMaker Data Wrangler do połączenia z Glue Catalog i strefą lądowania w S3, zastosuj transformacje (imputacja brakujących wartości, kodowanie etykiet dla zmiennych kategorycznych, skalowanie dla numerycznych) i uruchom wbudowane profilowanie Data Wrangler, aby zwizualizować dystrybucje i oznaczyć anomalie. Wyeksportuj przetworzone cechy do magazynu offline SageMaker Feature Store na potrzeby trenowania oraz do magazynu online w celu uzyskiwania dostępu z niskim opóźnieniem podczas inferencji.
Trenowanie modelu i minimalizacja opóźnień startowych: Użyj SageMaker Estimator dla XGBoost z
objective='binary:logistic',eval_metric='aucpr'i ustawscale_pos_weight=(neg_count/pos_count). Aby zredukować opóźnienie startowe w kolejnych iteracyjnych zadaniach treningowych, przechowuj w pamięci podręcznej (cache) wyniki z Data Wrangler w S3 i ponownie wykorzystuj ten sam obraz kontenera treningowego oraz typ instancji, zamiast za każdym razem odtwarzać proces pozyskiwania danych; użyj SageMaker Pipelines z włączoną opcjącache_config, aby powtarzane kroki z niezmienionymi danymi wejściowymi/hiperparametrami pomijały uruchamianie infrastruktury.Śledzenie eksperymentów i wybór modelu: Instrumentuj każde uruchomienie treningu za pomocą SageMaker Experiments (
CreateExperiment,CreateTrial,LogMetric). Użyj HyperparameterTuner skonfigurowanego zobjective_metric_name='validation:aucpr',objective_type='Maximize',strategy='Bayesian',max_jobsimax_parallel_jobs, aby znaleźć najlepsze hiperparametry. Porównaj modele w Experiments i zarejestruj wybrane kandydatury w SageMaker Model Registry, tworzącModelPackagewModelPackageGroup.Ręczna akceptacja i bramkowanie wdrożeń: Pozostaw nowo utworzone pakiety modeli w statusie
ModelPackageApprovalStatus='PendingManualApproval'. Użyj przepływu pracy AWS Step Functions z zadaniem wymagającym ludzkiej akceptacji lub akcji zatwierdzającej w AWS CodePipeline; po zatwierdzeniu uruchomUpdateModelPackage, aby ustawić status naApprovedi automatycznie wyzwolić utworzenieEndpointConfigorazUpdateEndpointw celu wykonania wdrożenia.Monitorowanie, stronniczość (bias) i dryf: Włącz
DataCaptureConfigna punkcie końcowym czasu rzeczywistego zCaptureOptionsdlaInputiOutput,DestinationS3UriorazSamplingPercentage. Wygeneruj bazowe statystyki za pomocąGenerateBaselinez Model Monitor na podstawie zbioru treningowego i zaplanuj ciągłe monitorowanie za pomocącreate_monitoring_schedule. Regularnie uruchamiaj SageMaker Clarify jako zadanie przetwarzania (processing job), aby obliczać metryki stronniczości i dryfu danych. Jeśli metryka F1 spadnie poniżej ograniczeń bazowych, użyj alertów Model Monitor do wyzwolenia zautomatyzowanego potoku ponownego trenowania (SageMaker Pipeline), który loguje nowe uruchomienia w Experiments i tworzy nowe pakiety modeli do weryfikacji przez człowieka.
Uzasadnienie wyboru usług AWS: To podejście wykorzystuje zarządzane funkcjonalności SageMaker — Data Wrangler i Feature Store do minimalizacji narzutu związanego z przetwarzaniem wstępnym, XGBoost z scale_pos_weight do obsługi niezbalansowanych klas bez skomplikowanego resamplingu, SageMaker Experiments i Model Registry do audytowalnego zarządzania cyklem życia eksperymentów i modeli, DataCaptureConfig wraz z Model Monitor i Clarify do zautomatyzowanego wykrywania dryfu i sprawiedliwości (fairness), oraz Step Functions/CodePipeline zintegrowane z Model Registry w celu zapewnienia wymaganej bramki ręcznej akceptacji. Usługi te razem minimalizują obciążenie operacyjne, zachowując jednocześnie bezpieczeństwo, identyfikowalność i zdolność do reagowania na degradację modelu.
← Trenowanie modeli i optymalizacja hiperparametrów · Wszystkie domeny · Wdrażanie modeli i inferencja →
Przećwicz te pytania → · Testy na czas na ExamRoll.io →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Zdaj egzamin →