Logistic regression
Case 8. Equipment technical failure
This case shows how logistic regression can be used for predictive maintenance.
Case Goal
Estimate the probability that equipment will fail based on its current condition.
This helps to:
1) Reduce downtime
2) Move from reactive repairs to predictive maintenance
3) Save on servicing
Example of use
<?php
use Rubix\ML\Classifiers\LogisticRegression;
use Rubix\ML\Datasets\Labeled;
use Rubix\ML\Datasets\Unlabeled;
// Each sample describes equipment state using 3 numeric indicators.
// Example interpretation:
// - feature #1: temperature
// - feature #2: vibration level
// - feature #3: total operating time
$samples = [
[70, 0.1, 1000],
[95, 0.6, 8000],
[80, 0.2, 2000],
[110, 0.9, 12000],
[75, 0.15, 1500],
[100, 0.7, 9000],
[85, 0.3, 3000],
[108, 0.85, 11000],
];
// 0 = normal, 1 = risk of failure.
// RubixML classifiers require categorical labels, so we store them as strings.
$labels = ['0', '1', '0', '1', '0', '1', '0', '1'];
$dataset = new Labeled($samples, $labels);
$model = new LogisticRegression();
$model->train($dataset);
// New equipment.
$equipment = new Unlabeled([[98, 0.5, 8000]]);
$result = $model->predict($equipment);
$probabilities = $model->proba($equipment);
echo 'Predicted label (1 or 0): ' . $result[0] . "\n";
echo 'Probability of breakdown: ' . $probabilities[0]['1'] . "\n";
echo 'Decision: ';
if ($result[0] == '1') {
echo 'Risk of failure';
} else {
echo 'Normal';
}
Result:
Memory: 1.191 Mb
Time running: 0.022 sec.
Predicted label (1 or 0): 1
Probability of breakdown: 1
Decision: Risk of failure