L’Oracle

Socle de données et prévision évaluée dans le temps

Rôle
Données, modélisation, évaluation, produit
Outils
  • Python
  • SQLite (WAL)
  • LightGBM
  • scikit-learn
  • PyTorch
  • MiniLM
  • TimesFM
  • MLX (LoRA)
  • MCP
  • REST
  • launchd
Statut
Fonctionnel
Le tableau de bord, chaîne en direct : statistiques exactes, vélocité et vues à 28 jours attendues pour chaque vidéo récente.
Le tableau de bord, chaîne en direct : statistiques exactes, vélocité et vues à 28 jours attendues pour chaque vidéo récente.
d’erreur sur les vues à 28 jours face à la médiane glissante : MAE log10 0,499 → 0,393 (102 vidéos de test)
−21 %
couverture mesurée de l’intervalle à 80 % (71 % avant), plus étroit : ×4,64 contre ×5,04
81 %
modèles comparés en walk-forward, départagés par une porte de qualité statistique
13
pour le backtest complet sur CPU (335 s avant)
≈ 90 s
Le problème
Savoir ce qu’une prévision vaut vraiment demande un socle de données unique et une évaluation qui respecte le temps.
Pour qui
La chaîne LaRefVlog : décider chaque matin de quoi parler et combien de vues attendre, avec des données qui restent en local.
Le résultat
Un socle unique, treize modèles jugés en walk-forward et une porte de qualité écrite d’avance. Le prédicteur « régime chaîne » ramène la MAE log10 de 0,499 à 0,393 : −21 % d’erreur face à la médiane glissante, avec un intervalle à 80 % couvert à 81 %.

Contexte

Avant de tourner un short, deux questions : de quoi parler aujourd’hui, et combien de vues attendre d’une idée, avec une incertitude chiffrée.

La refonte du 20 octobre part du protocole : un seul entrepôt partagé avec Radar, une évaluation chronologique, et une règle de choix écrite avant la mesure. Un modèle appris n’entre en production que si l’intervalle de confiance à 90 % de son gain exclut zéro.

Ce que j’ai construit

  • Socle partagé avec Radar : 348 vidéos, 1 457 instantanés horodatés, 904 articles de 30 sources, tendances et Wikipédia ; santé de chaque source à chaque passage.
  • Prédicteur « régime chaîne » : vues quotidiennes des 7 derniers jours rapportées aux vidéos actives sur 28 jours. Connu le jour même, il supprime les 28 jours de retard de la médiane glissante : −21 % d’erreur, IC 90 % du gain [0,044 ; 0,166] en log10.
  • Backtest walk-forward purgé (embargo de 28 jours, 4 plis) : 13 modèles, des médianes de référence au LightGBM régularisé sur l’écart au régime, tous jugés sur les mêmes 102 vidéos.
  • Signaux testés à armes égales : presse reconstituée pour 348 vidéos, effet du titre appris sur 2 182 shorts de 10 chaînes comparables ; la porte de qualité ne retient que ce qui gagne.
  • Intervalle à 80 % par conformal glissant asymétrique sur les 60 derniers résidus, et nowcasting : la dernière mesure d’une vidéo récente est ramenée à 28 jours par une courbe de croissance ajustée sur les instantanés.
  • Idées classées : sujets chauds, rédaction, filtres, fourchette P10–P50–P90 et score expliqué ; LoRA entraîné sur les titres de la chaîne pour la rédaction.
  • Produit : une CLI, un tableau de bord à quatre vues, une API REST, un serveur MCP à 9 outils et un service planifié hors de ~/Documents ; 49 tests.

Architecture 7 briques

  1. 01 · EntréeCollecteursChaîne et instantanés, presse FR, tendances, Wikipédia
  2. 02 · DonnéesSocleUn entrepôt SQLite partagé avec Radar, santé des sources
  3. 03 · ModèleWalk-forward13 modèles : régime chaîne, médianes, Ridge, HistGB, LightGBM, MLP, mélange ; embargo 28 j
  4. 04 · OutilRègle de choixUn modèle appris seulement si l’IC 90 % de son gain exclut 0
  5. 05 · ModèleIntervalles et nowcastConformal glissant à 80 %, courbe de croissance
  6. 06 · ModèleIdéesSujets chauds, rédaction LLM ou gabarits, filtres, classement
  7. 07 · SortieServiceCLI, tableau de bord, API REST, MCP à 9 outils

