Nous devons donc trouver un algorithme qui, en fonction de données numériques démographiques, renvoie 1 (salaire de plus de $50K) ou 0 (salaire de moins de $50K). C'est un problème de classification (trouver si un individu est de la classe 1 ou 0). Mais commencons d'abord par changer notre angle de vue.


De la classification à la régression

En effet, pour des problèmes de classification, on utilisera généralement un algorithme de classification . Mais nous allons plutôt étudier, cette fois-ci, un autre type d'algorithme : les algorithmes de regression. En régression, on ne cherche plus à classer (trouver un lable (=une classe) : 0, 1 ou 2 etc...) mais à trouver un nombre réel (0, 1/3, 2,232398 ou 100000 etc.).

On peut transformer très simplement un problème de régression en problème de classification. Dans notre cas, nous allons découper nos résultats en deux. Notre algorithme sera configuré pour représenter une fonction h qui renvoie un nombre réel entre 0 et 1. On va aller donner l'étiquette (label) 0 à tous les nombre inférieurs à 0,5 et l'on va donner 'étiquette (label) 1 à tous les nombre supérieurs à 0,5

On renvoie un résultats en fonction des données démographiques d'un individu x, qui sont donc les variable de notre fonction h qu'on appellera hypothèse.

Individu : x = (âge, heures travaillées, niveau d'étude,...)
Hyptothèse : h(x) = h(âge, pays, niveau d'étude,...) = y         avec y entre 0 et 1
Si H(x) = y <=0.5 :  l'individu x gagne moins de 50000 USD
Si H(x) = y >0.5, alors l'individu x gagne plus de 50000 USD


Modèle linéaire : une courbe sous forme de droite

On l'a vu, notre hypothèse est fonction de variables démographique. Cette hypothèse sera un modèle linéaire. Ce qui veut simplement dire que la formule de notre fonction sera composée de paramètres que l'on va multiplier à nos variables

Variable : Age
Paramètre : B1
Modèle linéaire : B1 * Âge

Au final, nous allons attribuer un paramètre à chaque variable pour créer la formule finale de notre hypothèse.


estimation du salaire d'un individu = hb(individu)
hb(individu) = b0+ b1*âge + b2*heures_travaillées + b3*années_d_étude + ....

Notons un paramètre b0, lié à aucune variable, qu'on appellera le paramètre d'interception (ou biais)

Pour raccourcir la notation, nous allons traiter chacune de nos variable comme un Xi, on se retrouve donc avec âge=x1, heures=x2 etc... Ce qui fait qu'au final un individu x est caractérisé par une suite de Xi (x1,x2,x3...), aussi appellé vecteur. Notre hypothèse devient donc :


hb(x) = y = b0 + b1x1 + b2x2+ b3x3 + b4x4 ...

Si nous n'avions eu qu'une seule variable, notre formule aurait la forme  h(x)= b0 + b1x1. Et l'on s’aperçoit que cela correspond à une ligne. Ci-dessous, un modèle linéaire qui prédirait le salaire en fonction de l'âge.




Régression linéaire : trouver la plus petites distance entre une droite et des points

Nous venons de modéliser une fonction mathématique qui en fonction de variables démographiques va nous nous renvoyer un nombre. Et ce nombre correspond à une prédiction du niveau de salaire d'un individu. Comme chaque individu est représenté par un vecteur x de variables différentes, notre fonction h(x) renverra un y différent.
Maintenant, il nous reste a trouver la valeur des paramètres b0, b1etc. !

Tout d'abord notons que l'ensemble des vecteurs individus x peut-être représenté par une matrice grand X (avec chaque individu sur une ligne). Ainsi que tous les résultats seront regroupés sous la forme d'un grand Y (matrice de une seule colonne avec un résultat y par ligne).

On l'a vu un bon moyen d'évaluer des prédiction est d'utiliser le concept de distance. Plus notre prédiction est éloignée (distante) du résultat attendu, moins on est bon. On va donc essayer de réduire cette distance, en apprenant de nos exemples.

Dans notre ensemble de tests, nous avons pour chaque individu son niveau de salaire, on peut ainsi tester la distance entre le niveau de salaire réel y et le résultat de notre prédiction H(x). On utilise ici la distance des moindres carrés pour calculer notre erreur, sur les grands X et Y définis précédemment :

Distance = (h_{B}(X)-Y)^2
= somme des différences au carré entre chaque prédiction et résultat réel


Pour avoir une idée plus nette de ce que nous allons faire, repassons à une seule variable.
Si, par exemple, nous avons dans notre échantillon, les salaires suivants en fonction de l'âge :



Nous allons essayer de trouver une droite qui passe au milieu de tous ces points en minimisant les distances (verticales) entre la droite et les points.

On remarque en 0 notre paramètre d'interception b (environ -7000). On voit qu'il n'a aucun sens dans la réalité (gagner moins 7000 dollars à la naissance ??), il ne faut donc pas trouver d'interprétation à ce paramètre qui sert juste à 'bien placer' notre droite. La pente b1, elle a un sens, ici c'est le facteur de croissance moyenne du salaire au fil des ans.




La fonction de coût

De la distance, nous dérivons une fonction de coût qui exprime la distance entre nos prédictions et les résultats réel en fonction des paramètres B choisis et du nombre d'exemples (ie, d'invidus étudiés) m :

J(b_{0},b_{1},b_{2}...) = \frac{1}{2m} \left (h_{B}(X)-Y \right )^2
Ou légèrement plus compliqué en utilisant la notation petit x (chaque individu) à la place de grand X (la matrice des individus), avec m le nombre d'individus :

J(b_{0},b_{1},b_{2}...) = \frac{1}{2m} [ \sum\limits_{i=0}^m (h_{B}(x^{(i)}))-y^{(i)}) ]^2

Et voilà ! Nous avons maintenant une fonction coût J (quasi égale à la distance), avec des paramètres (les B0,B1,B2..), que l'on peut calculer en fonction des B choisis

Notre but est maintenant de minimiser cette fonction de coût, c'est à dire d'essayer de trouver les B qui feront que notre coût sera le plus proche de zéro possible.

Si vous vous demandez à quoi sert le 1/2m, il est là pour simplifier nos calculs dans l'étape suivante, c'est une constante et n'a donc pas d'impact sur la minimisation (il s'agit toujours de rendre J le plus petit possible).

Et si vous vous demandez comment on minimise, et bien il existe un algorithme très simple appelé algorithme du gradient que nous allons décrire là aussi dans l'étape suivante. Vous pouvez néanmoins sauter cette partie si vous souhaitez éviter encore des maths.