# ENGIN — pytania i odpowiedzi dla jury ## Czy wynik nie ma leakage między cylindrami? Nie. Podział wykorzystuje `engine_id`; wszystkie cylindry jednego silnika trafiają razem wyłącznie do train albo validation. Raportowany wynik pochodzi z OOF dla wcześniej niewidzianych silników. ## Dlaczego nie CNN? Dane mają tylko 21 cech częstotliwościowych na cylinder i niewielki zbiór etykietowany. Prostszy model daje lepszy kompromis między jakością, stabilnością, explainability oraz czasem inference na CPU. CNN zwiększałby liczbę parametrów i ryzyko overfittingu bez udowodnionej korzyści. ## Skąd bierze się referencja cylindra? Dla każdego cylindra liczona jest mediana pozostałych cylindrów tego samego silnika. To leave-one-cylinder-out: badany cylinder nigdy nie współtworzy własnej referencji. ## Co oznacza `unknown`? To bezpieczna decyzja dla anomalii, która nie pasuje stabilnie do znanych klas. Reguła OOD może zmienić tylko anomalną predykcję `ok` na `unknown`; nie nadpisuje rozpoznanej konkretnej usterki. Próg ma dwa warunki: cylinder musi przekroczyć 7.25 mV średniego odchylenia oraz 2.5× medianę anomalii własnego silnika. Drugi warunek chroni przed uznaniem ogólnie głośnej jednostki za zbiór izolowanych OOD. Oba warunki zachowały raportowany wynik clean i masked 5%, ale nadal wymagają potwierdzenia na większej flocie. ## Jak obsługiwane są braki? Punkty widma są interpolowane wzdłuż częstotliwości z fallbackiem medianowym. Pipeline został ponownie sprawdzony po deterministycznym zamaskowaniu dokładnie 5% komórek. Aplikacja odrzuca cylinder z ponad 50% braków i ostrzega przy wysokim udziale braków całego pliku. ## Czy status silnika jest osobnym modelem? Nie. Status jest deterministyczną regułą biznesową opartą bezpośrednio na label i najwyższym severity. Usunęliśmy arbitralny Engine Health 0–100, ponieważ zbiór nie zawiera prawdy referencyjnej dla takiej skali. Aplikacja pokazuje najwyższe rzeczywiste severity i porządkowy priorytet kontroli. ## Czy score modelu jest prawdopodobieństwem awarii? Nie. To niekalibrowany wynik `predict_proba`, używany wyłącznie do diagnostyki technicznej. Główny widok mechanika go nie pokazuje; zamiast tego prezentuje diagnozę, nasilenie, priorytet oraz dowód w widmie i porównanie z pozostałymi cylindrami. Dla `unknown` utworzonego przez regułę OOD wartość pozostaje pusta. ## Co robi aplikacja przy błędnym pliku? Waliduje strukturę przed inference i zwraca komunikat z kodem błędu oraz działaniem naprawczym. Sprawdza między innymi kompletność silnika, duplikaty, typy liczbowe, zakres amplitudy, liczbę cylindrów i udział braków. Traceback nie jest ujawniany użytkownikowi. ## Czy rozwiązanie wymaga chmury albo GPU? Nie. Całość działa lokalnie na CPU i nie wysyła pomiarów na zewnątrz. Warstwa aplikacyjna używa Logistic Regression i Extra Trees. ## Jak wiarygodne są podane metryki? To średnia z pięciu seedów walidacji grupowej: Macro F1 0.9811, severity accuracy 0.9298 i Raw Score 0.9683. Nie przedstawiamy tych liczb jako wyniku ukrytego testu. Negative control severity pozostaje blisko przypadku. ## Jak rozwiązanie można wdrożyć? Obecna wersja jest aplikacją Streamlit z interfejsami `FrameReader`, `FrameValidator` i `PredictionModel`. Adapter modelu można później zastąpić usługą API albo modelem zapisanym na dysku bez zmiany logiki prezentacji. Dołączony Dockerfile daje powtarzalne uruchomienie. ## Najbliższe rozszerzenia po hackathonie Kalibracja score na większym zbiorze, historia diagnoz, integracja z numerem seryjnym i zleceniem serwisowym, monitoring driftu oraz walidacja rekomendacji z mechanikami Aesteel.