Abdellah Hailal

Étudiant finissant en science des données à l'UQTR. Je mesure l'effet réel des choses, sur des signaux cardiaques comme dans un produit, puis je construis les outils qui s'en servent.

Stage crédité, janvier à avril 2027 Trois-Rivières, Québec

Graphe causal : compétences, projets et stage viséSignaux biomédicaux, inférence causale et apprentissage automatique mènent au projet sur les arythmies MIT-BIH. Apprentissage automatique, génie logiciel et terrain client mènent à Renovision AI. Génie logiciel mène à Thiercelieux. Les trois projets mènent à votre équipe, pour un stage dès janvier 2027.Ce que j'apporteCe que j'ai construitLa suiteSignaux biomédicauxInférence causaleApprentissage automatiqueGénie logicielTerrain clientArythmies MIT-BIHclassification et causalitéRenovision AIIA générative, produitThiercelieuxjeu web multijoueurVotre équipestage, janvier 2027 Graphe causal : compétences, projets et stage viséSignaux biomédicaux, inférence causale et apprentissage automatique mènent au projet sur les arythmies MIT-BIH. Apprentissage automatique, génie logiciel et terrain client mènent à Renovision AI. Génie logiciel mène à Thiercelieux. Les trois projets mènent à votre équipe, pour un stage dès janvier 2027.Ce que j'apporteCe que j'ai construitLa suiteSignauxbiomédicauxInférencecausaleApprentissageautomatiqueGénie logicielTerrain clientArythmies MIT-BIHclassificationRenovision AIIA générativeThiercelieuxjeu multijoueurVotre équipejanvier 2027
Survolez un nœud pour suivre ses causes et ses effets. Chaque projet mène à son étude de cas.

Trois projets, trois chaînes de cause à effet

Pour chacun : la question de départ, ce que j'ai fait, et ce que ça a produit.

Arythmies cardiaques sur la base MIT-BIH

Reconnaître automatiquement les types de battements, puis mesurer ce qu'un battement prématuré change aux battements suivants.

Contexte
Projet individuel, UQTR
Supervision
Pr Usef Faghihi
Données
MIT-BIH Arrhythmia Database
Statut
Corrections méthodologiques en cours
  1. Question

    Peut-on classer les battements cardiaques de façon fiable, et un battement prématuré modifie-t-il vraiment les intervalles RR qui suivent ?

  2. Intervention

    Classification avec MiniRocket, XGBoost et un réseau CNN 1D + LSTM. Modélisation du rythme, puis estimation de l'effet causal avec Double ML et CausalForestDML.

  3. Effet

    XGBoost atteint 0,74 d'exactitude. L'effet moyen (ATE) d'un battement prématuré sur les intervalles RR suivants est significatif.

Ces résultats sont préliminaires. Mon superviseur a relevé neuf problèmes, dont une fuite de données entre patients et des variables post-traitement prises comme facteurs de confusion. Je refais l'analyse en les corrigeant.

  • Python
  • Jupyter
  • MiniRocket
  • XGBoost
  • CNN 1D + LSTM
  • Double ML
  • CausalForestDML
Exactitude par modèle XGBoost 0,74 ; MiniRocket 0,69 ; CNN 1D plus LSTM 0,51, sur une échelle de 0 à 1. XGBoost 0,74 MiniRocket 0,69 CNN 1D + LSTM 0,51 0 0,25 0,5 0,75 1
Exactitude de classification, avant la séparation des données par patient.
Tracé ECG avec une extrasystole ventriculaire Six secondes de rythme sinusal à intervalles RR de 800 ms, interrompu par une extrasystole ventriculaire précoce à 450 ms, suivie d'une pause compensatoire de 1150 ms. battement prématuré 800 ms 800 ms 450 1150 ms 800 ms 800 ms
Le traitement étudié : un battement prématuré raccourcit l'intervalle RR, puis une pause compensatoire l'allonge. L'analyse causale mesure cet effet sur les battements suivants.

Thiercelieux, Loups-Garous en ligne

Une adaptation web multijoueur du jeu de société, où chaque joueur participe depuis son propre appareil.

