PHP Régression


Exemple

Dans la classification utilisant PHP-ML nous avons attribué des étiquettes aux nouvelles observations. La régression est presque la même, la différence étant que la valeur de sortie n'est pas une étiquette de classe mais une valeur continue. Il est largement utilisé pour les prévisions et les prévisions. PHP-ML supporte les algorithmes de régression suivants

  • Régression de vecteur de support
  • Régression LeastSquares Linear

La régression a le même train et predict méthodes utilisées dans la classification.

Régression de vecteur de support

Ceci est la version de régression pour SVM (Support Vector Machine). La première étape comme dans la classification est de former notre modèle.

// Import library
use Phpml\Regression\SVR;
use Phpml\SupportVectorMachine\Kernel;

// Training data
$samples = [[60], [61], [62], [63], [65]];
$targets = [3.1, 3.6, 3.8, 4, 4.1];

// Initialize regression engine
$regression = new SVR(Kernel::LINEAR);
// Train regression engine
$regression->train($samples, $targets);

Dans la régression, les $targets ne sont pas des étiquettes de classe, par opposition à la classification. C'est l'un des facteurs de différenciation pour les deux. Après avoir formé notre modèle avec les données, nous pouvons commencer par les prévisions réelles

$regression->predict([64])  // return 4.03

Notez que les prédictions renvoient une valeur en dehors de la cible.

Régression LeastSquares Linear

Cet algorithme utilise la least squares method pour approcher la solution. Ce qui suit démontre un code simple de formation et de prédiction

// Training data
$samples = [[60], [61], [62], [63], [65]];
$targets = [3.1, 3.6, 3.8, 4, 4.1];

// Initialize regression engine
$regression = new LeastSquares();
// Train engine
$regression->train($samples, $targets);
// Predict using trained engine
$regression->predict([64]); // return 4.06

PHP-ML fournit également l'option de Multiple Linear Regression . Un exemple de code pour le même peut être comme suit

$samples = [[73676, 1996], [77006, 1998], [10565, 2000], [146088, 1995], [15000, 2001], [65940, 2000], [9300, 2000], [93739, 1996], [153260, 1994], [17764, 2002], [57000, 1998], [15000, 2000]];
$targets = [2000, 2750, 15500, 960, 4400, 8800, 7100, 2550, 1025, 5900, 4600, 4400];

$regression = new LeastSquares();
$regression->train($samples, $targets);
$regression->predict([60000, 1996]) // return 4094.82

Multiple Linear Regression est particulièrement utile lorsque plusieurs facteurs ou traits identifient le résultat.

Cas pratique

Prenons maintenant une application de régression dans le scénario réel.

Supposons que vous dirigiez un site Web très populaire, mais que le trafic ne cesse de changer. Vous voulez une solution qui prédit le nombre de serveurs à déployer à un moment donné. Supposons que votre hébergeur vous donne une API pour générer des serveurs et que chaque serveur prend 15 minutes pour démarrer. Sur la base des données de trafic précédentes et de la régression, vous pouvez prédire le trafic qui atteindrait votre application à tout moment. En utilisant cette connaissance, vous pouvez démarrer un serveur 15 minutes avant la surtension, empêchant ainsi votre application de se déconnecter.