Pour la suite de ce long tutoriel sur le Machine Learning en PHP, nous allons aborder dans ce chapitre la régression linéaire multiple. La régression linéaire est l’une des techniques les plus accessibles et puissantes du Machine Learning. Elle permet de comprendre comment plusieurs facteurs influencent un résultat et de prédire ce résultat avec précision.
Dans ce chapitre, nous allons donc explorer la régression linéaire multiple, une variante qui prend en compte plusieurs variables à la fois, pour prédire le nombre de ventes d’une boutique en ligne, cela nous servira d’exemple concret. Nous utiliserons un exemple concret, des explications simples et du code en PHP pour que vous puissiez appliquer ces concepts immédiatement.
- Qu’est-ce que la régression linéaire multiple ?
- À quoi sert la régression linéaire multiple ?
- Les avantages et limites de la régression linéaire multiple
- Quand utiliser la régression linéaire multiple ?
- Exemple concret : prédire les ventes d’une boutique en ligne
- Enrichir et nourrir le modèle de données
- Évaluer la qualité du modèle
- Bonnes pratiques pour un modèle fiable
- Optimiser le modèle de régression linéaire multiple
- Visualiser les prédictions
- Gérer la saisonnalité et les jours exceptionnels
- Conseils pour améliorer encore vos prédictions
- La régression linéaire multiple est indispensable
- Régression linéaire avancée : prédire vos ventes en ligne avec précision
Qu’est-ce que la régression linéaire multiple ?
La régression linéaire multiple est une méthode statistique utilisée pour modéliser la relation entre une variable dépendante et plusieurs variables indépendantes. En d’autres termes, elle vous permet de prédire un résultat (le nombre de ventes d’une boutique en ligne) en fonction de plusieurs facteurs (le nombre de visiteurs, le jour de la semaine ou le mois de l’année).
Contrairement à la régression linéaire simple, qui ne prend en compte qu’une seule variable explicative, la régression linéaire multiple permet de modéliser des scénarios plus complexes et réalistes.
Par exemple, vos ventes quotidiennes ne dépendent pas uniquement du nombre de visiteurs, mais aussi de la saison, du jour de la semaine, des promotions en cours, et d’autres paramètres que vous pouvez intégrer dans le modèle.
Mathématiquement, la régression linéaire multiple se représente ainsi :