Contexte
INF-1011 Génie logiciel, UQTR
Équipe
Cinq étudiants, automne 2026
Mon rôle
Serveur et interface
Rôles du jeu
Six, du Villageois au Capitaine
  1. Question

    Comment faire jouer une partie où chaque joueur, sur son propre écran, ne voit que ce que son rôle lui permet de voir ?

  2. Intervention

    J'ai participé à la construction du serveur en Java avec Spring Boot et j'ai développé l'interface en React et TypeScript : salle d'attente avec code de table, phases de nuit et de jour, carte de rôle, vote et chronique de fin.

  3. Effet

    Une partie complète jouable en ligne, avec six rôles : Villageois, Loup-Garou, Voyante, Sorcière, Chasseur et Capitaine.

  • Java
  • Spring Boot
  • React
  • TypeScript
Voir les captures d'écran (4)Masquer les captures d'écran
  • Page d'accueil de Thiercelieux : titre Le village s'endort sur un ciel de nuit, rappel des règles et formulaire de connexion.
    Accueil : connexion ou création de compte, avec un rappel des règles.
  • Salle d'attente : cinq joueurs autour d'une table ovale, code de partie LUNE27, réglages de débat et de vote.
    Salle d'attente : les joueurs rejoignent la table avec un code et signalent qu'ils sont prêts.
  • Phase de jour : table du village, joueur éliminé barré, carte de rôle Voyante et Capitaine, minuterie et discussion.
    Phase de jour : rôle du joueur, minuterie, débat et ouverture du vote.
  • Écran de fin : Le village a survécu, rôles révélés de chaque joueur et chronique des éliminations.
    Fin de partie : les cartes se retournent et la chronique résume la partie.

Renovision AI

Le client photographie sa pièce, choisit un produit du catalogue et voit le résultat avant d'acheter.

Contexte
Projet personnel
Mon rôle
Conception et développement complet
Modèle
SaaS B2B2C pour détaillants
Statut
MVP fonctionnel, pilote à valider
  1. Question

    En magasin de rénovation, le client imagine mal un revêtement dans sa propre pièce. Peut-on le lui montrer avant l'achat ?

  2. Intervention

    Une application complète : React et Vite côté client, FastAPI et SQLAlchemy côté serveur, authentification JWT, catalogue avec deux photos par produit et génération d'images par IA avec un fournisseur de repli.

  3. Effet

    Un MVP fonctionnel, prêt pour le mobile avec Capacitor. Prochaine étape : un projet pilote avec un détaillant de la région.

  • React
  • Vite
  • Tailwind CSS
  • FastAPI
  • SQLAlchemy
  • PostgreSQL
  • Capacitor
Voir les captures d'écran (3)Masquer les captures d'écran
  • Écran du projet Salon principal : photo avant, rendu après, choix d'un produit de plancher et bouton Générer.
    Projet : photo avant, rendu après et choix du produit.
  • Trois écrans mobiles : accueil avec S'inscrire et Se connecter, connexion et création de compte.
    Accueil, connexion et création de compte.
  • Deux écrans Nouveau projet : photo de la pièce, nom du projet et catégorie Plancher, Céramique ou Peinture.
    Nouveau projet : photo, nom et catégorie de produit.

Parcours

  1. Jusqu'en avril 2027

    Études en science des données, UQTR

    Apprentissage automatique, apprentissage profond et inférence causale, sous la supervision du Pr Usef Faghihi pour le projet MIT-BIH. Aussi des études de cas en stratégie d'entreprise : Bombardier, Boulangerie Lépine, KindyBis.

  2. En parallèle des études

    Conseiller aux ventes, matériaux de rénovation

    Conseil à la clientèle sur le choix des revêtements, à Trois-Rivières. C'est là qu'est né Renovision AI.

  3. Janvier à avril 2027

    Stage crédité en science des données

    Stage obligatoire au programme, d'au moins 128 heures. Je cherche un mandat en analyse de données, mesure de performance ou IA.

Ce que je sais faire

Inférence causale

Distinguer une corrélation d'un effet, choisir les bons facteurs de confusion, estimer un effet moyen.

  • Double ML
  • Forêts causales
  • ATE

Apprentissage automatique

Classer des séries temporelles et des signaux biomédicaux, gérer le déséquilibre des classes.

  • XGBoost
  • MiniRocket
  • CNN 1D
  • LSTM

Développement

Construire une application de bout en bout, du serveur à l'interface.

  • Python
  • FastAPI
  • PostgreSQL
  • Java
  • Spring Boot
  • React
  • TypeScript

Outils et langues

Je travaille en français et en anglais, seul ou en équipe.

  • Jupyter
  • VS Code
  • Microsoft 365

Votre équipe a une question de données ? Écrivez-moi.

Je cherche un stage en science des données ou en IA, de janvier à avril 2027. Je réponds à chaque message.