Author: Daniel Ion
SafeDrive Technologies, o companie pionieră în domeniul siguranței auto, dezvoltă un sistem inteligent de prevenire a dezastrelor pentru vehicule moderne. Cu creșterea incidentelor cauzate de supraîncălzire și scurgeri de gaze, compania are nevoie de un Fire Distinguisher - un sistem AI capabil să detecteze în timp real anomalii periculoase și să le clasifice corect.
Tu ești inginerul principal de Machine Learning. Sarcina ta: să construiești sistemul de detectare care poate salva vieți.
Datele provin de la senzori montați în vehicule experimentale, colectate la intervale de 1 secundă:
id: id asociat înregistrăriigas_raw: Concentrația brută de gaz detectatătemp_c: Temperatura în grade Celsiusflame: Senzor binar de flacără (0 = absent, 1 = prezent)gas_avg: Media mobilă a concentrației de gaztemp_avg: Media mobilă a temperaturiidGas: Rata de schimbare a gazuluidTemp: Rata de schimbare a temperaturiisensor_noise: Zgomot introdus de senzortimestamp_ms: Timestamp Unix în milisecundesensor_id: ID-ul senzorului (S001-S005)battery_level: Nivelul bateriei senzoruluivehicle_speed: Viteza vehicululuiweather_condition: Condiția meteo (sunny, rainy, cloudy, foggy)gas_sensor_drift: Deriva senzorului de gazambient_temp: Temperatura ambientalălabel: Tipul hazardului
train.csv: Date de antrenament cu toate coloanele (inclusiv label)test.csv: Date de test fără coloana labelEchipa de siguranță vrea să înțeleagă distribuția și caracteristicile hazardurilor în datele de antrenament.
Sarcina ta: Pentru train.csv, calculează următoarele 12 statistici:
Ieșire: 12 valori numerice (4 procente + 4 temperaturi + 4 concentrații gaz).
Exemplu: Pentru NORMAL: 45.32% din citiri, temperatura medie 32.5°C, gaz mediu 245.3
Echipa de siguranță vrea să identifice citirile anormale care ar putea indica situații
periculoase. Citirile normale formează un pattern în spațiul feature-urilor — sarcina ta
este să măsori cât de departe este fiecare citire din test față de acest pattern.
1. Selectează cele mai relevante features
NORMAL=0, GAS_LEAK=1, OVERHEAT=2, FIRE=3)2. Pregătește datele
3. Definește profilul NORMAL
label == "NORMAL" din train pentru a stabili4. Calculează scorul de anomalie
d = sqrt((x - mu)^T * Sigma^(-1) * (x - mu))
mu = media vectorială a înregistrărilor NORMALSigma = matricea de covarianță a înregistrărilor NORMALSigma_reg = Sigma + I * 1e-6, unde I este matricea identitateIeșire: Scorul de anomalie pentru fiecare ID din test.csv.
Exemplu:
2,5234,8.92
2,6567,1.23
2,7891,14.45
Hint: În Python:
scipy.spatial.distance.mahalanobis()sau calcul manual cu numpy.
Scorul brut obținut nu este ușor de interpretat de echipa de teren. Transformă-l
în categorii de risc (LOW/MEDIUM/HIGH) folosind praguri bazate pe date istorice.
1. Calculează praguri pe baza train
p33 și p662. Clasifică fiecare citire din test
| Condiție | Nivel de risc | Interpretare |
|---|---|---|
d < p33 | LOW | Comportament aproape normal |
p33 ≤ d < p66 | MEDIUM | Ușoară anomalie |
d ≥ p66 | HIGH | Anomalie semnificativă |
Ieșire: Nivelul de risc pentru fiecare ID din test.csv.
Exemplu:
3,5234,HIGH
3,6567,LOW
3,7891,HIGH
CORE MISSION! Acesta este creierul sistemului Fire Distinguisher. În fiecare secundă, sute de vehicule transmit date, iar sistemul tău trebuie să decidă instant: e totul normal sau există un pericol? O greșeală la detecția unui incendiu poate costa vieți. SafeDrive contează pe tine să construiești cel mai precis clasificator posibil.
Sarcina ta: Pentru fiecare înregistrare din test.csv:
label_name (NORMAL / GAS_LEAK / OVERHEAT / FIRE)Ieșire: Label-ul prezis (NORMAL, GAS_LEAK, OVERHEAT, sau FIRE) pentru fiecare citire din test.
| Subtask | Punctaj | Criteriu |
|---|---|---|
| 1 | 20 | Toate valorile corecte |
| 2 | 15 | Proporțional cu procentul de scoruri corecte (toleranță ±0.05) |
| 3 | 15 | Proporțional cu procentul de niveluri de risc corecte |
| 4 | 50 | F1-Score Weighted Multi-Class: • F1 ≥ 0.90 → 50 puncte • F1 < 0.60 → 0 puncte • Valorile intermediare → liniar. |
Scor final: 100 puncte maxim.
submission.csv)Structura: subtaskID,datapointID,answer
| subtaskID | datapointID | answer |
|---|---|---|
| 1 | 1-12 | [Valori statistici] |
| 2 | [ID din test.csv] | [Scor anomalie: ex 8.92] |
| 3 | [ID din test.csv] | [Nivel risc: LOW/MEDIUM/HIGH] |
| 4 | [ID din test.csv] | [Label: NORMAL/GAS_LEAK/OVERHEAT/FIRE] |
Detalii:
Subtask 1: 12 rânduri cu statistici fixe
Subtask 2: N rânduri
id din test.csvSubtask 3: N rânduri
id din test.csvLOW, MEDIUM, sau HIGH)Subtask 4: N rânduri
id din test.csvNORMAL, GAS_LEAK, OVERHEAT, FIRE)