hackathon-ENGIN/docs/JURY_QA.md

3.6 KiB
Raw Permalink Blame History

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 0100, 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 względnego porównania decyzji klasyfikatora. Interfejs nazywa go „score”, nie „pewnością”. Dla unknown utworzonego przez regułę OOD pozostaje pusty zamiast sztucznie generować wartość 5099%.

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.