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

 
<?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 = [
    [
700.11000],
    [
950.68000],
    [
800.22000],
    [
1100.912000],
    [
750.151500],
    [
1000.79000],
    [
850.33000],
    [
1080.8511000],
];

// 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([[980.58000]]);

$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