\section{Chapitre 18: Apprentissage supervisé}
\label{sec:ch18}

\subsection{Introduction}
\label{sec:ch18intro}

\begin{itemize}
\item Essentiel pour les environnements inconnus
\item Améliore la performance
\end{itemize}

Trois types d'apprentissage:
\begin{itemize}
\item \textbf{Supervisé (inductif)}:
  \begin{itemize}
  \item Ensemble de couples entrée-sortie $(x_n,y_n)$. 
  \item La distribution $F(x,y)$ est inconnue. 
  \item Par exemple $y_n = f(x_n) + w_n$ où $w_n$ est un bruit centré.
  \item On cherche $h(x)$ qui se rapproche le plus possible de $f(x)$. Si $h(x_n)=f(x_n) \forall n$, alors $h(x)$ est cohérente.
  \end{itemize}
\item \textbf{Non-supervisé}: Relations entre les perceptions. Apprend à partir du passé.
\item \textbf{Renforcement}: Évaluation par récompense ou punition.
\end{itemize}

Espace des hypothèses:

\begin{itemize}
\item L'espace des hypothèses $\emph{H}$ doit permettre de représenter les données. 
\item Si $\emph{H}$ contient $f$, alors le problème d'apprentissage est dit réalisable.
\item L'hypothèse la plus probable:
  \begin{align}
    h^{\star} &= \argmax_{h \in \emph{H}} P(h|data)\\
             &= \argmax_{h \in \emph{H}} p(data|h)P(h)
  \end{align}

\end{itemize}

\subsection{Arbres de décision}
\label{sec:ch18arbres}

\begin{itemize}
\item Chaque noeud représente un test à faire.
\item Chaque branche représente une valeur possible résultant du test. 
\item Une feuille représente une prise de décision.
\item Les instances sont représentées par des paires (attributs, valeur).
\item Les valeurs peuvent être continues ou discrètes.
\end{itemize}

La fonction

\begin{itemize}
\item La fonction est généralement binaire, mais on peut la généraliser à plusieurs valeurs de sortie ou à une valeur continue. Les problèmes de classification sont les plus fréquents.
\item Les arbres de décisions sont robustes aux erreurs et aux valeurs manquantes.
\item Toute fonction booléenne est représentable par un arbre de décision.
\end{itemize}

\subsubsection{Algorithme}
\label{sec:ch18arbrealgo}

\begin{itemize}
\item Construction de haut en bas.
\item Chaque valeur possible de l'attribut choisi crée un noeud.
\end{itemize}

\subsubsection{Entropie}
\label{sec:ch18entropie}

L'entropie de Shannon est définie comme la somme pondérée de l'information de Shannon:

\begin{align}
  H(x) &= \sum_{i=1}^np_i\log_2{\frac{1}{p_i}} \\
\end{align}

Propriétés de l'entropie:

\begin{itemize}
\item $H(X) \geq 0$ et $H(X)=0 \iff \exists i, p_i=1$
\item $H(X) \leq \log_2(n)$ et $H(X) = \log_2(n) \iff \forall i p_i=\frac{1}{n}$ 
\end{itemize}

