File size: 2,677 Bytes
897d513
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
{
  "model": "RandomForest",
  "task": "binary-classification (failure state 10 min ahead from a 60-min window)",
  "dataset": "Synthetic elevator IoT month (seeded generator, 44,640 minutely rows, 11 sensors)",
  "split": "test",
  "primary_metric": {
    "name": "f1",
    "value": 0.988235
  },
  "metrics": {
    "f1": 0.988235,
    "precision": 0.988235,
    "recall": 0.988235,
    "accuracy": 0.996983,
    "pr_auc": 0.988996,
    "roc_auc": 0.992683
  },
  "threshold": 0.37666666666666665,
  "confusion_matrix": {
    "tn": 1154,
    "fp": 2,
    "fn": 2,
    "tp": 168
  },
  "selection": {
    "rule": "highest validation F1 (ties: validation PR-AUC); threshold = max F1 on validation",
    "val": {
      "f1": 0.988764,
      "precision": 0.988764,
      "recall": 0.988764,
      "accuracy": 0.996983,
      "pr_auc": 0.981391,
      "roc_auc": 0.996286
    }
  },
  "comparison": {
    "RandomForest": {
      "val_f1": 0.988764,
      "val_pr_auc": 0.981391,
      "threshold": 0.376667,
      "f1": 0.988235,
      "precision": 0.988235,
      "recall": 0.988235,
      "accuracy": 0.996983,
      "pr_auc": 0.988996,
      "roc_auc": 0.992683,
      "params": 10408,
      "train_time_s": 2.9
    },
    "CNN-1D": {
      "val_f1": 0.911681,
      "val_pr_auc": 0.821253,
      "threshold": 0.188755,
      "f1": 0.958084,
      "precision": 0.97561,
      "recall": 0.941176,
      "accuracy": 0.989442,
      "pr_auc": 0.938044,
      "roc_auc": 0.995726,
      "params": 52993,
      "train_time_s": 64.5
    },
    "LSTM": {
      "val_f1": 0.9375,
      "val_pr_auc": 0.954144,
      "threshold": 0.166041,
      "f1": 0.932927,
      "precision": 0.968354,
      "recall": 0.9,
      "accuracy": 0.983409,
      "pr_auc": 0.920017,
      "roc_auc": 0.990769,
      "params": 23681,
      "train_time_s": 146.1
    }
  },
  "examples": {
    "failing": 0.813333,
    "degrading": 0.92,
    "healthy": 0.003333
  },
  "data": {
    "n_train": 6236,
    "n_val": 1326,
    "n_test": 1326,
    "n_failure_train": 413,
    "n_failure_val": 178,
    "n_failure_test": 170,
    "n_rows": 44640,
    "n_features": 63,
    "n_classes": 2,
    "window": 60,
    "label_lag": 10,
    "stride": 5,
    "synthetic": true
  },
  "params": 10408,
  "params_note": "RandomForest size = total tree nodes (Keras rows: weights)",
  "train_time_s": 248.0,
  "device": "cpu",
  "smoke": false,
  "source": "retrained 2026-09-25 with training/ (local CPU) on the synthetic month",
  "versions": {
    "sklearn": "1.9.1",
    "numpy": "2.5.3",
    "pandas": "3.0.6",
    "joblib": "1.6.0",
    "tensorflow": "2.21.0",
    "keras": "3.15.1"
  },
  "trained_at": "2026-09-25"
}