| <!DOCTYPE html> |
| <html lang="fr"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Cours — ML Academy</title> |
| <link rel="stylesheet" href="css/shared.css"> |
| <script> |
| window.MathJax = { |
| tex: { |
| inlineMath: [['$', '$'], ['\\(', '\\)']], |
| displayMath: [['$$', '$$'], ['\\[', '\\]']] |
| }, |
| options: { skipHtmlTags: ['script','noscript','style','textarea','pre'] } |
| }; |
| </script> |
| <script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> |
| <style> |
| |
| .course-layout { |
| display: flex; |
| min-height: calc(100vh - var(--navbar-height)); |
| } |
| |
| |
| .sidebar { |
| width: var(--sidebar-width); |
| background: var(--bg-secondary); |
| border-right: 1px solid var(--border-color); |
| position: fixed; |
| top: var(--navbar-height); |
| left: 0; |
| bottom: 0; |
| overflow-y: auto; |
| z-index: 100; |
| animation: fadeInLeft 0.5s ease; |
| } |
| |
| .sidebar-header { |
| padding: var(--space-xl); |
| border-bottom: 1px solid var(--border-color); |
| } |
| |
| .sidebar-badge { |
| display: inline-block; |
| padding: var(--space-xs) var(--space-sm); |
| background: rgba(99, 102, 241, 0.1); |
| border: 1px solid rgba(99, 102, 241, 0.3); |
| border-radius: var(--radius-sm); |
| font-family: 'JetBrains Mono', monospace; |
| font-size: 0.65rem; |
| color: var(--primary-light); |
| text-transform: uppercase; |
| letter-spacing: 1px; |
| margin-bottom: var(--space-sm); |
| } |
| |
| .sidebar-title { |
| font-size: 1.1rem; |
| font-weight: 700; |
| color: var(--text-primary); |
| margin-bottom: var(--space-xs); |
| } |
| |
| .sidebar-subtitle { |
| font-size: 0.8rem; |
| color: var(--text-muted); |
| } |
| |
| .sidebar-nav { |
| padding: var(--space-md) 0; |
| } |
| |
| .nav-section { |
| margin-bottom: var(--space-md); |
| } |
| |
| .nav-section-title { |
| padding: var(--space-sm) var(--space-xl); |
| font-family: 'JetBrains Mono', monospace; |
| font-size: 0.65rem; |
| color: var(--text-muted); |
| text-transform: uppercase; |
| letter-spacing: 1px; |
| } |
| |
| .nav-item { |
| display: flex; |
| align-items: center; |
| gap: var(--space-sm); |
| padding: var(--space-sm) var(--space-xl); |
| color: var(--text-secondary); |
| text-decoration: none; |
| font-size: 0.9rem; |
| transition: all var(--transition-base); |
| border-left: 3px solid transparent; |
| } |
| |
| .nav-item:hover { |
| background: var(--bg-hover); |
| color: var(--text-primary); |
| border-left-color: var(--primary); |
| } |
| |
| .nav-item.active { |
| background: rgba(99, 102, 241, 0.1); |
| color: var(--primary-light); |
| border-left-color: var(--primary); |
| } |
| |
| .nav-icon { |
| font-size: 1rem; |
| font-family: 'JetBrains Mono', monospace; |
| color: var(--text-muted); |
| } |
| |
| .sidebar-footer { |
| padding: var(--space-lg) var(--space-xl); |
| border-top: 1px solid var(--border-color); |
| margin-top: auto; |
| } |
| |
| .progress-label { |
| font-size: 0.75rem; |
| color: var(--text-muted); |
| margin-bottom: var(--space-sm); |
| display: flex; |
| justify-content: space-between; |
| } |
| |
| .progress-bar { |
| height: 6px; |
| background: var(--bg-tertiary); |
| border-radius: 3px; |
| overflow: hidden; |
| } |
| |
| .progress-fill { |
| height: 100%; |
| background: linear-gradient(90deg, var(--primary), var(--secondary)); |
| border-radius: 3px; |
| transition: width 0.5s ease; |
| animation: progress 1s ease; |
| } |
| |
| |
| .pdf-download { |
| display: flex; |
| align-items: center; |
| gap: var(--space-sm); |
| padding: var(--space-sm) var(--space-md); |
| background: rgba(239, 68, 68, 0.1); |
| border: 1px solid rgba(239, 68, 68, 0.3); |
| border-radius: var(--radius-md); |
| color: #ef4444; |
| font-size: 0.8rem; |
| font-weight: 600; |
| text-decoration: none; |
| margin-top: var(--space-md); |
| transition: all var(--transition-base); |
| } |
| |
| .pdf-download:hover { |
| background: rgba(239, 68, 68, 0.2); |
| transform: translateY(-2px); |
| } |
| |
| |
| .main-content { |
| flex: 1; |
| margin-left: var(--sidebar-width); |
| padding: var(--space-2xl); |
| max-width: 900px; |
| } |
| |
| |
| .course-hero { |
| text-align: center; |
| padding: var(--space-2xl) 0; |
| margin-bottom: var(--space-2xl); |
| border-bottom: 1px solid var(--border-color); |
| } |
| |
| .course-hero-badge { |
| display: inline-flex; |
| align-items: center; |
| gap: var(--space-sm); |
| padding: var(--space-xs) var(--space-md); |
| background: rgba(16, 185, 129, 0.1); |
| border: 1px solid rgba(16, 185, 129, 0.3); |
| border-radius: 20px; |
| font-size: 0.75rem; |
| color: var(--success); |
| margin-bottom: var(--space-lg); |
| } |
| |
| .course-hero-badge .dot { |
| width: 6px; |
| height: 6px; |
| background: var(--success); |
| border-radius: 50%; |
| animation: pulse 2s ease-in-out infinite; |
| } |
| |
| .course-hero-title { |
| font-size: clamp(1.75rem, 4vw, 2.5rem); |
| font-weight: 700; |
| color: var(--text-primary); |
| margin-bottom: var(--space-md); |
| } |
| |
| .course-hero-subtitle { |
| font-size: 1rem; |
| color: var(--text-secondary); |
| margin-bottom: var(--space-xl); |
| } |
| |
| .course-hero-stats { |
| display: flex; |
| justify-content: center; |
| gap: var(--space-2xl); |
| flex-wrap: wrap; |
| } |
| |
| .course-hero-stat { |
| text-align: center; |
| } |
| |
| .course-hero-stat-value { |
| font-family: 'JetBrains Mono', monospace; |
| font-size: 2rem; |
| font-weight: 700; |
| color: var(--text-primary); |
| } |
| |
| .course-hero-stat-label { |
| font-size: 0.7rem; |
| color: var(--text-muted); |
| text-transform: uppercase; |
| letter-spacing: 1px; |
| margin-top: var(--space-xs); |
| } |
| |
| |
| .section { |
| margin-bottom: var(--space-3xl); |
| scroll-margin-top: calc(var(--navbar-height) + var(--space-lg)); |
| } |
| |
| .section-header { |
| margin-bottom: var(--space-xl); |
| padding-bottom: var(--space-md); |
| border-bottom: 1px solid var(--border-color); |
| } |
| |
| .section-badge { |
| display: inline-block; |
| padding: var(--space-xs) var(--space-sm); |
| background: rgba(99, 102, 241, 0.1); |
| border-radius: var(--radius-sm); |
| font-family: 'JetBrains Mono', monospace; |
| font-size: 0.65rem; |
| color: var(--primary-light); |
| text-transform: uppercase; |
| letter-spacing: 1px; |
| margin-bottom: var(--space-sm); |
| } |
| |
| .section-title { |
| font-size: clamp(1.5rem, 3vw, 2rem); |
| font-weight: 700; |
| color: var(--text-primary); |
| margin-bottom: var(--space-sm); |
| } |
| |
| .section-title small { |
| display: block; |
| font-size: 0.9rem; |
| color: var(--text-muted); |
| font-weight: 500; |
| margin-bottom: var(--space-xs); |
| } |
| |
| .section-content p { |
| font-size: 1rem; |
| color: var(--text-secondary); |
| line-height: 1.8; |
| margin-bottom: var(--space-md); |
| } |
| |
| .section-content strong { |
| color: var(--text-primary); |
| font-weight: 600; |
| } |
| |
| |
| .cards-grid { |
| display: grid; |
| grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); |
| gap: var(--space-md); |
| margin: var(--space-lg) 0; |
| } |
| |
| .info-card { |
| background: var(--bg-card); |
| border: 1px solid var(--border-color); |
| border-radius: var(--radius-md); |
| padding: var(--space-lg); |
| transition: all var(--transition-base); |
| } |
| |
| .info-card:hover { |
| border-color: var(--primary); |
| transform: translateY(-3px); |
| } |
| |
| .info-card-icon { |
| width: 40px; |
| height: 40px; |
| background: linear-gradient(135deg, var(--primary), var(--secondary)); |
| border-radius: var(--radius-md); |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| font-size: 1rem; |
| font-weight: 700; |
| color: white; |
| margin-bottom: var(--space-sm); |
| } |
| |
| .info-card-title { |
| font-size: 1rem; |
| font-weight: 600; |
| color: var(--text-primary); |
| margin-bottom: var(--space-xs); |
| } |
| |
| .info-card-text { |
| font-size: 0.85rem; |
| color: var(--text-secondary); |
| } |
| |
| .info-card-tag { |
| display: inline-block; |
| margin-top: var(--space-sm); |
| padding: var(--space-xs) var(--space-sm); |
| background: var(--bg-tertiary); |
| border-radius: var(--radius-sm); |
| font-family: 'JetBrains Mono', monospace; |
| font-size: 0.65rem; |
| color: var(--text-muted); |
| } |
| |
| |
| .pipeline { |
| display: flex; |
| flex-wrap: wrap; |
| gap: var(--space-md); |
| margin: var(--space-xl) 0; |
| padding: var(--space-lg); |
| background: var(--bg-card); |
| border: 1px solid var(--border-color); |
| border-radius: var(--radius-lg); |
| } |
| |
| .pipeline-step { |
| flex: 1; |
| min-width: 120px; |
| text-align: center; |
| padding: var(--space-md); |
| position: relative; |
| } |
| |
| .pipeline-step:not(:last-child)::after { |
| content: '->'; |
| position: absolute; |
| right: -15px; |
| top: 50%; |
| transform: translateY(-50%); |
| color: var(--primary); |
| font-family: 'JetBrains Mono', monospace; |
| font-size: 1rem; |
| } |
| |
| .pipeline-num { |
| width: 36px; |
| height: 36px; |
| background: linear-gradient(135deg, var(--primary), var(--secondary)); |
| border-radius: 50%; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| font-family: 'JetBrains Mono', monospace; |
| font-size: 0.9rem; |
| font-weight: 700; |
| color: white; |
| margin: 0 auto var(--space-sm); |
| } |
| |
| .pipeline-label { |
| font-size: 0.85rem; |
| font-weight: 600; |
| color: var(--text-primary); |
| margin-bottom: var(--space-xs); |
| } |
| |
| .pipeline-desc { |
| font-size: 0.75rem; |
| color: var(--text-muted); |
| } |
| |
| |
| .checklist { |
| list-style: none; |
| padding: 0; |
| margin: var(--space-lg) 0; |
| } |
| |
| .checklist li { |
| display: flex; |
| align-items: flex-start; |
| gap: var(--space-sm); |
| padding: var(--space-sm) 0; |
| font-size: 0.95rem; |
| color: var(--text-secondary); |
| } |
| |
| .checklist li::before { |
| content: '[v]'; |
| color: var(--success); |
| font-family: 'JetBrains Mono', monospace; |
| font-weight: 700; |
| flex-shrink: 0; |
| } |
| |
| |
| .equation-block { |
| background: var(--bg-card); |
| border: 1px solid var(--border-color); |
| border-left: 3px solid var(--primary); |
| border-radius: var(--radius-md); |
| padding: var(--space-lg); |
| margin: var(--space-lg) 0; |
| text-align: center; |
| overflow-x: auto; |
| } |
| |
| .equation-label { |
| display: block; |
| font-family: 'JetBrains Mono', monospace; |
| font-size: 0.7rem; |
| color: var(--text-muted); |
| text-align: right; |
| margin-top: var(--space-sm); |
| } |
| |
| |
| .comparison-grid { |
| display: grid; |
| grid-template-columns: repeat(2, 1fr); |
| gap: var(--space-md); |
| margin: var(--space-lg) 0; |
| } |
| |
| .comparison-box { |
| background: var(--bg-card); |
| border: 1px solid var(--border-color); |
| border-radius: var(--radius-md); |
| padding: var(--space-lg); |
| } |
| |
| .comparison-box h4 { |
| font-size: 0.9rem; |
| font-weight: 600; |
| color: var(--text-primary); |
| margin-bottom: var(--space-md); |
| padding-bottom: var(--space-sm); |
| border-bottom: 1px solid var(--border-color); |
| } |
| |
| .comparison-box ul { |
| list-style: none; |
| padding: 0; |
| margin: 0; |
| } |
| |
| .comparison-box li { |
| padding: var(--space-xs) 0; |
| font-size: 0.85rem; |
| color: var(--text-secondary); |
| } |
| |
| .comparison-box li::before { |
| content: '>'; |
| color: var(--primary); |
| margin-right: var(--space-sm); |
| font-family: 'JetBrains Mono', monospace; |
| } |
| |
| |
| .metric-row { |
| display: grid; |
| grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); |
| gap: var(--space-md); |
| margin: var(--space-lg) 0; |
| } |
| |
| .metric-card { |
| background: var(--bg-card); |
| border: 1px solid var(--border-color); |
| border-radius: var(--radius-md); |
| padding: var(--space-lg); |
| text-align: center; |
| transition: all var(--transition-base); |
| } |
| |
| .metric-card:hover { |
| border-color: var(--primary); |
| transform: translateY(-3px); |
| } |
| |
| .metric-name { |
| font-family: 'JetBrains Mono', monospace; |
| font-size: 0.75rem; |
| color: var(--text-muted); |
| text-transform: uppercase; |
| letter-spacing: 1px; |
| margin-bottom: var(--space-sm); |
| } |
| |
| .metric-formula { |
| font-family: 'JetBrains Mono', monospace; |
| font-size: 1rem; |
| color: var(--primary-light); |
| font-weight: 600; |
| margin-bottom: var(--space-xs); |
| } |
| |
| .metric-desc { |
| font-size: 0.75rem; |
| color: var(--text-muted); |
| } |
| |
| |
| @media (max-width: 768px) { |
| .sidebar { |
| transform: translateX(-100%); |
| transition: transform var(--transition-base); |
| } |
| |
| .sidebar.open { |
| transform: translateX(0); |
| } |
| |
| .main-content { |
| margin-left: 0; |
| padding: var(--space-lg); |
| } |
| |
| .comparison-grid { |
| grid-template-columns: 1fr; |
| } |
| |
| .pipeline-step:not(:last-child)::after { |
| display: none; |
| } |
| } |
| |
| |
| .back-to-top { |
| position: fixed; |
| bottom: var(--space-xl); |
| right: var(--space-xl); |
| width: 44px; |
| height: 44px; |
| background: var(--primary); |
| border: none; |
| border-radius: 50%; |
| color: white; |
| font-size: 1.2rem; |
| cursor: pointer; |
| opacity: 0; |
| visibility: hidden; |
| transition: all var(--transition-base); |
| z-index: 1000; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| } |
| |
| .back-to-top.visible { |
| opacity: 1; |
| visibility: visible; |
| } |
| |
| .back-to-top:hover { |
| background: var(--primary-light); |
| transform: translateY(-3px); |
| } |
| |
| |
| .author-footer { |
| background: var(--bg-secondary); |
| border-top: 1px solid var(--border-color); |
| padding: var(--space-xl); |
| text-align: center; |
| } |
| |
| .author-info { |
| display: flex; |
| justify-content: center; |
| gap: var(--space-xl); |
| flex-wrap: wrap; |
| margin-bottom: var(--space-md); |
| } |
| |
| .author-link { |
| display: flex; |
| align-items: center; |
| gap: var(--space-sm); |
| color: var(--text-secondary); |
| text-decoration: none; |
| font-size: 0.9rem; |
| transition: color var(--transition-base); |
| } |
| |
| .author-link:hover { |
| color: var(--primary-light); |
| } |
| |
| .author-link svg { |
| width: 18px; |
| height: 18px; |
| fill: currentColor; |
| } |
| </style> |
| </head> |
| <body> |
| |
| <div class="particles-container"> |
| <div class="particle"></div> |
| <div class="particle"></div> |
| <div class="particle"></div> |
| <div class="particle"></div> |
| <div class="particle"></div> |
| </div> |
|
|
| |
| <nav class="navbar"> |
| <a href="index.html" class="navbar-brand"> |
| <div class="brand-logo">ML</div> |
| <span>ML Academy</span> |
| </a> |
| <div class="navbar-nav"> |
| <a href="index.html" class="nav-link"> |
| <span class="nav-icon">[H]</span> |
| <span>Accueil</span> |
| </a> |
| <a href="cours.html" class="nav-link active"> |
| <span class="nav-icon">[C]</span> |
| <span>Cours</span> |
| </a> |
| <a href="tp.html" class="nav-link"> |
| <span class="nav-icon">[T]</span> |
| <span>TPs</span> |
| </a> |
| <a href="feedback.html" class="nav-link"> |
| <span class="nav-icon">[F]</span> |
| <span>Contact</span> |
| </a> |
| </div> |
| <div class="nav-badge"> |
| <div class="dot"></div> |
| <span>Google Colab Ready</span> |
| </div> |
| </nav> |
|
|
| |
| <div class="course-layout"> |
| |
| <aside class="sidebar"> |
| <div class="sidebar-header"> |
| <div class="sidebar-badge">Formation 2025/2026</div> |
| <h1 class="sidebar-title">Machine Learning</h1> |
| <p class="sidebar-subtitle">Cours theoriques complets</p> |
| <a href="cours.pdf" class="pdf-download" download> |
| <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"> |
| <path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"/> |
| </svg> |
| Telecharger le PDF |
| </a> |
| </div> |
| |
| <nav class="sidebar-nav"> |
| <div class="nav-section"> |
| <div class="nav-section-title">Introduction</div> |
| <a href="#intro" class="nav-item active"> |
| <span class="nav-icon">[1]</span> |
| <span>Qu'est-ce que le ML ?</span> |
| </a> |
| </div> |
| |
| <div class="nav-section"> |
| <div class="nav-section-title">Algorithmes Supervises</div> |
| <a href="#regression" class="nav-item"> |
| <span class="nav-icon">[2]</span> |
| <span>Regression Lineaire</span> |
| </a> |
| <a href="#logistic" class="nav-item"> |
| <span class="nav-icon">[3]</span> |
| <span>Regression Logistique</span> |
| </a> |
| <a href="#randomforest" class="nav-item"> |
| <span class="nav-icon">[4]</span> |
| <span>Random Forest</span> |
| </a> |
| </div> |
| |
| <div class="nav-section"> |
| <div class="nav-section-title">Deep Learning</div> |
| <a href="#neuralnets" class="nav-item"> |
| <span class="nav-icon">[5]</span> |
| <span>Reseaux de Neurones</span> |
| </a> |
| <a href="#lstm" class="nav-item"> |
| <span class="nav-icon">[6]</span> |
| <span>LSTM & Series Temp.</span> |
| </a> |
| </div> |
| |
| <div class="nav-section"> |
| <div class="nav-section-title">Evaluation</div> |
| <a href="#metrics" class="nav-item"> |
| <span class="nav-icon">[7]</span> |
| <span>Metriques</span> |
| </a> |
| <a href="#optimization" class="nav-item"> |
| <span class="nav-icon">[8]</span> |
| <span>Optimisation</span> |
| </a> |
| </div> |
| |
| <div class="nav-section"> |
| <div class="nav-section-title">Navigation</div> |
| <a href="index.html" class="nav-item"> |
| <span class="nav-icon">[H]</span> |
| <span>Accueil</span> |
| </a> |
| <a href="tp.html" class="nav-item"> |
| <span class="nav-icon">[T]</span> |
| <span>Travaux Pratiques</span> |
| </a> |
| <a href="feedback.html" class="nav-item"> |
| <span class="nav-icon">[F]</span> |
| <span>Questions</span> |
| </a> |
| </div> |
| </nav> |
| |
| <div class="sidebar-footer"> |
| <div class="progress-label"> |
| <span>Progression</span> |
| <span id="progress-text">0%</span> |
| </div> |
| <div class="progress-bar"> |
| <div class="progress-fill" id="progress-fill" style="width: 0%"></div> |
| </div> |
| </div> |
| </aside> |
|
|
| |
| <main class="main-content"> |
| |
| <div class="course-hero scroll-animate"> |
| <div class="course-hero-badge"> |
| <div class="dot"></div> |
| <span>Pret a executer sur Google Colab</span> |
| </div> |
| <h1 class="course-hero-title"> |
| Cours de <span class="gradient-text">Machine Learning</span> |
| </h1> |
| <p class="course-hero-subtitle"> |
| Formation complete couvrant les algorithmes fondamentaux jusqu'aux techniques avancees. |
| </p> |
| <div class="course-hero-stats"> |
| <div class="course-hero-stat"> |
| <div class="course-hero-stat-value">8</div> |
| <div class="course-hero-stat-label">Chapitres</div> |
| </div> |
| <div class="course-hero-stat"> |
| <div class="course-hero-stat-value">25+</div> |
| <div class="course-hero-stat-label">Equations</div> |
| </div> |
| <div class="course-hero-stat"> |
| <div class="course-hero-stat-value">50+</div> |
| <div class="course-hero-stat-label">Exemples de code</div> |
| </div> |
| </div> |
| </div> |
|
|
| |
| <section class="section" id="intro"> |
| <div class="section-header scroll-animate"> |
| <div class="section-badge">Partie 1 · 20 min</div> |
| <h2 class="section-title"> |
| <small>Fondamentaux</small> |
| Qu'est-ce que le Machine Learning ? |
| </h2> |
| </div> |
| |
| <div class="section-content scroll-animate"> |
| <p> |
| Le <strong>Machine Learning (ML)</strong> est une branche de l'intelligence artificielle |
| qui permet aux machines d'apprendre a partir de donnees <em>sans etre explicitement programmees</em> |
| pour chaque tache. Au lieu de coder des regles a la main, on montre des exemples au modele |
| et il decouvre lui-meme les patterns. |
| </p> |
|
|
| <div class="callout callout-info scroll-animate"> |
| <div class="callout-icon">[i]</div> |
| <div class="callout-content"> |
| <div class="callout-title">Idee fondamentale</div> |
| <div class="callout-text"> |
| On cherche a approximer une fonction inconnue $f$ telle que $\hat{y} = f(x_1, x_2, \ldots, x_n)$. |
| Le modele ML apprend cette fonction a partir d'exemples $(x, y)$ connus. |
| </div> |
| </div> |
| </div> |
|
|
| <h3 style="font-size: 1.2rem; font-weight: 600; color: var(--text-primary); margin: var(--space-xl) 0 var(--space-md);"> |
| Types d'apprentissage |
| </h3> |
|
|
| <div class="cards-grid scroll-animate"> |
| <div class="info-card"> |
| <div class="info-card-icon">S</div> |
| <h4 class="info-card-title">Supervise</h4> |
| <p class="info-card-text">Donnees labellisees $(x, y)$ : regression et classification.</p> |
| <span class="info-card-tag">Predictions</span> |
| </div> |
| <div class="info-card"> |
| <div class="info-card-icon">N</div> |
| <h4 class="info-card-title">Non supervise</h4> |
| <p class="info-card-text">Pas de labels : clustering, reduction de dimension.</p> |
| <span class="info-card-tag">Patterns</span> |
| </div> |
| <div class="info-card"> |
| <div class="info-card-icon">R</div> |
| <h4 class="info-card-title">Par renforcement</h4> |
| <p class="info-card-text">Agent apprend via actions-recompenses.</p> |
| <span class="info-card-tag">Strategies</span> |
| </div> |
| </div> |
|
|
| <h3 style="font-size: 1.2rem; font-weight: 600; color: var(--text-primary); margin: var(--space-xl) 0 var(--space-md);"> |
| Pipeline ML typique |
| </h3> |
|
|
| <div class="pipeline scroll-animate"> |
| <div class="pipeline-step"> |
| <div class="pipeline-num">1</div> |
| <div class="pipeline-label">Donnees</div> |
| <div class="pipeline-desc">Collecte & nettoyage</div> |
| </div> |
| <div class="pipeline-step"> |
| <div class="pipeline-num">2</div> |
| <div class="pipeline-label">Features</div> |
| <div class="pipeline-desc">Engineering</div> |
| </div> |
| <div class="pipeline-step"> |
| <div class="pipeline-num">3</div> |
| <div class="pipeline-label">Split</div> |
| <div class="pipeline-desc">Train / Test</div> |
| </div> |
| <div class="pipeline-step"> |
| <div class="pipeline-num">4</div> |
| <div class="pipeline-label">Modele</div> |
| <div class="pipeline-desc">Entrainement</div> |
| </div> |
| <div class="pipeline-step"> |
| <div class="pipeline-num">5</div> |
| <div class="pipeline-label">Evaluation</div> |
| <div class="pipeline-desc">Metriques</div> |
| </div> |
| <div class="pipeline-step"> |
| <div class="pipeline-num">6</div> |
| <div class="pipeline-label">Production</div> |
| <div class="pipeline-desc">Deploiement</div> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section class="section" id="regression"> |
| <div class="section-header scroll-animate"> |
| <div class="section-badge">Partie 2 · 25 min</div> |
| <h2 class="section-title"> |
| <small>Algorithmes de base</small> |
| Regression Lineaire |
| </h2> |
| </div> |
| |
| <div class="section-content scroll-animate"> |
| <p> |
| La <strong>regression lineaire</strong> modelise la relation entre les features et la cible |
| par une fonction affine. C'est l'algorithme le plus simple mais souvent tres efficace |
| comme baseline. |
| </p> |
|
|
| <div class="equation-block"> |
| $$\hat{y} = w_0 + w_1 x_1 + w_2 x_2 + \cdots + w_n x_n = \mathbf{w}^T \mathbf{x}$$ |
| <span class="equation-label">Modele lineaire avec coefficients $\mathbf{w}$</span> |
| </div> |
|
|
| <p> |
| L'objectif est de minimiser l'erreur quadratique moyenne (MSE) : |
| </p> |
|
|
| <div class="equation-block"> |
| $$\text{MSE} = \frac{1}{m} \sum_{i=1}^{m} (y_i - \hat{y}_i)^2$$ |
| <span class="equation-label">Fonction de cout : moyenne des erreurs quadratiques</span> |
| </div> |
|
|
| <div class="callout callout-info scroll-animate"> |
| <div class="callout-icon">[i]</div> |
| <div class="callout-content"> |
| <div class="callout-title">Solution analytique</div> |
| <div class="callout-text"> |
| La regression lineaire admet une solution fermee : |
| $\mathbf{w}^* = (X^T X)^{-1} X^T Y$. Pas besoin d'iterations ! |
| </div> |
| </div> |
| </div> |
|
|
| <div class="comparison-grid scroll-animate"> |
| <div class="comparison-box"> |
| <h4>[+] Avantages</h4> |
| <ul> |
| <li>Tres rapide a entrainer</li> |
| <li>Interpretable (coefficients)</li> |
| <li>Pas d'hyperparametres</li> |
| <li>Excellent baseline</li> |
| </ul> |
| </div> |
| <div class="comparison-box"> |
| <h4>[-] Limitations</h4> |
| <ul> |
| <li>Relation lineaire uniquement</li> |
| <li>Sensible aux outliers</li> |
| <li>Performance decroit en haute dimension</li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section class="section" id="logistic"> |
| <div class="section-header scroll-animate"> |
| <div class="section-badge">Partie 3 · 20 min</div> |
| <h2 class="section-title"> |
| <small>Classification</small> |
| Regression Logistique |
| </h2> |
| </div> |
| |
| <div class="section-content scroll-animate"> |
| <p> |
| Malgre son nom, la <strong>regression logistique</strong> est un algorithme de <em>classification</em>. |
| Elle predit la probabilite d'appartenance a une classe en utilisant la fonction sigmoide. |
| </p> |
|
|
| <div class="equation-block"> |
| $$P(y=1|\mathbf{x}) = \sigma(\mathbf{w}^T \mathbf{x}) = \frac{1}{1 + e^{-\mathbf{w}^T \mathbf{x}}}$$ |
| <span class="equation-label">Fonction sigmoide pour la classification binaire</span> |
| </div> |
|
|
| <div class="callout callout-success scroll-animate"> |
| <div class="callout-icon">[v]</div> |
| <div class="callout-content"> |
| <div class="callout-title">Cas d'usage : Dataset Titanic</div> |
| <div class="callout-text"> |
| Predire la survie des passagers du Titanic a partir de leur age, sexe, |
| classe de billet, etc. Un classique du ML pour debuter ! |
| </div> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section class="section" id="randomforest"> |
| <div class="section-header scroll-animate"> |
| <div class="section-badge">Partie 4 · 30 min</div> |
| <h2 class="section-title"> |
| <small>Ensemble Learning</small> |
| Random Forest |
| </h2> |
| </div> |
| |
| <div class="section-content scroll-animate"> |
| <p> |
| <strong>Random Forest</strong> est un ensemble d'arbres de decision qui votent pour predire. |
| C'est l'un des algorithmes les plus populaires en ML applique : performant, robuste, |
| peu sensible au tuning. |
| </p> |
|
|
| <h3 style="font-size: 1.2rem; font-weight: 600; color: var(--text-primary); margin: var(--space-xl) 0 var(--space-md);"> |
| Algorithm : Bagging + Random Splits |
| </h3> |
|
|
| <div class="pipeline scroll-animate"> |
| <div class="pipeline-step"> |
| <div class="pipeline-num">1</div> |
| <div class="pipeline-label">Bootstrap</div> |
| <div class="pipeline-desc">Echantillons aleatoires</div> |
| </div> |
| <div class="pipeline-step"> |
| <div class="pipeline-num">2</div> |
| <div class="pipeline-label">Splits</div> |
| <div class="pipeline-desc">Features aleatoires</div> |
| </div> |
| <div class="pipeline-step"> |
| <div class="pipeline-num">3</div> |
| <div class="pipeline-label">Arbres</div> |
| <div class="pipeline-desc">N arbres independants</div> |
| </div> |
| <div class="pipeline-step"> |
| <div class="pipeline-num">4</div> |
| <div class="pipeline-label">Vote</div> |
| <div class="pipeline-desc">Moyenne ou mode</div> |
| </div> |
| </div> |
|
|
| <div class="metric-row scroll-animate"> |
| <div class="metric-card"> |
| <div class="metric-name">n_estimators</div> |
| <div class="metric-formula">100 - 500</div> |
| <div class="metric-desc">Nombre d'arbres</div> |
| </div> |
| <div class="metric-card"> |
| <div class="metric-name">max_depth</div> |
| <div class="metric-formula">10 - 30</div> |
| <div class="metric-desc">Profondeur max</div> |
| </div> |
| <div class="metric-card"> |
| <div class="metric-name">min_samples_split</div> |
| <div class="metric-formula">2 - 10</div> |
| <div class="metric-desc">Min pour splitter</div> |
| </div> |
| </div> |
|
|
| <div class="callout callout-success scroll-animate"> |
| <div class="callout-icon">[*]</div> |
| <div class="callout-content"> |
| <div class="callout-title">Feature Importance</div> |
| <div class="callout-text"> |
| Random Forest fournit automatiquement l'importance de chaque feature, |
| ce qui aide a comprendre quelles variables influencent le plus les predictions. |
| </div> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section class="section" id="neuralnets"> |
| <div class="section-header scroll-animate"> |
| <div class="section-badge">Partie 5 · 35 min</div> |
| <h2 class="section-title"> |
| <small>Deep Learning</small> |
| Reseaux de Neurones |
| </h2> |
| </div> |
| |
| <div class="section-content scroll-animate"> |
| <p> |
| Les <strong>reseaux de neurones</strong> sont inspires du cerveau humain : des couches de neurones |
| interconnectes executent des transformations non-lineaires. Ils excellent pour les patterns complexes. |
| </p> |
|
|
| <h3 style="font-size: 1.2rem; font-weight: 600; color: var(--text-primary); margin: var(--space-xl) 0 var(--space-md);"> |
| Fonctionnement : Forward + Backprop |
| </h3> |
|
|
| <div class="cards-grid scroll-animate"> |
| <div class="info-card"> |
| <div class="info-card-icon">F</div> |
| <h4 class="info-card-title">Forward Pass</h4> |
| <p class="info-card-text">Donnees traversent les couches : $\mathbf{h}_1 = \sigma(W_1 \mathbf{x} + b_1)$</p> |
| </div> |
| <div class="info-card"> |
| <div class="info-card-icon">L</div> |
| <h4 class="info-card-title">Loss Computation</h4> |
| <p class="info-card-text">Compare prediction vs realite : $L = \frac{1}{m} \sum (y - \hat{y})^2$</p> |
| </div> |
| <div class="info-card"> |
| <div class="info-card-icon">B</div> |
| <h4 class="info-card-title">Backpropagation</h4> |
| <p class="info-card-text">Calcule les gradients via la chaine de derivation</p> |
| </div> |
| <div class="info-card"> |
| <div class="info-card-icon">G</div> |
| <h4 class="info-card-title">Gradient Descent</h4> |
| <p class="info-card-text">Met a jour les poids : $W \leftarrow W - \alpha \nabla_W L$</p> |
| </div> |
| </div> |
|
|
| <h3 style="font-size: 1.2rem; font-weight: 600; color: var(--text-primary); margin: var(--space-xl) 0 var(--space-md);"> |
| Fonctions d'activation |
| </h3> |
|
|
| <div class="metric-row scroll-animate"> |
| <div class="metric-card"> |
| <div class="metric-name">ReLU</div> |
| <div class="metric-formula">$f(x) = \max(0, x)$</div> |
| <div class="metric-desc">Couches cachees</div> |
| </div> |
| <div class="metric-card"> |
| <div class="metric-name">Sigmoid</div> |
| <div class="metric-formula">$f(x) = \frac{1}{1 + e^{-x}}$</div> |
| <div class="metric-desc">Classification binaire</div> |
| </div> |
| <div class="metric-card"> |
| <div class="metric-name">Softmax</div> |
| <div class="metric-formula">$f(x_i) = \frac{e^{x_i}}{\sum_j e^{x_j}}$</div> |
| <div class="metric-desc">Classification multi-classe</div> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section class="section" id="lstm"> |
| <div class="section-header scroll-animate"> |
| <div class="section-badge">Partie 6 · 30 min</div> |
| <h2 class="section-title"> |
| <small>Series Temporelles</small> |
| LSTM & Reseaux Recurrents |
| </h2> |
| </div> |
| |
| <div class="section-content scroll-animate"> |
| <p> |
| <strong>LSTM (Long Short-Term Memory)</strong> est un type de reseau neuronal pour series temporelles. |
| Il peut "retenir" l'information sur de longues periodes — crucial pour les predictions temporelles. |
| </p> |
|
|
| <div class="callout callout-warning scroll-animate"> |
| <div class="callout-icon">[!]</div> |
| <div class="callout-content"> |
| <div class="callout-title">Probleme des RNN vanilla</div> |
| <div class="callout-text"> |
| Les gradients disparaissent (vanishing) ou explosent (exploding) sur de longues sequences. |
| Le LSTM resout ce probleme avec son <strong>cell state</strong>. |
| </div> |
| </div> |
| </div> |
|
|
| <h3 style="font-size: 1.2rem; font-weight: 600; color: var(--text-primary); margin: var(--space-xl) 0 var(--space-md);"> |
| Les trois portes du LSTM |
| </h3> |
|
|
| <div class="metric-row scroll-animate"> |
| <div class="metric-card"> |
| <div class="metric-name">Forget Gate</div> |
| <div class="metric-formula">$f_t = \sigma(W_f [h_{t-1}, x_t] + b_f)$</div> |
| <div class="metric-desc">Quoi oublier ?</div> |
| </div> |
| <div class="metric-card"> |
| <div class="metric-name">Input Gate</div> |
| <div class="metric-formula">$i_t = \sigma(W_i [h_{t-1}, x_t] + b_i)$</div> |
| <div class="metric-desc">Quoi ajouter ?</div> |
| </div> |
| <div class="metric-card"> |
| <div class="metric-name">Output Gate</div> |
| <div class="metric-formula">$o_t = \sigma(W_o [h_{t-1}, x_t] + b_o)$</div> |
| <div class="metric-desc">Quoi exposer ?</div> |
| </div> |
| </div> |
|
|
| <div class="callout callout-info scroll-animate"> |
| <div class="callout-icon">[i]</div> |
| <div class="callout-content"> |
| <div class="callout-title">Cas d'usage</div> |
| <div class="callout-text"> |
| Prediction de prix boursiers, meteo, consommation energetique, |
| traitement du langage naturel (NLP)... |
| </div> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section class="section" id="metrics"> |
| <div class="section-header scroll-animate"> |
| <div class="section-badge">Partie 7 · 25 min</div> |
| <h2 class="section-title"> |
| <small>Evaluation</small> |
| Metriques de Performance |
| </h2> |
| </div> |
| |
| <div class="section-content scroll-animate"> |
| <p> |
| Evaluer correctement un modele est crucial. Les bonnes metriques dependent du type de probleme |
| (regression vs classification) et des objectifs metier. |
| </p> |
|
|
| <h3 style="font-size: 1.2rem; font-weight: 600; color: var(--text-primary); margin: var(--space-xl) 0 var(--space-md);"> |
| Regression |
| </h3> |
|
|
| <div class="metric-row scroll-animate"> |
| <div class="metric-card"> |
| <div class="metric-name">MAE</div> |
| <div class="metric-formula">$\frac{1}{n}\sum|y_i - \hat{y}_i|$</div> |
| <div class="metric-desc">Robuste aux outliers</div> |
| </div> |
| <div class="metric-card"> |
| <div class="metric-name">RMSE</div> |
| <div class="metric-formula">$\sqrt{\frac{1}{n}\sum(y_i - \hat{y}_i)^2}$</div> |
| <div class="metric-desc">Penalise les grandes erreurs</div> |
| </div> |
| <div class="metric-card"> |
| <div class="metric-name">R2</div> |
| <div class="metric-formula">$1 - \frac{SS_{res}}{SS_{tot}}$</div> |
| <div class="metric-desc">% variance expliquee</div> |
| </div> |
| </div> |
|
|
| <h3 style="font-size: 1.2rem; font-weight: 600; color: var(--text-primary); margin: var(--space-xl) 0 var(--space-md);"> |
| Classification |
| </h3> |
|
|
| <div class="table-container scroll-animate"> |
| <table> |
| <thead> |
| <tr> |
| <th>Metrique</th> |
| <th>Formule</th> |
| <th>Usage</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td><strong>Accuracy</strong></td> |
| <td>$(TP + TN) / Total$</td> |
| <td>Classes equilibrees</td> |
| </tr> |
| <tr> |
| <td><strong>Precision</strong></td> |
| <td>$TP / (TP + FP)$</td> |
| <td>Minimiser faux positifs</td> |
| </tr> |
| <tr> |
| <td><strong>Recall</strong></td> |
| <td>$TP / (TP + FN)$</td> |
| <td>Minimiser faux negatifs</td> |
| </tr> |
| <tr> |
| <td><strong>F1-Score</strong></td> |
| <td>$2 \cdot \frac{P \cdot R}{P + R}$</td> |
| <td>Classes desequilibrees</td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section class="section" id="optimization"> |
| <div class="section-header scroll-animate"> |
| <div class="section-badge">Partie 8 · 20 min</div> |
| <h2 class="section-title"> |
| <small>Amelioration</small> |
| Optimisation & Regularisation |
| </h2> |
| </div> |
| |
| <div class="section-content scroll-animate"> |
| <p> |
| Pour eviter le <strong>surapprentissage (overfitting)</strong> et ameliorer la generalisation, |
| plusieurs techniques existent. |
| </p> |
|
|
| <div class="cards-grid scroll-animate"> |
| <div class="info-card"> |
| <div class="info-card-icon">D</div> |
| <h4 class="info-card-title">Dropout</h4> |
| <p class="info-card-text">Desactive aleatoirement des neurones pendant l'entrainement.</p> |
| </div> |
| <div class="info-card"> |
| <div class="info-card-icon">E</div> |
| <h4 class="info-card-title">Early Stopping</h4> |
| <p class="info-card-text">Arrete l'entrainement quand la validation stagne.</p> |
| </div> |
| <div class="info-card"> |
| <div class="info-card-icon">L</div> |
| <h4 class="info-card-title">L2 Regularization</h4> |
| <p class="info-card-text">Penalise les grands poids : $L_{total} = L_{data} + \lambda \sum w^2$</p> |
| </div> |
| <div class="info-card"> |
| <div class="info-card-icon">C</div> |
| <h4 class="info-card-title">Cross-Validation</h4> |
| <p class="info-card-text">K-fold pour une evaluation plus robuste.</p> |
| </div> |
| </div> |
|
|
| <div class="callout callout-tip scroll-animate"> |
| <div class="callout-icon">[*]</div> |
| <div class="callout-content"> |
| <div class="callout-title">Regle d'or</div> |
| <div class="callout-text"> |
| Toujours comparer les metriques sur <strong>train</strong> ET <strong>test</strong>. |
| Un grand ecart = overfitting. Objectif : R2 train ≈ R2 test. |
| </div> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <footer class="author-footer" style="margin-top: var(--space-3xl);"> |
| <div class="author-info"> |
| <a href="mailto:imadmaalouf02@gmail.com" class="author-link"> |
| <svg viewBox="0 0 24 24"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z"/></svg> |
| imadmaalouf02@gmail.com |
| </a> |
| <a href="https://github.com/imadmaalouf02" target="_blank" class="author-link"> |
| <svg viewBox="0 0 24 24"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg> |
| GitHub |
| </a> |
| <a href="https://huggingface.co/spaces/MAALOOUF/ML_Training" target="_blank" class="author-link"> |
| <svg viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"/></svg> |
| Hugging Face Space |
| </a> |
| </div> |
| </footer> |
|
|
| |
| <footer class="footer" style="margin-top: 0;"> |
| <p class="footer-text"> |
| ML Academy — Cours de Machine Learning — |
| <span class="footer-brand">GE-MCI 4A</span> — 2025/2026 |
| </p> |
| <p class="footer-text" style="margin-top: var(--space-sm); font-size: 0.75rem; color: var(--text-muted);"> |
| Formateur : Imad Maalouf |
| </p> |
| </footer> |
| </main> |
| </div> |
|
|
| |
| <button class="back-to-top" id="backToTop" onclick="scrollToTop()">^</button> |
|
|
| |
| <script src="js/shared.js"></script> |
| <script> |
| |
| const observerOptions = { |
| threshold: 0.1, |
| rootMargin: '0px 0px -50px 0px' |
| }; |
| |
| const observer = new IntersectionObserver((entries) => { |
| entries.forEach(entry => { |
| if (entry.isIntersecting) { |
| entry.target.classList.add('visible'); |
| } |
| }); |
| }, observerOptions); |
| |
| document.querySelectorAll('.scroll-animate').forEach(el => { |
| observer.observe(el); |
| }); |
| |
| |
| const sections = document.querySelectorAll('.section'); |
| const navItems = document.querySelectorAll('.nav-item'); |
| |
| window.addEventListener('scroll', () => { |
| let current = ''; |
| sections.forEach(section => { |
| const sectionTop = section.offsetTop; |
| const sectionHeight = section.clientHeight; |
| if (scrollY >= sectionTop - 200) { |
| current = section.getAttribute('id'); |
| } |
| }); |
| |
| navItems.forEach(item => { |
| item.classList.remove('active'); |
| if (item.getAttribute('href') === `#${current}`) { |
| item.classList.add('active'); |
| } |
| }); |
| |
| |
| const progress = Math.min(100, Math.round((scrollY / (document.body.scrollHeight - window.innerHeight)) * 100)); |
| document.getElementById('progress-fill').style.width = `${progress}%`; |
| document.getElementById('progress-text').textContent = `${progress}%`; |
| |
| |
| const backToTop = document.getElementById('backToTop'); |
| if (scrollY > 500) { |
| backToTop.classList.add('visible'); |
| } else { |
| backToTop.classList.remove('visible'); |
| } |
| }); |
| |
| function scrollToTop() { |
| window.scrollTo({ top: 0, behavior: 'smooth' }); |
| } |
| </script> |
| </body> |
| </html> |
|
|