301 lines
No EOL
8.5 KiB
TeX
301 lines
No EOL
8.5 KiB
TeX
\documentclass[a4paper,11pt]{article}
|
|
|
|
% Packages
|
|
\usepackage[utf8]{inputenc}
|
|
\usepackage[T1]{fontenc}
|
|
\usepackage[francais]{babel}
|
|
\usepackage{geometry}
|
|
\usepackage{tikz}
|
|
\usepackage{amsmath}
|
|
\usepackage{amssymb}
|
|
\usepackage{enumitem}
|
|
\usepackage{xcolor}
|
|
\usepackage{tcolorbox}
|
|
\usepackage{fancyhdr}
|
|
\usepackage{multicol}
|
|
|
|
% Configuration de la page
|
|
\geometry{margin=2cm}
|
|
\pagestyle{fancy}
|
|
\fancyhf{}
|
|
\fancyfoot[C]{Page \thepage/4 -- Activité k-NN}
|
|
\renewcommand{\headrulewidth}{0pt}
|
|
|
|
% Couleurs personnalisées
|
|
\definecolor{classA}{RGB}{231,76,60}
|
|
\definecolor{classB}{RGB}{52,152,219}
|
|
\definecolor{lightblue}{RGB}{227,242,253}
|
|
\definecolor{lightyellow}{RGB}{255,243,205}
|
|
|
|
% Configuration TikZ
|
|
\usetikzlibrary{shapes.geometric,calc}
|
|
|
|
\begin{document}
|
|
|
|
% ============= PAGE 1 =============
|
|
\begin{center}
|
|
{\Huge \textbf{Activité débranchée : k-NN}}\\[0.3cm]
|
|
{\Large \textbf{Les k Plus Proches Voisins}}
|
|
\end{center}
|
|
|
|
\vspace{0.5cm}
|
|
|
|
\textbf{Objectif :} Comprendre comment l'algorithme k-NN classifie un nouveau point en utilisant la proximité avec les points d'apprentissage.
|
|
|
|
\vspace{0.3cm}
|
|
|
|
\begin{tcolorbox}[colback=lightblue,colframe=blue!75!black,title=\textbf{Principe}]
|
|
\begin{itemize}[leftmargin=*]
|
|
\item On dispose d'un ensemble de points déjà classifiés (points d'apprentissage)
|
|
\item Pour classifier un nouveau point, on cherche ses \textit{k} plus proches voisins
|
|
\item La classe majoritaire parmi ces \textit{k} voisins devient la classe du nouveau point
|
|
\end{itemize}
|
|
\end{tcolorbox}
|
|
|
|
\vspace{0.5cm}
|
|
|
|
\section*{Exercice 1 : Classification avec k = 3}
|
|
|
|
Voici un ensemble de points sur un plan. Les cercles rouges (\textcolor{classA}{$\bullet$}) sont de classe A, les carrés bleus (\textcolor{classB}{$\blacksquare$}) sont de classe B. Le point noir ($\star$) est à classifier.
|
|
|
|
\vspace{0.3cm}
|
|
|
|
\begin{center}
|
|
\begin{tikzpicture}[scale=1.2]
|
|
% Grille
|
|
\draw[gray!30, step=1] (0,0) grid (8,8);
|
|
|
|
% Axes et cadre
|
|
\draw[thick] (0,0) rectangle (8,8);
|
|
|
|
% Points de classe A (cercles rouges)
|
|
\foreach \point in {(1,7), (1.5,6), (2,7.5), (2.5,6.5), (1.5,5), (2.5,5.5), (3,7)} {
|
|
\fill[classA] \point circle (0.15);
|
|
}
|
|
|
|
% Points de classe B (carrés bleus)
|
|
\fill[classB] (5,2) circle (0.15);
|
|
\fill[classB] ([shift={(-0.12,-0.12)}]5,2) rectangle ++(0.24,0.24);
|
|
|
|
\fill[classB] (5.5,3) circle (0.15);
|
|
\fill[classB] ([shift={(-0.12,-0.12)}]5.5,3) rectangle ++(0.24,0.24);
|
|
|
|
\fill[classB] (6,1.5) circle (0.15);
|
|
\fill[classB] ([shift={(-0.12,-0.12)}]6,1.5) rectangle ++(0.24,0.24);
|
|
|
|
\fill[classB] (6.5,2.5) circle (0.15);
|
|
\fill[classB] ([shift={(-0.12,-0.12)}]6.5,2.5) rectangle ++(0.24,0.24);
|
|
|
|
\fill[classB] (5.5,1) circle (0.15);
|
|
\fill[classB] ([shift={(-0.12,-0.12)}]5.5,1) rectangle ++(0.24,0.24);
|
|
|
|
\fill[classB] (7,2) circle (0.15);
|
|
\fill[classB] ([shift={(-0.12,-0.12)}]7,2) rectangle ++(0.24,0.24);
|
|
|
|
\fill[classB] (6.5,3.5) circle (0.15);
|
|
\fill[classB] ([shift={(-0.12,-0.12)}]6.5,3.5) rectangle ++(0.24,0.24);
|
|
|
|
% Point à classifier (étoile noire)
|
|
\node[star,star points=5,star point ratio=2.5,fill=black,draw=black,thick,minimum size=0.6cm] at (4,4.5) {};
|
|
|
|
\end{tikzpicture}
|
|
|
|
\vspace{0.3cm}
|
|
|
|
% Légende
|
|
\begin{tabular}{ccccc}
|
|
\textcolor{classA}{$\bullet$} Classe A & \quad &
|
|
\textcolor{classB}{$\blacksquare$} Classe B & \quad &
|
|
$\star$ À classifier
|
|
\end{tabular}
|
|
\end{center}
|
|
|
|
\vspace{0.5cm}
|
|
|
|
\subsection*{Questions :}
|
|
|
|
\begin{enumerate}
|
|
\item Identifiez les 3 points les plus proches du point noir $\star$. Tracez les distances sur le graphique ci-dessus.
|
|
|
|
\vspace{0.3cm}
|
|
Distances : \underline{\hspace{3cm}} \underline{\hspace{3cm}} \underline{\hspace{3cm}}
|
|
|
|
\vspace{0.3cm}
|
|
\item Parmi ces 3 points, combien sont de classe A ? \underline{\hspace{1.5cm}} De classe B ? \underline{\hspace{1.5cm}}
|
|
|
|
\vspace{0.3cm}
|
|
\item À quelle classe appartient donc le point noir avec $k = 3$ ? \underline{\hspace{3cm}}
|
|
\end{enumerate}
|
|
|
|
% ============= PAGE 2 =============
|
|
%\newpage
|
|
|
|
\section*{Exercice 2 : Influence du paramètre k}
|
|
|
|
Reprenez le même graphique que l'exercice 1.
|
|
|
|
\vspace{0.5cm}
|
|
|
|
\subsection*{a) Avec k = 1 (1 seul voisin)}
|
|
|
|
\begin{itemize}
|
|
\item Quel est le point le plus proche ? \underline{\hspace{5cm}}
|
|
\item Classification du point noir : \underline{\hspace{5cm}}
|
|
\end{itemize}
|
|
|
|
\vspace{0.5cm}
|
|
|
|
\subsection*{b) Avec k = 5 (5 voisins)}
|
|
|
|
\begin{itemize}
|
|
\item Listez les 5 points les plus proches : \underline{\hspace{7cm}}
|
|
|
|
\vspace{0.2cm}
|
|
\underline{\hspace{10cm}}
|
|
|
|
\item Nombre de classe A : \underline{\hspace{2cm}} \quad Nombre de classe B : \underline{\hspace{2cm}}
|
|
\item Classification du point noir : \underline{\hspace{5cm}}
|
|
\end{itemize}
|
|
|
|
\vspace{0.5cm}
|
|
|
|
\subsection*{c) Avec k = 7 (tous les voisins de chaque classe)}
|
|
|
|
\begin{itemize}
|
|
\item Nombre de classe A : \underline{\hspace{2cm}} \quad Nombre de classe B : \underline{\hspace{2cm}}
|
|
\item Classification du point noir : \underline{\hspace{5cm}}
|
|
\end{itemize}
|
|
|
|
\vspace{0.8cm}
|
|
|
|
\begin{tcolorbox}[colback=lightyellow,colframe=orange!75!black,title=\textbf{Réflexion}]
|
|
|
|
\textbf{1. La classification change-t-elle selon la valeur de k ? Pourquoi ?}
|
|
|
|
\vspace{0.8cm}
|
|
\underline{\hspace{14cm}}
|
|
|
|
\vspace{0.4cm}
|
|
\underline{\hspace{14cm}}
|
|
|
|
\vspace{0.5cm}
|
|
|
|
\textbf{2. Que se passe-t-il si k est trop petit (k = 1) ?}
|
|
|
|
\vspace{0.8cm}
|
|
\underline{\hspace{14cm}}
|
|
|
|
\vspace{0.4cm}
|
|
\underline{\hspace{14cm}}
|
|
|
|
\vspace{0.5cm}
|
|
|
|
\textbf{3. Que se passe-t-il si k est trop grand (k = nombre total de points) ?}
|
|
|
|
\vspace{0.8cm}
|
|
\underline{\hspace{14cm}}
|
|
|
|
\vspace{0.4cm}
|
|
\underline{\hspace{14cm}}
|
|
|
|
\end{tcolorbox}
|
|
|
|
% ============= PAGE 3 =============
|
|
\newpage
|
|
|
|
\section*{Exercice 3 : À vous de jouer !}
|
|
|
|
Créez votre propre situation de classification avec $k = 3$.
|
|
|
|
\vspace{0.5cm}
|
|
|
|
\begin{center}
|
|
\begin{tikzpicture}[scale=1.3]
|
|
% Grille fine
|
|
\draw[gray!20, step=1] (0,0) grid (12,12);
|
|
|
|
% Axes et cadre
|
|
\draw[very thick] (0,0) rectangle (12,12);
|
|
|
|
% Graduations
|
|
\foreach \x in {0,2,4,6,8,10,12} {
|
|
\node[below] at (\x,-0.2) {\small \x};
|
|
}
|
|
\foreach \y in {0,2,4,6,8,10,12} {
|
|
\node[left] at (-0.2,\y) {\small \y};
|
|
}
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
|
|
\vspace{0.5cm}
|
|
|
|
\begin{tcolorbox}[colback=lightblue,colframe=blue!75!black,title=\textbf{Instructions}]
|
|
\begin{itemize}
|
|
\item Placez au moins 10 points : 5 cercles rouges (classe A) et 5 carrés bleus (classe B)
|
|
\item Placez une étoile noire (point à classifier)
|
|
\item Tracez les 3 distances les plus courtes
|
|
\item Déterminez la classe du point noir
|
|
\end{itemize}
|
|
\end{tcolorbox}
|
|
|
|
\vspace{0.5cm}
|
|
|
|
\textbf{Classification finale :} \underline{\hspace{5cm}}
|
|
|
|
% ============= PAGE 4 =============
|
|
\newpage
|
|
|
|
\section*{Pour aller plus loin}
|
|
|
|
\subsection*{Applications réelles de k-NN}
|
|
|
|
\begin{itemize}
|
|
\item Reconnaissance d'écriture manuscrite
|
|
\item Systèmes de recommandation (films, musique, produits)
|
|
\item Diagnostic médical (classification de maladies)
|
|
\item Détection de spam dans les emails
|
|
\item Reconnaissance faciale
|
|
\item Prévision météorologique
|
|
\end{itemize}
|
|
|
|
\vspace{0.5cm}
|
|
|
|
\subsection*{Questions de réflexion}
|
|
|
|
\textbf{1. Avantages de k-NN :}
|
|
\begin{itemize}
|
|
\item Simple à comprendre et à implémenter
|
|
\item Pas besoin d'entraînement complexe
|
|
\item Fonctionne bien pour des frontières non linéaires
|
|
\end{itemize}
|
|
|
|
\vspace{0.3cm}
|
|
|
|
\textbf{2. Limitations de k-NN :}
|
|
\begin{itemize}
|
|
\item Lent avec beaucoup de données (doit calculer toutes les distances)
|
|
\item Sensible aux données aberrantes
|
|
\item Nécessite de choisir la bonne valeur de $k$
|
|
\item Ne fonctionne pas bien si les classes sont déséquilibrées
|
|
\end{itemize}
|
|
|
|
\vspace{0.3cm}
|
|
|
|
\textbf{3. Comment choisir k ?}
|
|
\begin{itemize}
|
|
\item $k$ trop petit ($k=1$) : sensible au bruit, risque de sur-apprentissage
|
|
\item $k$ trop grand : perd les détails, risque de sous-apprentissage
|
|
\item Conseil : tester plusieurs valeurs et choisir celle qui donne les meilleurs résultats
|
|
\item Souvent, $k$ impair pour éviter les égalités ($k = 3, 5, 7...$)
|
|
\end{itemize}
|
|
|
|
\vspace{0.5cm}
|
|
|
|
\begin{tcolorbox}[colback=lightyellow,colframe=orange!75!black,title=\textbf{Défi bonus}]
|
|
Imaginez une situation où k-NN pourrait donner un mauvais résultat. Dessinez cette situation sur une feuille séparée et expliquez pourquoi.
|
|
|
|
\vspace{0.5cm}
|
|
\textit{Indices : Pensez aux données bruitées, aux classes déséquilibrées, ou aux points isolés...}
|
|
\end{tcolorbox}
|
|
|
|
\end{document} |