Les calculs lourds (TimesFM, LoRA, génération LLM) passent par une file GPU, un job à la fois.

Fabrication 6 étapes

  1. CollecteChaîne, presse, tendances, Wikipédia.
  2. SocleUn entrepôt SQLite, une configuration.
  3. Walk-forwardTreize modèles, embargo de 28 jours.
  4. IntervallesConformal glissant à 80 %, couverture 81 %.
  5. NowcastVidéos de moins de 28 jours.
  6. IdéesRédaction, filtres, classement.

Décisions le choix, la raison, l’alternative écartée

  1. D1
    Évaluer dans le temps (walk-forward purgé, embargo de 28 jours) plutôt qu’en validation croisée mélangée.

    Le niveau de la chaîne dérive dans le temps : seule une évaluation chronologique mesure l’erreur réelle. En walk-forward, la médiane glissante atteint une MAE de 1,44 sur le CTR, contre 2,25 pour le mélange.

    ÉcartéLa validation croisée mélangée, optimiste sur une série qui dérive.

  2. D2
    Écrire la règle de choix avant la mesure : la baseline reste en production tant qu’aucun gain n’est significatif.

    La porte tranche sans biais : le régime chaîne, meilleur prédicteur mesuré (−21 % d’erreur face à la médiane glissante, IC 90 % du gain [0,044 ; 0,166]), est en production.

    ÉcartéChoisir le modèle le plus sophistiqué.

  3. D3
    Prédire à partir du régime du jour (vues quotidiennes 7 j ÷ vidéos actives 28 j) plutôt que de la médiane des vidéos mûres.

    La médiane suit la chaîne avec 28 jours de retard ; le régime est connu le jour même et suit les changements de tendance : MAE log10 de 0,499 à 0,393.

    ÉcartéLa médiane glissante des 30 dernières vidéos.

  4. D4
    Un intervalle conformal glissant asymétrique, sur les 60 derniers résidus connus, et publier sa couverture réelle.

    Couverture mesurée de 81 % pour une cible de 80 % (71 % avant), avec une fourchette plus étroite : ×4,64 contre ×5,04.

  5. D5
    Entraîner le LoRA d’idées sur un modèle qui tient dans la machine.

    Dimensionné pour 16 Go : Qwen3 4B en 4 bits s’entraîne en 47 min avec 4,5 Go de pic ; sur 36 cas tenus à l’écart, 97 % des titres respectent le format de la chaîne (0 % pour le modèle de base). Un 9B relève d’un GPU de 24 Go.

    ÉcartéUn LoRA 9B, qui demande un GPU dédié.

Résultats

Vues à 28 jours, walk-forward (102 vidéos de test, 4 plis)

Modèle (extrait des 13)MAE log10Écart au régime chaîne [IC 90 %]
Régime chaîne (vues par vidéo active)0,393—
LightGBM régularisé, écart rétréci0,403−0,010 [−0,029 ; 0,009]
Ridge sur l’écart au régime0,455−0,062 [−0,112 ; −0,010]
Médiane glissante 30 vidéos0,499−0,106 [−0,166 ; −0,044]
Médiane glissante par format0,506−0,113 [−0,173 ; −0,050]
LightGBM quantile0,579−0,186 [−0,269 ; −0,103]
Mélange (Ridge, HGB, MLP, LGBM)0,587−0,194 [−0,274 ; −0,109]
MLP, 5 graines0,710−0,317 [−0,395 ; −0,231]

La porte de qualité place en production le régime chaîne : un modèle appris n’est retenu que si l’IC 90 % de son gain exclut zéro. 0,30 en log10 correspond à un facteur 2.

Avant / après (mêmes 4 plis, mêmes 102 vidéos de test)

MesureAvant : médiane glissanteAprès : régime chaîne
MAE log100,4990,393 (−21 %)
Couverture de l’intervalle à 80 %71 %81 %
Largeur de l’intervalle×5,04×4,64
Méthode d’intervalleConformal splitConformal glissant asymétrique, 60 résidus
Backtest complet sur CPU335 s≈ 90 s

