All checks were successful
ENGIN CI / Build, test and smoke (push) Successful in 43s
52 lines
3.6 KiB
Markdown
52 lines
3.6 KiB
Markdown
# 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 i następny krok. 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.
|