Interrogation IA

Télécharger au format docx, pdf ou txt
Télécharger au format docx, pdf ou txt
Vous êtes sur la page 1sur 10

Interrogation Python for AI and Data Mining

I. Généralités
1) Expliquer pourquoi on peut parler “d’apprentissage” ou « d’intelligence artificielle » ?

On peut parler d’apprentissage en Intelligence Artificielle car notre modèle va


réellement essayer (via diverses algorithmes mathématiques) d’extrapoler des
paterne ou des séquences à partir de données qui vont être mises à disposition. Le but
est d’être apte à gérer des données inconnues à partir des données déjà traitées.
C’est un comportement généralement associé à l’humain, d’où le terme
d’intelligence.

2) Quels sont les 3 grandes tâches ou familles d’algorithmes d’intelligence artificielle ?


Décrire le type de données d’entrée, le type de prédiction de chaque famille
d’algorithme et un exemple d’utilisation de cette famille d’algorithme

Il existe donc 3 familles d’algorithme :

L’algorithme de classification : le but est d’associer une entrée (image, texte,


échantillon audio) à une catégorie. Mathématiquement, le modèle renverra un entier
naturel qui correspondra à une catégorie.
Exemple d’utilisation : détermination des sentiments exprimées dans une phrase
(joie, tristesse…)

L’algorithme de régression : le but est de prédire une ou plusieurs variables à partir


des variables en entrées.
Exemple d’utilisation : Prédire le prix d’une voiture d’occasion via divers paramètres
mis en entrées. (Modèle, année, kilométrage, nombre de propriétaire…)

L’algorithme de segmentation : le but, en computer vision, va être de segmenter une


image afin de classer les pixels dans diverses catégories (se rapproche de l’algorithme
de classification)

3) Qu’est-ce qu’un algorithme de réduction de dimensionalité ? Expliquer votre réponse


à l’aide d’un schéma.

Un algorithme de réduction de dimensionnalité sert à réduire les données qui vont


être donnée à notre modèle. Cependant, la réduction des données ne se fait pas de
manière anodine, le but est d’en conserver le plus de sens possible (d’un point de vue
informatique et mathématique, pas obligatoirement d’un point de vue humain). Ainsi
on peut y supprimer toute données redondante ou non significative et ainsi gagner
du temps de traitement.

4) Citer 2 méthodes de réduction de dimensions.

Nous avons étudier deux méthode de réduction de dimension : SVD (le but va être
d’y repérer des « concept » et d’en converser que les plus « fort » ; dans le sens de
pertinent à exploiter/ significatif des données).

Ensuite il existe aussi la méthode PCA, ou le but va être de trouver un espace de plus
faible dimension ou la variance des données est maximale

5) Définir ce que l’on appelle une « frontière de décision ».

Dans un algorithme de régression dont l’on veut établir une classification, la frontière
de décision va être un point, une droite, un plan. Tout ce qui d’un coté ou de l’autre
de cette frontière sera de catégorie différente

6) Définir ce qu’est une fonction de coût / loss function.

Une fonction de coût sert à indiquer à quel point notre modèle est fiable sur un jeu
de données.

7) Donner 2 exemples de fonctions de coût et donner un exemple d’utilisation de


chacune de ces fonctions de coût. Pourquoi utiliser l’une plutôt que l’autre ?

Les deux exemples de fonction de coût vu sont les fonction de coût L1 et L2, la
principale différence est l’élévation au carré de la formule pour L2 par rapport à L1.
Cela signifie que si les valeurs obtenues sont très éloigné des résultats attendus, la
valeur de la fonction de coût augmentera (la pénalisation est donc plus sévère)

8) Expliquer ce qu’est le « rasoir d’Ockham » et comment ce principe s’applique-t-il à


l’IA ?

Le rasoir d’Ockham est un principe philosophique qui peut se résumer en « la