Ici, Y est la variable que l’on souhaite prédire (le nombre de ventes), X1,X2,X3,…sont les variables explicatives (visiteurs, jour de la semaine, mois…), β0 est l’ordonnée à l’origine, β1,β2,… sont les coefficients de chaque variable et ϵ représente l’erreur du modèle.
À quoi sert la régression linéaire multiple ?
La régression linéaire multiple est utilisée pour deux principaux objectifs :
- Comprendre l’impact des facteurs sur un résultat : elle permet de déterminer quels paramètres influencent le plus vos ventes. Par exemple, vous pouvez découvrir que le jour de la semaine a un effet plus important que le nombre de visiteurs.
- Prédire un résultat futur : une fois que le modèle est entraîné avec des données historiques, il peut prédire combien de ventes vous pourriez réaliser demain ou la semaine prochaine, en fonction des variables que vous fournissez.
Cette double capacité, à la fois analytique et prédictive, est ce qui rend la régression linéaire multiple particulièrement adaptée aux boutiques en ligne. Elle permet d’anticiper les pics de ventes, d’ajuster les stocks ou de planifier des campagnes marketing plus efficaces.
Les avantages et limites de la régression linéaire multiple
Comme toute méthode de Machine Learning, la régression linéaire multiple a ses points forts et ses limites.
Elle est facile à comprendre et à implémenter, même pour les débutants. Son fonctionnement repose sur des notions simples de statistiques et d’algèbre. Elle fournit des résultats interprétables : les coefficients β indiquent clairement l’impact de chaque variable sur la vente. Enfin, elle est rapide à exécuter et ne nécessite pas de ressources informatiques importantes.
Limites de la régression linéaire multiple
Cependant, la régression linéaire multiple suppose que la relation entre les variables et le résultat est linéaire. Si vos ventes dépendent de facteurs de manière non linéaire, le modèle sera moins performant. Elle est également sensible aux outliers (valeurs extrêmes) et à la multicolinéarité, c’est-à-dire lorsque certaines variables explicatives sont fortement corrélées entre elles. Enfin, elle ne capture pas d’interactions complexes entre les variables, contrairement à des méthodes plus avancées comme les réseaux neuronaux.
Quand utiliser la régression linéaire multiple ?
Vous devriez utiliser la régression linéaire multiple lorsque :
- Vous avez plusieurs facteurs susceptibles d’influencer un résultat.
- Vous souhaitez prédire un résultat continu (nombre de ventes, chiffre d’affaires, température, etc.).
- Vous cherchez à comprendre les relations entre vos variables pour orienter vos décisions.
Elle est idéale pour les boutiques en ligne, les analyses marketing, la prévision des stocks ou encore l’optimisation des campagnes publicitaires.
Exemple concret : prédire les ventes d’une boutique en ligne
Pour illustrer le fonctionnement de la régression linéaire multiple, nous allons créer un exemple concret. Nous souhaitons prédire le nombre de ventes quotidiennes d’une boutique en ligne en fonction de trois facteurs :
- Nombre de visiteurs (X1) : plus votre site reçoit de visiteurs, plus les ventes sont susceptibles d’augmenter.
- Jour de la semaine (X2) : les ventes ne sont pas identiques le lundi et le samedi.
- Mois de l’année (X3) : certaines périodes (Noël, soldes d’été) influencent fortement les ventes.
Nous allons utiliser PHP avec une bibliothèque de Machine Learning pour entraîner un modèle et effectuer nos prédictions.
Préparer l’environnement PHP pour le Machine Learning
Pour cet exemple, nous utiliserons la bibliothèque Rubix ML, qui est l’une des rares bibliothèques PHP spécialisées en Machine Learning. Elle est simple à installer via Composer :
composer require rubix/ml
Une fois installée, nous pouvons créer notre script PHP pour entraîner et utiliser notre modèle.
Créer un jeu de données simple
Avant toute prédiction, il faut disposer de données historiques. Voici un exemple simplifié :
<?php
require 'vendor/autoload.php';
use Rubix\ML\Datasets\Labeled;
use Rubix\ML\Regressors\Ridge;
use Rubix\ML\Datasets\Unlabeled;
// Création d’un tableau de données
// Chaque sous-tableau correspond à une journée : [Nombre de visiteurs, Jour de la semaine, Mois]
$samples = [
[120, 1, 1],
[150, 2, 1],
[100, 3, 1],
[200, 4, 1],
[300, 5, 1],
[250, 6, 1],
[400, 7, 1],
[180, 1, 2],
[220, 2, 2],
];
// Nombre de ventes correspondantes à chaque journée
$labels = [5, 7, 4, 8, 10, 9, 12, 6, 8];
// Création du jeu de données étiqueté
$dataset = new Labeled($samples, $labels);
Ici, chaque entrée du tableau $samples
contient le nombre de visiteurs, le jour de la semaine (1 = lundi, 7 = dimanche), et le mois (1 = janvier, 2 = février…). Le tableau $labels
correspond au nombre de ventes observé ces jours-là.
Entraîner le modèle de régression linéaire multiple
Ensuite, nous allons créer et entraîner notre modèle :
// Création du modèle de régression linéaire
$regressor = new Ridge();
// Entraînement du modèle sur le jeu de données
$regressor->train($dataset);
echo "Modèle entraîné avec succès !\n";
Cette étape va calculer les coefficients ββ pour chaque variable afin de prédire le nombre de ventes.
Prédire de nouvelles ventes
Une fois le modèle entraîné, vous pouvez prédire le nombre de ventes pour une nouvelle journée :
// Création d'un jeu de données non-étiqueté pour la prédiction
// Exemple : 250 visiteurs, un lundi (1), en février (2)
$predictionDataset = new Unlabeled([[250, 1, 2]]);
// Prédiction
$predictions = $regressor->predict($predictionDataset);
echo "Nombre de ventes prévu : " . round($predictions[0]) . "\n";
Cette prédiction vous indique combien de ventes vous pouvez espérer pour ces conditions spécifiques.
Enrichir et nourrir le modèle de données
Un modèle de régression linéaire n’est efficace que si les données qui l’alimentent sont représentatives et suffisamment nombreuses. Plus vous avez de journées historiques, plus votre modèle pourra capturer les variations naturelles de vos ventes.
Ajouter des données
Pour enrichir notre modèle, il faut accumuler des informations supplémentaires sur vos ventes passées. Par exemple, vous pouvez inclure des données sur plusieurs mois, voire plusieurs années. Voici comment modifier notre jeu de données en PHP :
$samples = [
[120, 1, 1], [150, 2, 1], [100, 3, 1], [200, 4, 1], [300, 5, 1], [250, 6, 1], [400, 7, 1],
[180, 1, 2], [220, 2, 2], [250, 3, 2], [300, 4, 2], [350, 5, 2], [280, 6, 2], [420, 7, 2],
[200, 1, 3], [240, 2, 3], [260, 3, 3], [310, 4, 3], [360, 5, 3], [290, 6, 3], [430, 7, 3]
];
$labels = [5, 7, 4, 8, 10, 9, 12, 6, 8, 7, 9, 11, 10, 13, 7, 9, 8, 10, 12, 11, 14];
Chaque ligne supplémentaire enrichit le modèle, lui permettant de mieux comprendre la saisonnalité et les variations selon les jours de la semaine.
Préparer correctement les variables
Certaines variables ne sont pas directement numériques ou peuvent être mal interprétées par le modèle.
- Jour de la semaine : le lundi n’est pas simplement “1” et le dimanche “7”, mais il peut être utile de transformer cette variable en valeurs catégorielles pour que le modèle comprenne mieux les différences.
- Mois de l’année : pour capturer la saisonnalité, vous pouvez utiliser les valeurs 1 à 12, mais si votre modèle semble linéairement limité, il peut être intéressant d’utiliser des transformations trigonométriques (sine/cosine) pour représenter la circularité du calendrier.
Par exemple, pour le jour de la semaine :
$dayOfWeek = 1; // lundi
$dayEncoded = array_fill(0, 7, 0);
$dayEncoded[$dayOfWeek - 1] = 1; // encodage one-hot
Cela génère un tableau comme [1,0,0,0,0,0,0]
pour lundi, [0,1,0,0,0,0,0]
pour mardi, etc. Le modèle comprendra mieux les différences entre chaque jour.
Évaluer la qualité du modèle
Il est essentiel de mesurer la performance de votre régression linéaire. Pour cela, Rubix ML propose plusieurs métriques. La plus utilisée pour la régression est l’erreur quadratique moyenne (Mean Squared Error, MSE).
<?php
require 'vendor/autoload.php';
use Rubix\ML\Datasets\Labeled;
use Rubix\ML\Regressors\Ridge;
use Rubix\ML\Datasets\Unlabeled;
use Rubix\ML\CrossValidation\Metrics\MeanSquaredError;
// Création d’un tableau de données
// Chaque sous-tableau correspond à une journée : [Nombre de visiteurs, Jour de la semaine, Mois]
$samples = [
[120, 1, 1],
[150, 2, 1],
[100, 3, 1],
[200, 4, 1],
[300, 5, 1],
[250, 6, 1],
[400, 7, 1],
[180, 1, 2],
[220, 2, 2],
];
// Nombre de ventes correspondantes à chaque journée
$labels = [5, 7, 4, 8, 10, 9, 12, 6, 8];
// Création du jeu de données étiqueté
$dataset = new Labeled($samples, $labels);
// Diviser le jeu de données en un ensemble d'entraînement (80%) et un ensemble de test (20%)
[$training, $testing] = $dataset->stratifiedSplit(0.8);
// Création du modèle de régression
$regressor = new Ridge();
// Entraînement du modèle sur le jeu de données
$regressor->train($training);
echo "Modèle entraîné avec succès !\n";
// Évaluation du modèle sur l'ensemble de test
$predictionsOnTest = $regressor->predict($testing);
$metric = new MeanSquaredError();
$score = $metric->score($predictionsOnTest, $testing->labels());
echo "Erreur Quadratique Moyenne (MSE) sur le jeu de test : " . $score . "\n";
// Création d'un jeu de données non-étiqueté pour la prédiction
// Exemple : 250 visiteurs, un lundi (1), en février (2)
$predictionDataset = new Unlabeled([[250, 1, 2]]);
// Prédiction
$predictions = $regressor->predict($predictionDataset);
echo "Nombre de ventes prévu : " . round($predictions[0]) . "\n";
Un MSE faible indique que le modèle prédit correctement le nombre de ventes. Si le MSE est élevé, cela signifie que votre modèle doit être amélioré, soit par plus de données, soit par un meilleur traitement des variables.
Vérifier la multicolinéarité
La multicolinéarité se produit lorsque certaines variables sont fortement corrélées entre elles. Par exemple, le nombre de visiteurs et le nombre de commandes peuvent être naturellement corrélés. Cela peut perturber la régression linéaire multiple.
Pour gérer cela :
- Vérifiez la corrélation entre vos variables avec des coefficients de corrélation.
- Supprimez les variables trop corrélées ou combinez-les dans une seule variable.
- Utilisez éventuellement une régression régularisée (Ridge ou Lasso), si Rubix ML le permet, pour stabiliser le modèle.
Améliorer les prédictions
Vous pouvez rendre votre modèle plus performant en ajoutant de nouvelles variables pertinentes. Pour une boutique en ligne, pensez à intégrer :