Gain MAE de 0,106 log10, IC 90 % bootstrap apparié [0,044 ; 0,166].

CTR : validation mélangée contre validation chronologique (222 vidéos)

ProtocoleModèleMAE (points de CTR)
5 plis mélangés (publié le 19/10)Mélange MLP + HistGB1,355
Walk-forward, 9 plisMélange MLP + HistGB2,247
Walk-forward, 9 plisMédiane glissante 30 vidéos1,441

Le niveau de CTR dérive dans le temps : la validation chronologique empêche le modèle de voir des vidéos du futur. Elle sert de référence à tous les chiffres publiés.

LoRA d’idées sur Qwen3 4B : base contre LoRA, 36 vidéos tenues à l’écart

MesureBaseLoRA
Format de titre de la chaîne respecté0 %97 %
Titres valides6 %89 %
Similarité au vrai titre0,510,79
Écart au style de la chaîne (↓)69,45,1
Perte sur le jeu de test (↓)4,731,48

Le LoRA apprend le format, le ton et le style de la chaîne : titres directement exploitables, sans perdre en diversité. Même protocole que la version précédente sur LFM2.5 1,2B, dépassée sur chaque mesure.

Livrables 5

  • Socle de données commun (Oracle et Radar) avec migrations, journal des passages et santé des sources.
  • Résultats régénérés depuis les fichiers : RESULTS, carte de modèle, carte du jeu de données.
  • Tableau de bord à quatre vues, API REST, serveur MCP à 9 outils, service planifié prêt à installer.
  • Adaptateur LoRA Qwen3 4B et son évaluation base contre LoRA, comparée à la version LFM2.5 ; journal de dimensionnement mémoire.
  • 49 tests hors ligne ; backtest complet en ≈ 90 s sur CPU (335 s avant).

Environnement

Matériel et conditions de mesure

  • LoRA d’idées entraîné sur Qwen3 4B (MLX 4 bits) sur MacBook Pro M1 Pro 16 Go : 300 itérations, 47 min, 4,5 Go de pic. Un LoRA sur un modèle 9B demande un GPU de 24 Go.
  • Modèle de vues entièrement sur CPU : backtest complet en ≈ 90 s sur MacBook Pro M1 Pro.
  • Données de la chaîne et exports YouTube Studio conservés en local ; service planifié par launchd, calculs lourds sur une file GPU, un job à la fois.

Reproduire commandes du README

Code privé : accès en lecture sous accord de confidentialité, ou démo en direct de 30 minutes. Demander l’accès →

.venv/bin/python -m oracle.cli collecte chaine --mode complet
.venv/bin/python -m oracle.cli collecte news
.venv/bin/python -m oracle.cli sujets
.venv/bin/python -m oracle.cli vues backtest
.venv/bin/python -m oracle.cli ctr walkforward
.venv/bin/python -m oracle.cli docs
.venv/bin/python -m oracle.cli dashboard
.venv/bin/python -m pytest
  • Le CTR et la série journalière viennent des exports YouTube Studio du propriétaire de la chaîne ; ces données restent en local.
  • Tableau de bord et API sur 127.0.0.1:8333 ; LoRA et TimesFM passent par les scripts gpu_jobs, un à la fois.

Galerie 3

Sujets chauds sur 72 h : accord entre familles de sources, fraîcheur, vélocité.
Idées classées avec leur fourchette P10–P50–P90 et le détail du score (20/10 au matin, avant le passage au régime chaîne).
Série journalière de la chaîne : TimesFM comparé aux références simples ; le lissage exponentiel est retenu (MAE 39 128 vues/jour).

Ce que ce projet change pour vous

Le même savoir-faire, sur votre sujet.

01

Un chiffre qui tient

Une évaluation qui respecte le temps et une règle de choix écrite d’avance : vous savez ce qu’un modèle apporte avant de vous en servir, et le plus simple qui gagne reste en production.

02

Un socle avant les modèles

Un seul entrepôt, une seule configuration, la santé de chaque source : vos outils arrêtent de se contredire.

03

La prédiction dans vos outils

Serveur MCP pour vos assistants, API REST ou tableau de bord : la prévision arrive là où l’équipe décide déjà.