solution la plus simple est la meilleure ». Ce principe s’applique à l’IA dans la mesure
ou la complexité aura tendance à également caractériser le bruit de nos données
d’entrainement (ce que l’on veut à tout prix éviter).
9) Définir ce qu’on entend par sur-apprentissage (« overfitting ») et sous-apprentissage
(« underfitting »). Comment palier le problème de l’overfitting ?

L’underfitting, pouvant se traduire par manque d’entrainement, correspond à un


modèle incapable de décrire les données en entrées. A l’inverse, l’overfitting
correspond à un modèle trop complexe et donc beaucoup plus dépendant des
données utilisé lors de son apprentissage. Or s’il est trop dépendant des données
d’entrainement, la prédiction du modèle sur de nouvelles données risque d’être
mauvaise. Pour éviter l’overfitting, on peut limiter le nombre de paramètres afin de
garder un modèle (relativement) simple. On peut rajouter un terme à notre fonction
de coût représentant notre complexité du modèle.

10) Expliquer le concept de l’équilibre entre biais et variance (vous définirez ces deux
notions).

La variance correspond à la prise en compte de trop de paramètre pour déterminer la


sortie, le modèle est donc sensible à toute les micro-variation en entrée
Le biais correspond à l’écart entre les prédictions et les valeurs attendue.
En réalité, on parle « d’équilibre » entre biais et variance mais le véritable but va être
de minimiser ces deux valeurs.
Un modèle avec une faible variance et un faible biais sera plus fiable sur des données
inconnues.

11) Donner les 3 méthodes vues en cours pour optimiser un algorithme de Machine
Learning. Expliquer brièvement la méthode qu’on utilisera le plus souvent en
pratique.

Pour optimiser un algorithme de Machine Learning on va chercher à minimiser la


fonction de coût et pour cela 3 méthodes :
Trouver une dérivée qui s’annule pour une valeur des paramètres du modèle (pas
toujours possible)
Ensuite, il existe la méthode de descente de gradient et la descente de gradient
stochastique, la différence réside dans le fait qu’on calcule le gradient/la dérivée pour
chaque ligne de notre trainset dans la descente stochastique

12) Qu’est-ce qu’un algorithme supervisé ?


Un algorithme supervisé est un algorithme que l’on entraine avec un trainset
contenant de vérités terrains (les réponses que devrait nous donner l’intelligence
artificielle une fois entrainée) et que l’on va utiliser. Le modèle, pendant sa phase
d’entrainement, connait déjà la réponse qu’on attend d’elle

13) En pratique, comment sait-on quand entraîner un algorithme de Machine Learning


(Early stopping). Vous justifierez votre réponse à l’aide d’une courbe d’évolution de
la training loss et de la validation loss par rapport au rang de l’itération de
l’algorithme d’optimisation.
En abscises, la complexité du modèle, en ordonnée le taux d’erreur de prédiction,
La courbe bleue correspond aux données inconnues, et la rouge aux données
d’entrainement (désolé pour le schéma paint)
Nous arrêtons l’entrainement de notre algorithme quand le minimum est atteint sur
la courbe bleue car c’est bien sur les données inconnues que nous espérons de
bonnes prédiction.

14) Supposons que nos données sont décrites par une numpy array 𝑋 de m lignes
(m observations) et p colonnes (p paramètres ou « features »). Donner la ligne de
code en Python permettant de calculer le vecteur 𝑋̅ de p-dimension des paramètres
moyennés sur toutes les observations de votre dataset (moyenne du dataset)
X_vector= np.array([sum(X[:,i])/len(X) for i in range(len(X[0]))])
(equivalent du np.mean)

II. Sélection de modèle en validation croisée


Choisissez la bonne réponse et justifiez votre réponse.
On suppose que vous avez trouvé les paramètres optimaux θ d’un modèle en utilisant une
validation croisée en 10 parties (10-fold cross validation). Le meilleur moyen de choisir le
modèle final à utiliser et d’estimer son erreur est :

- Choisir l’un des 10 modèles entraînés et utiliser son erreur sur les données sur lesquels
il n’a pas été entraîné (partie utilisée comme jeu de validation)

- Choisir l’un des 10 modèles entraînés, utiliser la moyenne des erreurs cross-validées
comme estimateur de son erreur.
- Moyenner les 10 modèles, utiliser la moyenne des erreurs cross-validées comme
estimateur de son erreur.

- Moyenner les 10 modèles, utiliser l’erreur du « modèle moyen » évaluée sur le jeu
d’entraînement tout entier comme estimateur de l’erreur.

- Entraîner un nouveau modèle sur le jeu d’entraînement tout entier en utilisant ces
paramètres optimaux θ, utiliser la moyenne des erreurs cross-validées comme
estimateur de l’erreur de notre modèle.

La cross-validation permet d’assurer que toutes les observations de l’ensemble du dataset


puissent apparaitre dans le trainset et dans le validationset. En partant de ce principe, choisir
(arbitrairement ou non) l’un des modèles entrainés revient à ne pas tenir compte d’une
éventuelle mal répartition des données. De la même façon, entrainer un nouveau modèle
serait contre-productif. Il faut donc faire la moyenne des 10 modèles et utiliser la moyenne
des erreurs des k parties pour estimer l’erreur.

III. Un peu de maths (désolé)


Soit Mmxn une matrice réelle (dont les coefficients sont à valeurs dans R). Cette matrice (data
matrix) représente une base de données de m observations, chaque observation est décrite par
n paramètres (features/dimensions).

a) Les matrices MMT et MTM sont-elles symétriques ? Carrées ? Réelles ? Justifier


votre réponse
b)
Les Matrice seront symétrique (et par conséquent carré), c’est une propriété des
matrices quand on en multiplie une par sa transposée.

c) Définir la décomposition en valeurs singulières (SVD).

La décomposition en valeurs singulières permet de réduire la taille de nos


données d’entrées en IA, le but ici va être de converser les « forces » des
« concepts », dit plus simplement, nous entrainerons notre modèle IA
uniquement les avec les données les plus significatives.

d) En appliquant une SVD sur M, exprimer MMT (resp. MTM) en fonction des
vecteurs singuliers V de M (resp. U)

e) (Bonus) Montrer que les valeurs propres de MMT sont les mêmes que celles de
MTM, qu’en est-il de leurs vecteurs propres ?

f) (Bonus) Quelle est la relation entre les valeurs singulières σ de M et les valeurs
propres λ de MMT ?
IV. Evaluation de modèle
On évalue 2 algorithmes sur une tâche qui consiste à classifier des champignons parmi 2
classes : toxique ou comestible. On obtient les résultats suivants :

Su comme comestible Su comme toxique


Prédit comme comestible 100 3
Prédit comme toxique 0 97
Algorithme 1

Su comme comestible Su comme toxique


Prédit comme comestible 96 0
Prédit comme toxique 4 100
Algorithme 2

a) Comment s’appellent ces matrices ?


Ce sont des matrices de confusion.
b) Calculer l’accuracy de chacun des algorithmes.
La précision des algorithmes correspond aux vrais positifs et au vrais négatif sur
l’ensemble des valeurs.
Soit pour l’algorithme 1 : 100+97/200 = 0.985
Soit pour l’algorithme 2 : 96+100/200 = 0.980

c) L’accuracy est-elle une bonne métrique d’évaluation de ces algorithmes ? Donner


une métrique plus significative.

La précision est une mesure peu significative pour l’évaluation des algorithmes,
on y préférera le F1-score.

d) Pour la tâche d’identification des champignons comestibles quel algorithme serait


le meilleur ? Justifier votre réponse.
Contrairement à ce que laisse pense l’accuracy, on préfèrera dans ce contexte,
utiliser l’algorithme 2, en effet il faut ici minimiser les faux négatifs plutôt que les
faux positifs. Quelqu’un ne mangeant pas un champignon comestible est un
dommage infiniment moins grand que quelqu’un mangeant un champignon
toxique mais étant indique par notre modèle comme étant comestible.
V. Régression
Supposons que nous avons un modèle de régression linéaire : 𝑎𝑟𝑔𝑚𝑖𝑛θ‖𝑦
− 𝑋θ‖22 + 𝜆‖𝜃‖𝑝𝑝

a) Donner le nom de ces modèles quand p=1 et p=2. Comment appelle-t-on le


deuxième terme de la fonction à minimiser ?
Pour p=1, c’est la régression LASSO ou régularisation L1
Pour p=2, c’est la régression Ridge ou régularisation L2
On dit qu’on rajoute un terme de régularisation à la fonction de coût.

b) Quel est l’effet sur le modèle si l’on augmente 𝜆 ?


Choisissez la réponse correcte avec justification (une courte justification suffit)
parmi les propositions suivantes :

i) Augmenter le biais, augmenter la variance

ii) Augmenter le biais, baisser la variance

iii) Baisser le biais, augmenter la variance

iv) Baisser le biais, baisser la variance

v) Pas assez d’information pour conclure.


L’augmentation de 𝜆 signifie l’augmentation de terme de pénalisation, soit une
augmentation de la complexité du modèle, entrainant un surentrainement de
notre modèle. La variance représentant la sensibilité au micro-variations des
données en entrées, c’est elle qui augmente si 𝜆 augmente

VI. Expression analytique d’une solution d’un algorithme


de régression :
Soit {𝑦𝑖,𝑋𝑖}𝑚𝑖=1 un jeu de données de m observations, chaque observation est décrite par un
vecteur à n dimensions. On considère alors l’entraînement d’un modèle dont le problème de
minimisation est le suivant (avec λ > 0):
𝑎𝑟𝑔𝑚𝑖𝑛θ‖𝑦 − 𝑋θ‖22 + 𝜆‖𝜃‖22

a) (Bonus) Calculer le gradient de la fonction J à minimiser.


b) (Bonus) On admet l’existence et l’unicité de la solution. Donner l’expression de 𝜃
vérifiant .

c) Expliquer brièvement en quoi cette expression diffère de l’expression d’un


problème de minimisation des moindres carrés et pourquoi elle permet de
prévenir une situation d’overfitting.
Cette expression (correspondant la régression L2) diffère par l’ajout d’un terme de
pénalisation absent dans la méthode des moindres carrés, ce terme de pénalisation
permet, comme déjà énoncé plus haut ; de limiter la complexité du modèle et ainsi
d’éviter le surentrainement du modèle.

VII. Cas pratique :


Vous êtes en charge du développement d’un algorithme de Machine Learning pour la
détection du diabète. On considère la classe à prédire de +1 si le patient est atteint d’une
forme de diabète et de 0 sinon. Chaque patient de votre base de données possède un
nombre p de paramètres (« features ») qui permettent de prédire son diagnostic (résultat
d’un certain nombre d’examens médicaux, e.g. prises de sang, estimation du nombre de
leucocytes…) Décrire un protocole dans les grandes lignes de votre façon d’opérer pour
développer cette IA. Vous préciserez les étapes et notamment :
- Une estimation de la quantité de données dont vous avez besoin, comment les
splitter
- La grande famille de problème dans laquelle nous sommes
- Une « pseudo-formalisation » du problème comme on a pu le voir en classe -
L’éventuel pré-traitement (preprocessing) que vous appliquerez sur vos données -
La sélection de vos features si nécessaire.
- Le modèle utilisé.
- Le protocole d’entraînement, de sélection et d’évaluation de votre modèle final.
- Les métriques utilisées et celles à favoriser (doit-on favoriser un nombre de Faux
Positifs bas au détriment du nombre de Faux négatif ou inversement ?)

Commençons déjà par rappeler quelques bases :


Il existe deux types de diabète (resp. Type 1 et type 2), avec répartition de 8/92%.

Le diabète de type 1 est une maladie auto-immune, cela signifie que le taux de globule blanc
peut être un bon indicateur de détection (loin d’être suffisant, n’importe quelle infection
bénigne peut faire monter le taux de globule blanc)

Le diabète se caractérise par un taux de glucose trop élevé dans le sang, ce qui peut être un
bon indicateur (le taux de glucose variant en fonction du moment de la journée ou des prises
de repas, indiquer dans les données d’entrées l’heure de la mesure du glucose dans le sang
ou la date de dernier repas, ou encore spécifier à jeun ou non peut permettre d’avoir un
meilleur modèle prédictif.

On peut rajouter à ces quelques paramètres la présence ou non de membre de la famille


déjà touché par la maladie (avec pourquoi, le degré d’éloignement pour éviter de donner
trop d’importance au fait qu’une cousine au troisième degré sois touché, et, au contraire de
renforcer cette importance si les ascendants directs du patient sont touchés.

On peut rajouter à ces quelques facteurs d’autres facteurs de prédisposition au diabète de


type 2 : l’obésité, la sédentarisation, l’âge…

A titre personnel, au vu des différence significative entre les deux types de diabète, j’en
serait venu à la conclusion de développer deux modèle distinct pour la détection de diabète
avec certaines données d’entrées spécifiques pour un modèle (ex : la mesure du taux de
globule blanc n’est pertinente que dans le cas d’un diabète de type 1), cependant l’énoncé
précise bien que nous ne développons qu’un seul algorithme et il n’est précisé nulle part non
plus que nous devons détecté le type de diabète dans notre algorithme. La sélection de nos
features sont donc toutes celles évoqués précédemment et n’entraineront qu’un seul et
unique modèle qui indiquera, après entrainement si le patient à le diabète ou non.

Nous sommes donc, dans ce contexte, sur un algorithme de classification binaire (touché par
la maladie ou non), dérivé de la probabilité d’appartenir à l’une ou l’autres des classes.
Notre seuil sera donc évidement défini à 0,5.
Un algorithme de régression logistique est tout désigné au vu des possibilités étudiés lors de
ce module (l’algorithme de random forest, vu lors du premier module IA, aurait pu être
également envisagé, mais vu que ce dernier n’as pas été étudié ici, nous n’en traiteront pas)

Les features ainsi que le modèle ont été défini, mais la pas la quantité de données, il est
relativement difficile d’estimer la quantité des données nécessaire à l’obtention d’un
modèle, cependant au vu de l’approche médicale et statistique plus haut
(symptômes/prédispositions connus), la quantité de jeu d’entrées n’a pas besoin d’être
immense (peut-être quelques milliers de lignes ? chiffre à prendre avec du recul)

Nous pouvons ensuite répartir notre jeu de données selon un rapport trainset, testset et
validationset de 70/20/10%, on peut également entrainer plusieurs modèles pour faire de la
cross-validation, 10 parties non recouvrantes (donc k=10) est un partitionnement souvent
utiliser pour la validation croisée et c’est celle que nous utiliserons dans notre contexte.
Nous utiliserons la métrique F1 (ou Moyenne géométrique) afin d’évaluer nos modèles, plus
conseillé qu’une simple précision.

Enfin, au vu du contexte, il est préférable de minimiser le nombre de Faux Négatif lorsque


l’on se penchera sur la matrice de confusion. Il est largement préférable, d’un point de vue
médical, d’avoir un patient diagnostiqué du diabète alors qu’il n’en a pas plutôt qu’un
patient qui ne suivra aucun traitement car diagnostiqué sain.

Vous aimerez peut-être aussi