Des formations informatique pour tous !
Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…
Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.
Découvrez mes formations Qui suis-je ?- Les promotions en cours (0 ou 1 selon qu’il y ait une promotion).
- Les campagnes marketing spécifiques (emails, publicités payantes).
- Les données météo si vous vendez des produits saisonniers.
- L’historique des ventes des jours précédents pour capturer la tendance.
Chaque nouvelle variable augmente la capacité du modèle à comprendre les fluctuations réelles de vos ventes, à condition qu’elle soit pertinente et correctement encodée.
Prédire avec des variables enrichies
Avec les variables supplémentaires, la prédiction devient plus précise. Voici un exemple avec l’ajout d’une variable “promotion” :
// Nouvelles données avec variable promotion (1 = promotion en cours, 0 = pas de promotion)
$newSample = [250, 1, 2, 1]; // 250 visiteurs, lundi, février, promotion en cours
$prediction = $regressor->predict($newSample);
echo "Nombre de ventes prévu avec promotion : " . round($prediction) . "\n";
Le modèle prend désormais en compte l’effet des promotions sur les ventes.
Bonnes pratiques pour un modèle fiable
- Collecter suffisamment de données : quelques jours ou semaines ne suffisent pas. Plus votre historique est long, mieux le modèle peut apprendre les tendances.
- Préparer les variables correctement : encoder les variables catégorielles, normaliser si nécessaire les variables numériques.
- Tester sur des données indépendantes : ne jamais évaluer le modèle sur les mêmes données qu’il a apprises.
- Surveiller les erreurs et ajuster : si le modèle fait des erreurs importantes sur certains jours ou mois, analysez pourquoi et ajoutez des variables explicatives si possible.
Optimiser le modèle de régression linéaire multiple
L’optimisation consiste à améliorer la précision de vos prédictions et à éviter que le modèle ne se trompe trop souvent.
Utiliser la régression régularisée
La régression régularisée (Ridge ou Lasso) permet de réduire le risque de sur-apprentissage et de gérer la multicolinéarité.
- Ridge ajoute une pénalité sur la somme des carrés des coefficients, ce qui permet de stabiliser les valeurs et de réduire l’influence des variables trop corrélées.
- Lasso ajoute une pénalité sur la somme des valeurs absolues des coefficients, ce qui peut réduire certains coefficients à zéro et simplifier le modèle.
Rubix ML propose ces options. Exemple avec Ridge :
use Rubix\ML\Regressors\Ridge;
$regressor = new Ridge(0.1); // 0.1 est le paramètre de régularisation
$regressor->train($dataset);
$prediction = $regressor->predict([250, 1, 2]);
echo "Prédiction optimisée : " . round($prediction) . "\n";
Le paramètre de régularisation permet de contrôler l’influence de chaque variable. Plus la valeur est élevée, plus le modèle “pénalise” les coefficients élevés, ce qui peut réduire le sur-apprentissage.
Normaliser les variables
Lorsque vos variables ont des ordres de grandeur différents (ex. nombre de visiteurs vs jour de la semaine), il est conseillé de normaliser vos données pour que chaque variable ait le même poids lors de l’apprentissage.
use Rubix\ML\Transformers\ZScaleStandardizer;
$transformer = new ZScaleStandardizer();
$transformer->fit($dataset);
$dataset = $transformer->transform($dataset);
$regressor->train($dataset);
Cette étape améliore la stabilité et la performance de la régression.
Mise en production : prédire les ventes au quotidien
Une fois le modèle entraîné et optimisé, vous pouvez l’utiliser pour prédire vos ventes chaque jour. Voici une approche pratique :
- Stocker le modèle entraîné pour ne pas le recalculer à chaque prédiction :
use Rubix\ML\Persisters\Filesystem;
$persister = new Filesystem('modele_ventes.rbx');
$persister->save($regressor);
// Plus tard, vous pouvez le recharger
$regressor = $persister->load();
- Récupérer les données du jour : nombre de visiteurs, jour de la semaine, mois, promotions.
- Effectuer la prédiction :
$newSample = [300, 5, 9, 1]; // Exemple : 300 visiteurs, vendredi, septembre, promotion active
$prediction = $regressor->predict($newSample);
echo "Prévision des ventes pour aujourd'hui : " . round($prediction) . "\n";
Vous pouvez automatiser cette étape avec un script cron pour générer la prédiction chaque matin et l’afficher dans votre tableau de bord.
Visualiser les prédictions
La visualisation des résultats permet de mieux comprendre les tendances et de détecter les anomalies. Même si vous utilisez PHP, il est possible de générer des graphiques simples avec des bibliothèques comme Chart.js ou Google Charts.
Exemple d’utilisation avec Chart.js :
<canvas id="ventesChart"></canvas>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
const ctx = document.getElementById('ventesChart').getContext('2d');
const ventesChart = new Chart(ctx, {
type: 'line',
data: {
labels: ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche'],
datasets: [{
label: 'Ventes prévues',
data: [5, 7, 4, 8, 10, 9, 12], // Remplacer par vos prédictions
borderColor: 'blue',
fill: false
}]
}
});
</script>
Vous pouvez créer plusieurs graphiques pour comparer les ventes prévues avec les ventes réelles, ou pour observer l’impact des promotions et de la saisonnalité.
Gérer la saisonnalité et les jours exceptionnels
Certaines périodes, comme Noël ou les soldes, peuvent fortement influencer vos ventes. Il est important que votre modèle prenne en compte ces variations :
- Variables supplémentaires : incluez une variable “fête/événement” (0 ou 1) pour chaque jour concerné.
- Historique plus long : plus vous disposez de données sur plusieurs années, plus le modèle pourra identifier les tendances saisonnières.
- Éviter la sur-confiance : les jours exceptionnels peuvent générer des ventes inhabituelles ; il ne faut pas surpondérer ces données au risque de fausser les prédictions pour les jours normaux.
Conseils pour améliorer encore vos prédictions
- Mettre à jour le modèle régulièrement : chaque mois ou chaque semaine, réentraîner le modèle avec les nouvelles données pour qu’il reste précis.
- Tester différentes configurations : Ridge, Lasso, normalisation des variables, encodage one-hot pour les jours ou mois.
- Analyser les erreurs : si certaines journées sont mal prédites, comprendre pourquoi et ajuster le modèle ou les variables.
- Surveiller la tendance générale : même si certaines prévisions individuelles sont légèrement incorrectes, le modèle doit capturer correctement la tendance globale des ventes.
La régression linéaire multiple est indispensable
La régression linéaire multiple est un outil simple mais puissant pour les boutiques en ligne. Elle vous permet non seulement de prévoir le nombre de ventes en fonction de multiples facteurs, mais aussi de comprendre l’impact de chacun d’eux. En enrichissant vos données, en optimisant le modèle et en visualisant les résultats, vous pouvez anticiper les fluctuations des ventes, mieux planifier vos stocks et ajuster vos campagnes marketing.
Bien que cette méthode ait ses limites — elle suppose une relation linéaire et ne capture pas toutes les interactions complexes — elle reste une première étape accessible pour intégrer le Machine Learning dans votre stratégie e-commerce. Avec PHP et Rubix ML, vous pouvez mettre en place un modèle complet, autonome et régulièrement mis à jour pour maximiser vos performances.
En appliquant ces principes, vous transformez vos données brutes en un outil décisionnel puissant, capable de vous guider dans vos choix quotidiens et stratégiques. La régression linéaire multiple devient alors un allié incontournable pour toute boutique en ligne qui souhaite prédire ses ventes avec précision.
Régression linéaire avancée : prédire vos ventes en ligne avec précision
Après avoir vu les bases et les optimisations de la régression linéaire multiple, nous allons maintenant construire un exemple complet et réaliste pour prédire le nombre de ventes d’une boutique en ligne. Ce tutoriel est pensé pour être directement utilisable et facilement compréhensible, même si vous êtes débutant en Machine Learning.
Préparer un jeu de données complet
Pour un modèle robuste, il est crucial d’inclure toutes les variables pertinentes. Nous allons considérer :
- Le nombre de visiteurs du site (X1).
- Le jour de la semaine (X2), encodé en one-hot pour mieux représenter les différences entre jours.
- Le mois (X3), encodé de manière circulaire pour capturer la saisonnalité.
- Une variable promotion (X4), indiquant si une promotion est en cours.
- Une variable événement spécial (X5), pour Noël, soldes ou autres pics saisonniers.
Voici comment préparer ces données en PHP avec Rubix ML :
<?php
require 'vendor/autoload.php';
use Rubix\ML\Datasets\Labeled;
use Rubix\ML\Transformers\ZScaleStandardizer;
use Rubix\ML\Regressors\Ridge;
use Rubix\ML\Datasets\Unlabeled;
use Rubix\ML\Persisters\Filesystem;
use Rubix\ML\PersistentModel;
// Exemple simplifié de données
$samples = [
[120, 1, 1, 0, 0],
[150, 2, 1, 0, 0],
[100, 3, 1, 0, 0],
[200, 4, 1, 1, 0],
[300, 5, 1, 0, 1],
[250, 6, 1, 0, 0],
[400, 7, 1, 1, 0],
[180, 1, 2, 0, 0],
[220, 2, 2, 0, 0],
[250, 3, 2, 1, 0],
[300, 4, 2, 0, 0],
[350, 5, 2, 0, 1],
[280, 6, 2, 1, 0],
[420, 7, 2, 0, 0]
];
// Nombre de ventes correspondant
$labels = [5, 7, 4, 8, 10, 9, 12, 6, 8, 7, 9, 11, 10, 13];
// Création du dataset
$dataset = new Labeled($samples, $labels);
// Création du pipeline avec le normaliseur et le régresseur
$transformer = new ZScaleStandardizer();
// Appliquons la transformation et entraînons le modèle
$dataset->apply($transformer);
Ici, le jour de la semaine et le mois sont codés numériquement, mais nous pourrions utiliser un encodage one-hot pour des performances encore meilleures si nécessaire. Les variables promotion et événement sont binaires (0 ou 1).
Entraîner un modèle optimisé
Nous allons utiliser Ridge Regression pour stabiliser le modèle et éviter les problèmes de multicolinéarité :
// Encapsulons le modèle dans un PersistentModel pour le sauvegarder
$estimator = new PersistentModel(
new Ridge(0.1), // Le modèle à entraîner
new Filesystem('modele_ventes_avance.rbx') // L'objet pour sauvegarder/charger
);
$estimator->train($dataset);
$estimator->save();
echo "Modèle avancé entraîné et sauvegardé !\n";
Prédire les ventes avec le modèle avancé
Pour prédire les ventes d’un jour particulier, il suffit de fournir toutes les variables du jour :
// Exemple : 300 visiteurs, vendredi, septembre, promotion active, pas d'événement spécial
$newSample = [[300, 5, 9, 1, 0]];
// Créer un dataset non étiqueté pour la prédiction
$predictionDataset = new Unlabeled($newSample);
// Appliquer la même transformation que pour l'entraînement
$predictionDataset->apply($transformer);
// Si vous rechargez le modèle
$estimator = PersistentModel::load(new Filesystem('modele_ventes_avance.rbx'));
$prediction = $estimator->predict($predictionDataset);
echo "Prévision des ventes pour ce jour : " . round($prediction[0]) . "\n";
Cette prédiction prend en compte tous les facteurs clés et est donc plus précise qu’un simple modèle linéaire de base.
Visualiser les ventes prévues et réelles
Visualiser les tendances est essentiel pour comprendre le comportement de vos ventes et ajuster vos stratégies. Vous pouvez utiliser Chart.js pour afficher vos données :
<canvas id="ventesChart"></canvas>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
const ctx = document.getElementById('ventesChart').getContext('2d');
const ventesChart = new Chart(ctx, {
type: 'line',
data: {
labels: ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche'],
datasets: [{
label: 'Ventes prévues',
data: [5, 7, 4, 8, 10, 9, 12],
borderColor: 'blue',
fill: false
},
{
label: 'Ventes réelles',
data: [6, 6, 5, 9, 11, 10, 13],
borderColor: 'red',
fill: false
}]
}
});
</script>
Vous pouvez ainsi comparer vos prédictions aux ventes réelles et identifier les jours où le modèle pourrait être amélioré.
Automatiser les prédictions quotidiennes
Pour rendre votre système pratique, vous pouvez automatiser la prédiction chaque jour :
- Créez un script PHP qui récupère automatiquement les données du jour (visiteurs, promotions, événement).
- Chargez le modèle sauvegardé.
- Effectuez la prédiction et stockez le résultat dans une base de données ou envoyez-le sur un tableau de bord.
Exemple d’automatisation simple :
// Récupération des données (exemple fictif)
$todayData = [250, date('N'), date('n'), 1, 0]; // visiteurs, jour, mois, promo, événement
$regressor = $persister->load();
$prediction = $regressor->predict($todayData);
echo "Ventes prévues aujourd'hui : " . round($prediction) . "\n";
// Ici vous pouvez sauvegarder la valeur en DB pour suivi
Avec un cron job, ce script peut s’exécuter automatiquement chaque matin pour vous fournir la prévision de la journée.
Conseils pour aller plus loin
- Ajouter l’historique des ventes : inclure les ventes des jours précédents comme variable pour capturer les tendances et l’effet des achats récurrents.
- Tester différentes valeurs de régularisation : ajuster le paramètre Ridge pour trouver le meilleur compromis entre biais et variance.
- Surveiller les erreurs : calculez l’erreur quadratique moyenne chaque semaine pour détecter des dérives dans le modèle.
- Visualiser la saisonnalité : créez des graphiques mensuels pour détecter les pics liés aux saisons ou événements.
- Intégrer d’autres variables pertinentes : météo, campagnes publicitaires, trafic provenant des réseaux sociaux.
Ce chapitre vous a montré comment passer d’une régression linéaire multiple simple à un modèle avancé capable de prédire vos ventes en ligne avec une réelle précision. Grâce à l’encodage des variables, à la régularisation, à la normalisation et à l’automatisation, vous pouvez transformer vos données historiques en un outil décisionnel puissant.
Vous pouvez désormais :
- Prédire les ventes quotidiennes en fonction de plusieurs facteurs.
- Visualiser les tendances et ajuster vos stratégies marketing.
- Automatiser les prévisions pour gagner du temps et réagir rapidement.
La régression linéaire multiple, combinée à des bonnes pratiques en Machine Learning, devient ainsi un véritable atout stratégique pour toute boutique en ligne souhaitant anticiper les variations de son activité et optimiser ses ventes.
Chapitre 4 : Naive Bayes multinomial →