\subsubsection{Choix de l'attribut}
\label{sec:ch18choixattr}

\begin{itemize}
\item Choisir l'attribut ayant le meilleur gain d'information:
  \begin{align}
    \text{Gain}(S,A) &\equiv H(S)-\sum_{v \in V(A)}\frac{\abs{S_v}}{\abs(S)}H(S_v)\\
    H(S) &\equiv - \sum_{i=1}^c(p_i)\log_2(p_i)
  \end{align}
\end{itemize}

\subsubsection{Procédure générale d'apprentissage}
\label{sec:ch18procappren}

\begin{itemize}
\item Collecte d'exemples
\item Division (entrainement, test, validation)
\item Générer l'hypothèse H sur l'ensemble de validation
\item Mesurer l'hypothèse H sur l'ensemble de test
\end{itemize}

\subsubsection{Élagage de l'arbre}
\label{sec:ch18elagage}

Un noeud devient une feuille avec la valeur de classification la plus fréquente.
Cette étape se fait si elle améliore la performance sur l'ensemble de validation.

\subsubsection{Valeurs manquantes}
\label{sec:ch18valmanq}

S'il y a des valeurs manquantes dans le jeu d'entrainement, on peut:
\begin{itemize}
\item Donner la valeur moyenne de cet attribut. Le calcul de l'information de change pas.
\item Attribuer une probabilité pour la valeur manquante, On a maintenant des fractions d'exemples dans nos calculs.
\end{itemize}

\subsubsection{Attributs multivariés}
\label{sec:ch18multivar}

Si on a des attributs qui ont plusieurs valeursm on peut avoir un problème avec la fonction de gain d'information, car chaque attribut peut être unique. On se retrouve donc avec un arbre horizontal de profondeur 1. Au lieu d'utiliser le gain d'information, on utilise la ratio de gain d'information, ce qui pénalise ces attributs.

\begin{align}
  \textsc{SplitInformation}(S,A) &\equiv -\sum_{i=1}^c\frac{\abs{S_i}}{\abs{S}}\log_2\frac{\abs{S_i}}{\abs{S}}\\
  \textsc{GainRatio}(S,A) &\equiv \frac{\textsc{Gain}(S,A)}{\textsc{SplitInformation}(S,A)}
\end{align}

\subsubsection{Attributs continus}
\label{sec:ch18attrcont}

On utilise un point de coupe pour obtenir une discrétisation.
\begin{itemize}
\item On trie les valeurs en ordre croissant
\item On calcule la \textbf{médiane} à chacun des changements de valeur
\item On compare les valeurs de coupe et on choisit celle qui a le \textbf{plus grand gain} d'information
\end{itemize}


\subsection{Ensembles d'hypothèses}
\label{sec:ch18ensembles}

On apprened plusieurs hypothèses et on combine leurs prédictions.
\begin{itemize}
\item \textbf{Vote par majorité}. La prédiction \textbf{la plus fréquente} est retournée.
\item \textbf{Boosting}. On attribue un poids à chacun des exemples. Plus un exemple a un poids important, plus il sera considéré par l'algorithme d'apprentissage. On augmente le poids des exemples mal classés et diminue celui de ceux bien classés. On calcule la \textbf{majorité pondérée} par la performance sur l'ensemble d'entrainement.
\end{itemize}

\subsection{K-voisins plus proches}
\label{sec:ch18knn}

Le seul paramètre est le nombre de voisins à considérer. On a un échantillon d'exemples et de classes. Pour un nouvel exemple, on calcul la distances avec chaque exemple de l'échantillon. On choisit les $k$ plus proches et on effectue un vote de majorité de la classe.

Mesures de distance:
\begin{itemize}
\item Enclidienne: $D(X,Y)=\sqrt{\sum_{i=1}^nw_i(x_i-y_i)^2}$
\end{itemize}

Fonction visée:

\begin{itemize}
\item Valeurs possibles $V$
\item L'estimation de $f$ est tout simplement la valeur qui revient le plus souvent parmi les $k$ plus proches voisins
\end{itemize}

\begin{align}
  \hat{f}(x_q) \leftarrow \max_{v \in V}\sum_{i=1}^k \delta(v,f(x_i))
\end{align}


\subsection{Réseaux de neurones}
\label{sec:ch18reseaux}

Un réseau de neurones est un ensemble de neurones interconnectés. Chaque neurone contient:

\begin{itemize}
\item Des liens d'entrée $x_i$
\item Des poids d'entrée $w_{j,i}$
\item Une fonction d'entrée
\item Une fonction d'activation
\item Une valeur de sortie
\end{itemize}

\begin{figure}[h!]
  \centering
  \includegraphics[height=152px]{neurone_artificiel}
  \caption{Un neurone artificiel}
  \label{fig:ch18neurone}
\end{figure}

\subsubsection{Perceptron}
\label{sec:ch18perceptron}

\begin{itemize}
\item La fonction d'entrée est une somme pondérée $\sum_{i=0}^nw_ix_i$.
\item Un perceptron peut donc représenter toutes les fonctions linéairement séparables. Ex: OR et AND le sont, mais XOR ne l'est pas.
\item Dans ces deux premiers cas, la fonction d'activation $a_i=1, \sum_{i=1}^nw_ix_i>0; -1, sinon$. On change $w_0$ pour avoir le comportement désiré. 
\end{itemize}

Règle d'apprentissage:

On débute avec des valeurs de poids aléatoires
Puis on mets les poids à jour pour chaque exemple.

\begin{align}
  w_i \leftarrow w_i + \eta(t-o)x_i
\end{align}

On peut aussi le faire après une première passe sur tous les exemples:

\begin{align}
  w_i \leftarrow w_i + \eta\sum_{d \in D}(t_d-o_d)x_{id}
\end{align}

\subsubsection{Fonction d'activation}
\label{sec:ch18activation}

Il existe plusieurs fonctions d'activations possibles:

\begin{figure}[h!]
  \centering
  \begin{itemize}
  \item Sigmoid: $\sigma(y) = \frac{1}{1+e^{-y}}$
  \end{itemize}
  \caption{Fonctions d'activation}
  \label{fig:ch18fonctionactivation}
\end{figure}

\subsubsection{Réseaux multi-couches}
\label{sec:ch18reseauxmulti}

Les réseaux multi-couches permettent de créer des séparateurs non-linéaires. On a alors ce qu'on appelle des couches de neurones cachées.

\begin{figure}[h!]
  \centering
  \includegraphics[height=264px]{reseauprofond}
  \caption{Un réseau profond de neurones artificiels}
  \label{fig:ch18neurone}
\end{figure}

On peut représenter la fonction XOR avec deux couches d'un neurone linéaire.

\begin{figure}[h!]
  \centering
  \includegraphics[height=208px]{xor-neurone}
  \caption{Un réseau profond modélisant la fonction XOR}
  \label{fig:ch18neuronexor}
\end{figure}

L'ajustement des poids revient à changer les paramètres de la fonction représentée par le réseau.

\subsubsection{Rétropropagation}
\label{sec:ch18retroprop}

Utilise l'algorithme de descente du gradient.

L'erreur du réseau est:

\begin{align}
  E(\vec{w})=\frac{1}{2}\sum_{d\in D}\sum_{k \in \text{sorties}}(t_{kd}-o_{kd})^2
\end{align}

On exprime la variation de poids par:

\subsection{Machines à vecteurs de support (SVM)}
\label{sec:ch18svm}


%%% Local Variables:
%%% mode: latex
%%% TeX-master: "notes_de_cours"
%%% End:


