L’organisation de nos données dans l’apprentissage automatique by rerere

View this thread on steempeak.com
· @rerere ·
$2.20
L’organisation de nos données dans l’apprentissage automatique
<center>![files-1614223_1920.jpg](https://ipfs.busy.org/ipfs/QmUpFbHUxr6cckxCtzqDRkzp5NhLRYtfJJff3EgdiJaXrV)
[Source](https://pixabay.com/fr/fichiers-papier-bureau-1614223/)
</center>

Dans le domaine de l’apprentissage automatique, nous devons organiser nos données afin de pouvoir réaliser différentes phases. En effet, lors de la réalisation de notre système, nous allons avoir deux grandes phases : une phase d’entraînement et une phase de validation. La phase d’entraînement va nous permettre de réaliser l’apprentissage de notre système. Puis, la phase de validation va nous permettre de vérifier cet apprentissage tout en vérifiant les performances de notre système. 

Pour ce faire, nous allons devoir, dans un premier temps, organiser nos données. Ainsi, nous allons séparer nos données en trois catégories. Nous allons avoir nos données d’apprentissage (70~80 %), nos données de test (0~10 %) et nos données de validation (20 %). Nos données d’apprentissage et de test vont être utilisées durant la phase d’entraînement. Les données de test vont nous permettre de suivre l’évolution de l’apprentissage de notre système. Enfin, les données de validation vont être utilisées pour la phase de validation.

<h2>Évaluer notre classifier</h2>
Afin de pouvoir évaluer notre système, nous allons chercher à évaluer ces performances. Pour ce faire, deux notions clés existent. Il s’agit du **rappel** et de la **précision**.

<h3>Rappel</h3>
On définit la notion de rappel par le nombre de d’éléments trouvés dans une catégorie i par rapport au nombre d’éléments que possède la base de données dans cette même catégorie. Dans une écriture mathématique, nous aurons :

<center>![Capture.PNG](https://ipfs.busy.org/ipfs/QmR4UQsG6JQXQHjVxCrWK38rVbJ1oAqP8rNX8jAz8yP24f)</center>

Ainsi, nous cherchons à savoir le taux de réussite sur l’ensemble des éléments de notre catégorie.

<h3>Précision</h3>

On définit par précision le nombre d’éléments trouvés dans une catégorie i par rapport au nombre d’éléments appartenant à cette même catégorie. Dans une écriture mathématique, nous aurons :

<center>![Capture.PNG](https://ipfs.busy.org/ipfs/QmbTv9J2zYLfaLv46aGzgD1gKDWUaRTShuPR74fe3xHsZD)</center>

Nous cherchons ici, à savoir le taux de réussite de l’ensemble de nos prédictions sur une catégorie.

<h3>Illustration rappel/précision</h3>

Dans le cas d’une détection de maladie, il serait intéressant de récupérer toutes les personnes atteintes de la maladie, même si une personne n’est pas forcément atteinte par la maladie. En effet, cela permettrait, dans le cas d’une épidémie, de limiter sa propagation. Dans ce cas précis, c’est le score lié au rappel qui va nous intéresser le plus.

En revanche, dans la classification de courrier mail, et plus précisément dans la détection de spam, nous souhaiterons avoir un système qui pourrait laisser passer quelques spams de temps à autre. Cependant, nous n’aimerions pas qu’un mail important se retrouve dans notre liste de spams. Ainsi, dans ce cas de figure, nous allons privilégier le score lié à la précision.

Le score que nous allons privilégier dépendra de notre cas d’application. En effet, comme nous avons pu l’illustrer au-dessus, il se peut que, dans certains cas, nous souhaitions avoir une précision plus importante qu’un rappel, et inversement.

<h3>Donner un score avec la F-mesure</h3>
Lorsque nous cherchons à mesurer les performances de l’ensemble de notre système, nous aimons, généralement, avoir une seule valeur qui nous indique l’ensemble des performances de notre système. De ce fait, nous verrons souvent un taux appelé F-mesure. Cette mesure correspond à la moyenne harmonique de la précision et du rappel.
Ainsi, nous avons :

<center>![Capture.PNG](https://ipfs.busy.org/ipfs/QmcMF6DYrCkBvRq13eKL6oJfKBpBQm3GgCFouaWuiCo5wF)</center>

La formule, plus générale, utilise un réel positif β. Ce réel va nous permettre d’ajouter plus ou moins de poids en fonction de si on souhaite mettre plus d’influence sur la précision ou sur le rappel. De ce fait, nous allons avoir :

<center>![Capture.PNG](https://ipfs.busy.org/ipfs/Qme3cN6f8WjPyoNAmgTs1yY49UChKHDKAYMqJ9aj3EU4AH)</center>

<h2>Étude de cas d’apprentissage</h2>
Nous allons maintenant nous intéresser à quelques études de score de différents systèmes. Ici, le pourcentage représente le score de notre modèle. Plus le pourcentage est élevé, plus le nombre de prédictions correctes est élevé. En revanche, si nous avons un pourcentage bas, cela signifie que nous avons un nombre de prédictions correctes qui est faible.

<br />

| Cas |  Apprentissage | Validation |
|----|---|---|
| 1 | 95 % | 60 % |
| 2 | 89 % | 85 % |
| 3 | 20 % | 80 % |

<br />

Dans le cas numéro 1, nous avons un score dans la phase d’apprentissage très élevé. Cependant, durant la phase de validation, notre système a été mauvais. Cela se traduit par un effet de sur-apprentissage, notre système connaît par cœur nos données d’apprentissage. Ainsi, notre système ne sait pas comment interpréter les nouvelles données qu’il rencontre durant la phase de validation.

Dans le cas numéro 2, nous avons un système plutôt performant que ce soit durant la phase d’entraînement ou dans la phase de validation.

Dans le cas numéro 3, nous avons un problème avec nos données. En effet, nous pouvons nous rendre compte que la phase d’entraînement s’est mal déroulé pour notre système alors qu’il a plutôt bien réussi la phase dit de validation. Il faut donc réorganiser nos échantillons de données.

<h2>Conclusion</h2>

Au cours de cet article, nous avons vu comment séparer nos données en deux bases. Une base d’entraînement permettant l’apprentissage et une base de validation permettant de vérifier que l’apprentissage s’est bien passé. Nous avons aussi vu les notions de rappel et de précision qui seront à prendre en compte en fonction de notre cas d’application. Enfin, nous avons vu la F-mesure qui nous permet d’avoir un aperçu du score de notre système. 


<h2>Pour aller plus loin</h2>

- https://developers.google.com/machine-learning/crash-course/training-and-test-sets/splitting-data
- https://fr.wikipedia.org/wiki/Pr%C3%A9cision_et_rappel
- https://en.wikipedia.org/wiki/F1_score
- https://fr.wikipedia.org/wiki/Moyenne_harmonique 
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 157 others
properties (23)
post_id68,304,699
authorrerere
permlinkl-organisation-de-nos-donnees-dans-l-apprentissage-automatique
categoryfr
json_metadata{"image":["https:\/\/ipfs.busy.org\/ipfs\/QmUpFbHUxr6cckxCtzqDRkzp5NhLRYtfJJff3EgdiJaXrV"],"app":"busy\/2.5.6","tags":["fr","francostem","steemstem","math","science"],"links":["https:\/\/pixabay.com\/fr\/fichiers-papier-bureau-1614223\/","https:\/\/developers.google.com\/machine-learning\/crash-course\/training-and-test-sets\/splitting-data","https:\/\/fr.wikipedia.org\/wiki\/Pr%C3%A9cision_et_rappel","https:\/\/en.wikipedia.org\/wiki\/F1_score","https:\/\/fr.wikipedia.org\/wiki\/Moyenne_harmonique"],"format":"markdown","users":[],"community":"busy"}
created2019-01-03 14:31:48
last_update2019-01-03 14:31:48
depth0
children2
net_rshares4,070,747,264,920
last_payout2019-01-10 14:31:48
cashout_time1969-12-31 23:59:59
total_payout_value1.692 SBD
curator_payout_value0.510 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length6,240
author_reputation5,933,805,862,753
root_title"L’organisation de nos données dans l’apprentissage automatique"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (221)
@fr-stars ·
re-rerere-l-organisation-de-nos-donnees-dans-l-apprentissage-automatique-20190103t223052029z
Ce post a été supporté par notre initiative de curation francophone @fr-stars. 
Rendez-vous sur notre serveur [**Discord**](https://discord.gg/CcNs5uP) pour plus d'informations
properties (22)
post_id68,322,076
authorfr-stars
permlinkre-rerere-l-organisation-de-nos-donnees-dans-l-apprentissage-automatique-20190103t223052029z
categoryfr
json_metadata{"app":"trail-bot"}
created2019-01-03 22:30:51
last_update2019-01-03 22:30:51
depth1
children0
net_rshares0
last_payout2019-01-10 22:30:51
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length176
author_reputation933,254,300,796
root_title"L’organisation de nos données dans l’apprentissage automatique"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@steemstem ·
re-rerere-l-organisation-de-nos-donnees-dans-l-apprentissage-automatique-20190105t072159986z
<div class='text-justify'> <div class='pull-left'> <br /> <center> <img width='125' src='https://i.postimg.cc/9FwhnG3w/steemstem_curie.png'> </center>  <br/> </div> <br /> <br /> 

 This post has been voted on by the **SteemSTEM** curation team and voting trail in collaboration with **@curie**. <br /> 
 If you appreciate the work we are doing then consider [voting](https://www.steemit.com/~witnesses) both projects for witness by selecting [**stem.witness**](https://steemconnect.com/sign/account_witness_vote?approve=1&witness=stem.witness) and [**curie**](https://steemconnect.com/sign/account_witness_vote?approve=1&witness=curie)! <br /> 
For additional information please join us on the [**SteemSTEM discord**]( https://discord.gg/BPARaqn) and to get to know the rest of the community! </div>
properties (22)
post_id68,384,965
authorsteemstem
permlinkre-rerere-l-organisation-de-nos-donnees-dans-l-apprentissage-automatique-20190105t072159986z
categoryfr
json_metadata{"app":"bloguable-bot"}
created2019-01-05 07:22:03
last_update2019-01-05 07:22:03
depth1
children0
net_rshares0
last_payout2019-01-12 07:22:03
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length800
author_reputation229,673,617,633,863
root_title"L’organisation de nos données dans l’apprentissage automatique"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000