Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2234 connectés 

 


Utilisez-vous du machine learning dans votre job ?




Attention si vous cliquez sur "voir les résultats" vous ne pourrez plus voter

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  15  16  17  ..  133  134  135  136  137  138
Auteur Sujet :

[Topic Unique] Machine Learning & Data Science

n°30585
Profil sup​primé
Posté le 21-09-2017 à 15:26:40  answer
 

Reprise du message précédent :
Pourquoi ils remplacent R par Python ? Je trouve R vachement pratique personnellement

n°30586
o_BlastaaM​oof_o
Posté le 21-09-2017 à 15:33:28  profilanswer
 

Parce que c'est de la merde.

n°30587
Profil sup​primé
Posté le 21-09-2017 à 15:48:49  answer
 

Développe, ça m'intéresse :o

n°30588
Darmstadti​um
Pipoteur grotesque
Posté le 21-09-2017 à 16:10:23  profilanswer
 

Personnellement je suis pas fan de R passé l'étape d'exploration de données et prototypage.
 
Les inconvénients que je vois à R :

  • Le code est naturellement assez moche avec beaucoup de symboles utilisés de manière peu répandue dans la majorité des autres langages de prog (genre le $ pour accéder à des membres d'un objet)
  • Code peu lisible = maintenance difficile
  • Il y a beaucoup de packages disponibles mais c'est dur de savoir de quelle qualité ils sont, beaucoup n'ont pas été mis à jours/maintenus depuis longtemps et peuvent arrêter de marcher avec une mise à jour de R (ça m'est déjà arrivé)
  • Calcul distribué, tests et documentation moins faciles qu'en Python, ça pose problème pour l'utiliser en production


---------------
Vous pourriez comprendre ainsi pourquoi l'isotropie peut être détournée de son enclave de finalité dès le postulat de base choisie. surunitairedream - 09/06/2013 -- Contrepets
n°30589
Darmstadti​um
Pipoteur grotesque
Posté le 21-09-2017 à 16:11:17  profilanswer
 

Sinon je suis intéressé par la team Kaggle aussi mais je sais pas si j'aurai le temps de beaucoup m'investir.

 

Niveau : XP pro en data science et R&D en ML + je commence un doctorat en ML


Message édité par Darmstadtium le 21-09-2017 à 16:12:10

---------------
Vous pourriez comprendre ainsi pourquoi l'isotropie peut être détournée de son enclave de finalité dès le postulat de base choisie. surunitairedream - 09/06/2013 -- Contrepets
n°30590
bricksters
Posté le 21-09-2017 à 17:15:04  profilanswer
 

J'ai rien ecris mais je suis aussi intéressé par la team Kaggle :o

 

Niveau: XP pro en RL et surtout dev en C++ (python aussi mais beaucoup moins) dans l'industrie, plusieurs MOOC en ML.


Message édité par bricksters le 21-09-2017 à 18:48:20
n°30591
Profil sup​primé
Posté le 21-09-2017 à 17:30:55  answer
 

D'accord je comprends mieux, merci des réponses :jap:
 
Petite question : J'ai du mal à interpréter les résultats d'une K-fold cross validation  :o  
 
Pour le contexte, on est au tout début du machine Learning donc on fait des régressions linéaires etc. Et on devait implémenter une Cross validation pour vérifier notre modèle.  
 
J'ai donc mélangé mon jeu de donnée, séparé mon set en 5 parties égales et je boucle dessus... J'entraîne mon modèle sur les 4 sets que j'ai et je vérifie avec le set restant et je fais ça 5 fois. Bref, j'ai tracé l'erreur quadratique en fonction du set de validation utilisé et j'obtiens ça :
 
https://image.noelshack.com/fichiers/2017/38/4/1506007757-capture.png
 
On voit qu'on a un minimum quand lors du troisième tour de boucle mais j'ai un peu du mal à interpréter les résultats  :??:  
 
(C'est en R, je peux vous transmettre le code si vous en avez besoin)

n°30592
Rontgen
Posté le 21-09-2017 à 18:18:35  profilanswer
 

C'est juste le hasard, chacun des sets peut être particulièrement facile ou difficile
C'est pour ça qu'on fait tourner les sous ensembles et qu'on calcule la moyenne pour avoir un estimateur moins biaisé de la performance

n°30593
nesquik69
Posté le 21-09-2017 à 18:30:10  profilanswer
 

à confirmer par qqun d'autre:
 
_la courbe en bleue indique l'erreur quadrique moyenne que tu obtiens si tu appliques ton modèle (dont tu obtiens les paramètres grâce aux données d'entrainement) sur tes données d'entrainement. Dans ce cas la, tes données d'entrainement servent à la fois de données d'entrainement du modèle, et  de données de test pour estimer la précision du modèle.
 
_la courbe en rouge indique l'erreur quadrique moyenne que tu obtiens si tu appliques ton modèle (dont tu obtiens les paramètres grâce aux données d'entrainement) sur tes données de validation ("Validation Set" ). Dans ce cas la, tes données d'entrainement ("Training Set" ) servent de données d'entrainement du modèle, et  les données de "Validation Set" comme données de test.
 
 
bien sur, pour chaque abscisse, tes données de test et d'entrainement changent.
 
la variation sur les erreurs est du au fait que les sous ensembles ne sont pas homogènes...


Message édité par nesquik69 le 21-09-2017 à 18:32:16
n°30594
Profil sup​primé
Posté le 21-09-2017 à 18:40:37  answer
 

La moyenne des erreurs sur mes sets de validation est de 4.448765 tandis que celle sur mes sets de training est de 4.449156. J'en conclu donc que le modèle est viable vu que les 2 moyennes sont quasi identiques :??:
 
Autre question, en me relisant j'ai eu un doute.  
 
N = 200 c'est la longueur de mon training set noté X (200 lignes et 4 colonnes : x1,x2 etc.)
K = 5 c'est le nombre de sous data set que je fais pour la K-cross validation
 
Dans mon code je fais en gros :
 
 
     Pour i allant de 1 à K:
 
                Je génère N/K (=40) index aléatoirement, je prends les 40 lignes correspondantes à ces index -> C'est mon set de validation
                J'entraîne mon modèle sur les 200-40=160 lignes restantes
                Puis je calcule les erreurs quadra et je retourne la moyenne blabla
 
 
Mais je devrais pas plutôt faire :
 
                 Je génère N index aléatoirement que je stock dans un vecteur index de taille 200 du coup
                 Je découpe ce vecteur en N/K morceaux égaux (du coup en 5 sous vecteurs sous_index1,sous_index2 etc.)
 
                 Pour i allant de 1 à K:
                         
                               Prendre le vecteur d'indice correspondant, sous_index i et en faire mon set de validation et utiliser les autre en tant que training set :??:
 
Je sais pas si c'est clair :??:
 
 
TL;DR :  
 
Je dois prédécouper mon set de données en parts égales (disons 5) comme ceci [VALIDATION | Training | Training | Training | Training ] et à chaque tour de boucle changer de set de validation (tour 1 = celui en position 1, tour 2 = celui en position 2 etc.)
 
Ou bien à chaque tour de boucle je génère aléatoirement un sous ensemble de 40 lignes * 4 colonnes dont je me sers comme set de validation en utilisant le reste comme training set :??:
 
Si ça se trouve c'est pareil mais je doute la :??:


Message édité par Profil supprimé le 21-09-2017 à 18:45:56
n°30595
Bébé Yoda
Posté le 21-09-2017 à 18:49:07  profilanswer
 

Le plus simple c'est de faire
from sklearn.preprocessing import train_test_split
 
:o
 
Blague à part ça revient au même ce que tu fais non ?
 
Heu en fait, non c'est bien la dernière option que tu dois faire.
Si tu as 100 points et k=5, tu vas générer 5 échantillons de 20 points : E1, E2, E3, E4, E5.
Ensuite :  
* E1, E2, E3, E4 = Train et E5 = Validation  
* E1, E2, E3, E5 = Train et E4 = Validation
etc.
 
 


Message édité par Bébé Yoda le 21-09-2017 à 19:03:19
n°30596
Profil sup​primé
Posté le 21-09-2017 à 19:29:36  answer
 

Ok thank's !
 

n°30597
Bébé Yoda
Posté le 21-09-2017 à 19:34:16  profilanswer
 

EN fait si tu boucles de manière aléatoire à chaque fois, tu ne pourras jamais avoir fait le training sur l'ensemble de tes données.

n°30598
Profil sup​primé
Posté le 21-09-2017 à 19:40:39  answer
 

Ouaip d'où mon doute. Mon prof avait commencé à implémenter ça comme ça...

n°30599
TiDom
Posté le 21-09-2017 à 20:09:59  profilanswer
 

Comme disait Rontgen, la K-folds cross validation permet d'obtenir une estimation de la performance future d'un classifieur/regresseur.
 
J'en profite pour vous mettre un lien vers un livre gratuit (et de très bonne qualité). Pour confirmer tes connaissances et aller plus loin sur l'évaluation de performance c'est chapitre 22 (y a même des slides comme dans les cours):
http://www.dataminingbook.info/pmw [...] kResources

n°30600
Rontgen
Posté le 21-09-2017 à 20:44:02  profilanswer
 

Alors en fait, vous avez pas tort, mais c'est quand même un peu plus complexe que ca
 
Déjà il faut quand même rappeler que quand on prend un sous échantillon, il faut être conscient de comment les données sont ordonnées.  
Par exemple si on prend les N premiers, puis les N suivants, etc, on peut avoir un gros biais si l'ordre n'était pas arbitraire (par exemple si les données sont classées chronologiquement et le temps a une influence),
Ou alors si certains types de données sont beaucoup plus représentées que d'autres
 
Mais en ce qui concerne la question sur les ensembles d'apprentissage et de test, la reponse n'est pas si évidente (genre faut faire la strategie 2 et puis c'est tout)
En fait, la stratégie 1 a du sens aussi, elle permet de générer également des estimateurs de la performance du modèle. Alors effectivement, la stratégie 2 permet de s'assurer qu'on a testé au moins une fois chaque donnée, mais pour un ratio 80/20, elle ne donnera que 5 estimations. De l'autre coté, la stratégie 1 peut etre moins précise si on ne l'exécute que 5 fois, mais on peut la répéter beaucoup plus de fois, et donc du coup avoir beaucoup plus d'observations de la performance du système car elle permet de générer des combinations plus variées !


Message édité par Rontgen le 21-09-2017 à 20:44:44
n°30601
Profil sup​primé
Posté le 21-09-2017 à 21:10:23  answer
 

Rontgen a écrit :

Alors en fait, vous avez pas tort, mais c'est quand même un peu plus complexe que ca
 
Déjà il faut quand même rappeler que quand on prend un sous échantillon, il faut être conscient de comment les données sont ordonnées.  
Par exemple si on prend les N premiers, puis les N suivants, etc, on peut avoir un gros biais si l'ordre n'était pas arbitraire (par exemple si les données sont classées chronologiquement et le temps a une influence),
Ou alors si certains types de données sont beaucoup plus représentées que d'autres
 
Mais en ce qui concerne la question sur les ensembles d'apprentissage et de test, la reponse n'est pas si évidente (genre faut faire la strategie 2 et puis c'est tout)
En fait, la stratégie 1 a du sens aussi, elle permet de générer également des estimateurs de la performance du modèle. Alors effectivement, la stratégie 2 permet de s'assurer qu'on a testé au moins une fois chaque donnée, mais pour un ratio 80/20, elle ne donnera que 5 estimations. De l'autre coté, la stratégie 1 peut etre moins précise si on ne l'exécute que 5 fois, mais on peut la répéter beaucoup plus de fois, et donc du coup avoir beaucoup plus d'observations de la performance du système car elle permet de générer des combinations plus variées !


 
 
Donc la méthode "aléatoire" est correcte ? Ouf ça m'évite de tout recoder  :jap:  
 
Avant d'entrer dans la boucle, je mélange mes données pour éviter justement ces biais...
 
Merci de vos réponses ! J'irais jeter un coup d'oeil au livre proposé  :jap:

n°30602
Bébé Yoda
Posté le 21-09-2017 à 21:24:00  profilanswer
 

T'façon, tout ça, avec le deep learning et les auto machine-learning (genre MLBox) dans 2/3 ans on pratiquera plus :o
 
C'est Andrew Ng qui l'a dit : Old ML vs New ML #flamewar
 
 
Merci pour les précisions en tout cas.
D'ailleurs ça me fait réaliser que j'ai pas assez pratiqué l'évaluation des modèles depuis un moment, surtout à la lecture du livre mentionné plus haut.
Vu que je suis pas vraiment du domaine, c'est pas évident je rouille vite :/
 
Si jamais vous embauchez des débutants dans vos boîtes, pensez à moi ;)

n°30603
Rasthor
Posté le 21-09-2017 à 21:31:41  profilanswer
 


R, c'est une boite a outil pour faire des stats.
Python, c'est un vrai langage de programmation, capable de coder des scripts légers, des notebook dans Jupyter ou des trucs hyper lourds.

n°30604
o_BlastaaM​oof_o
Posté le 22-09-2017 à 10:16:50  profilanswer
 


Non, l'aléatoire n'est pas correct. La bonne façon consiste à splitter, certes de manière aléatoire, mais en tâchant de préserver autant que possible certaines distributions dans le jeu de données complet. En priorité la distribution des classes à prédire mais également la distribution des variables du jeu de données.

 

Extrait de la doc MATLAB à ce sujet :

 

c = cvpartition(group,'KFold',k) creates a random partition for a stratified k-fold cross validation. group is a numeric vector, categorical array, character array, or cell array of character vectors indicating the class of each observation. Each subsample has roughly equal size and roughly the same class proportions as in group. cvpartition treats NaNs or empty character vectors in group as missing values.


Message édité par o_BlastaaMoof_o le 22-09-2017 à 10:18:25
n°30605
Profil sup​primé
Posté le 22-09-2017 à 10:50:47  answer
 

Ok merci, je vais recoder ça alors :o
 
 
 

n°30606
Rontgen
Posté le 22-09-2017 à 10:52:23  profilanswer
 

Comme dit BlastaMoof, la majorité des méthodes statistiques font l'hypothèse que la distribution des données d'apprentissage et de test sont identiques.
Ca veut pas dire qu'elles vont s'effondrer et faire n'importe quoi si la distribution est différente, ca veut dire que c'est leur régime optimal.
 
Je me rends compte que mon message était un peu ambigu, mais ca me paraissait important de rentrer un peu dans les détails (et pas juste de dire "il y a une seule vraie facon, et les autres sont fausses" ), et que chaque facon d'implémenter une CV vient avec son lot d'hypothèses.
 
Selon les datasets (plus particulièrement leur taille et l'uniformité de leur distribution), les différentes stratégies peuvent être plus ou moins équivalentes.
Celle que décrit BlastaMoof ne correspond ni à ta proposition 1, ni à ta proposition 2 et est probablement la meilleure des trois car elles suppose moins d'hypothèses, mais est un peu plus galère à implémenter.

n°30607
o_BlastaaM​oof_o
Posté le 22-09-2017 à 12:51:12  profilanswer
 

Pourquoi implémenter ça soi-même au fait ?

n°30608
Bébé Yoda
Posté le 22-09-2017 à 12:56:48  profilanswer
 

Pour mieux comprendre comment ça marche je suppose.

n°30609
Profil sup​primé
Posté le 22-09-2017 à 12:58:59  answer
 

Car je suis étudiant, j'aimerais comprendre les outils dont je me sers. En stage ou en taf j'utiliserai bien sur les fonctions déjà existantes

n°30610
Rontgen
Posté le 22-09-2017 à 12:59:18  profilanswer
 

Pour comprendre vraiment ce qu'il se passe ?
Il a precise qu'il etait au tout debut d'un cours de ML, ca ne me parait pas bete de reimplementer ce genre de choses
 
 Edit [:rttolivers]


Message édité par Rontgen le 22-09-2017 à 12:59:44
n°30611
TiDom
Posté le 22-09-2017 à 13:08:13  profilanswer
 

Ce que propose BlastaaMoof, la validation croisée "stratifiée", est adaptée aux problèmes de classification supervisée : en gros, dans chaque fold, on essaie de garder la même distribution de classes que dans la base d'apprentissage. Selon, les expériences et la conclusion de R. Kohavi :
http://web.cs.iastate.edu/~jtian/c [...] CAI-95.pdf
ça offre un meilleur compromis biais/variance que la validation croisée "standard". A privilégier donc. D'ailleurs la lecture des notions biais/variance dans le bouquin indiqué plus haut est très intéressante pour bien comprendre les enjeux du machine learning.

 

Par contre le problème de non-compliant est un problème de régression. La validation croisée stratifiée ne peut être utilisée comme telle. Je n'arrive pas à retrouver une réf sur le sujet mais l'idée est de construire des folds avec la même moyenne de la variable à prédire.
Y a bien la page wikipedia : https://en.wikipedia.org/wiki/Cross [...] tatistics)
mais j'essaierai de trouver mieux


Message édité par TiDom le 22-09-2017 à 13:08:58
n°30612
Profil sup​primé
Posté le 22-09-2017 à 13:13:34  answer
 

D'ailleurs quelqu'un a une méthode simple en R pour diviser un set de données en sous-set réguliers ?  
 
X = 200 lignes * 4 colonnes
 
J'aimerais avoir  
X1 = 40 lignes * 4 col
.
.
.
X5 = 40 l * 4 col
 
:D
 
Edit : Merci TiDom, je regarde ça dès que je peux  :jap:


Message édité par Profil supprimé le 22-09-2017 à 13:14:07
n°30613
TiDom
Posté le 22-09-2017 à 13:25:44  profilanswer
 

@non-compliant :
La division euclidienne de X (200) par k (5) te donne le pas pour la sélection des index de tes folds.
Sinon en R sur https://cran.r-project.org/
tu as cvtools ou generalizedCV qui font le job (tu as le code source, donc tu peux l'adapter à ta guise)


Message édité par TiDom le 22-09-2017 à 13:26:26
n°30614
Profil sup​primé
Posté le 22-09-2017 à 13:28:09  answer
 

TiDom a écrit :

@non-compliant :
La division euclidienne de X (200) par k (5) te donne le pas pour la sélection des index de tes folds.
Sinon en R sur https://cran.r-project.org/
tu as cvtools ou generalizedCV qui font le job (tu as le code source, donc tu peux l'adapter à ta guise)


 
Merci je vais regarder ça !   :jap:

n°30615
Profil sup​primé
Posté le 22-09-2017 à 15:16:03  answer
 

createFolds() du package caret fait exactement ce que je voulais faire  :D

n°30616
blacksad
Posté le 23-09-2017 à 08:38:35  profilanswer
 

deeplearning a écrit :

Python.
 
Python => Porté par les jeunes et toute l'industrie
R => Usage historique dans milieu académique, en perte de vitesse
 
Sas coûte très cher et certaines boites décident d'en sortir  
 
Aujourd'hui les gens veulent faire du Python et les entreprises s'adaptent.

Pour nuancer un peu le propos :
R croît certes moins vite que Python, mais je ne suis pas sur qu'on puisse parler de perte de vitesse.
Cela dit, pour quelqu'un qui ne connaitrait ni l'un ni l'autre et qui se demanderait lequel des deux il vaut mieux apprendre, je conseillerais quand même Python, pour les raisons évoquées plus haut.
http://reho.st/https://ressources.blogdumoderateur.com/2017/09/python-3-612x536.png
http://reho.st/self/3d9b0e2b9fcf1bb23c9fcfa19fed9ae78644ba7d.jpg
 
/remets une pièce dans la querelle de clochers :o
Demain, nous parlerons de Linux vs. Windows, ou Apple vs. Samsung, ou vim vs. emacs, ou ...

n°30617
o_BlastaaM​oof_o
Posté le 23-09-2017 à 10:00:14  profilanswer
 

Du PySpark... Y a-t-il au moins une réelle problématique Big Data ? Parce que sinon, on a aussi vite fait de faire du bon vieux SQL avec un bon vieux SGBD relationnel.
 
Sur le sujet Big Data d'ailleurs, je vous invite à lire l'article suivant qui est à mon avis représentatif de la situation dans bien des entreprises :
 
https://www.linkedin.com/pulse/hado [...] ul-johnson
 
Dans ma boîte, on dégage progressivement R. Partiellement sous mon impulsion :o

n°30618
TiDom
Posté le 23-09-2017 à 11:31:50  profilanswer
 

o_BlastaaMoof_o a écrit :

Du PySpark... Y a-t-il au moins une réelle problématique Big Data ? Parce que sinon, on a aussi vite fait de faire du bon vieux SQL avec un bon vieux SGBD relationnel.
 
Sur le sujet Big Data d'ailleurs, je vous invite à lire l'article suivant qui est à mon avis représentatif de la situation dans bien des entreprises :
 
https://www.linkedin.com/pulse/hado [...] ul-johnson
 
Dans ma boîte, on dégage progressivement R. Partiellement sous mon impulsion :o


 
Le deuxième point des following snippets au début de l'article est probablement la principale raison du fail : "trying to figure out how to use it for value"
Si on espère de nouvelles connaissances ou de la valeur par magie juste parce qu'on a plein de donnés et hadoop branché dessus ... C'est le fail assuré :o
 
De ma petite expérience, les expériences big data + hadoop qui ont eu du succès sont celles où le probleme de départ était bien posé (ça a l'air évident dit comme ça, mais pas pour tout le monde lors de la phase "hype" du big data)... Le reste c'est du vent AMHA

n°30619
Rasthor
Posté le 23-09-2017 à 20:32:09  profilanswer
 

A Guide For Time Series Prediction Using Recurrent Neural Networks (LSTMs)
https://blog.statsbot.co/time-serie [...] 807fa6ca7f
 
Pas encore lu en detail, mais ca a l'air interessant. :)

n°30620
zairo
Posté le 01-10-2017 à 12:14:32  profilanswer
 

je voudrais attaquer un premier vrai projet de datascience avec des potes
Mais j'aimerais savoir de quel manière je devrai stocker mes données ?

 

En gros on a prévu d'utiliser python, pour s'initier au langage, mais je me demandais quel était la meilleur manière de stocker/structurer mes données ?

 


Au début j'avais pas trop envie de me prendre la tête est de simplement faire un fichier texte, mais étant donnée qu'il y a beaucoup de variable je pense qu'une base de donnée type sql serait idéal mais je ne sais pas vraiment si y a de meilleur solution en python  (un peu comme sqllite sur android)

 

bref je connais pas python :o


Message édité par zairo le 01-10-2017 à 12:18:24
n°30621
Bébé Yoda
Posté le 01-10-2017 à 12:19:59  profilanswer
 

Ça dépend vraiment de la taille de tes données et des capacités de vos ordinateurs niveau RAM.
Jusqu'à plusieurs centaines de Mo tu peux faire des fichiers textes (csv, tsv) sans soucis
Et tu utilises pandas.

 

Dis nous en un peu plus

n°30622
zairo
Posté le 01-10-2017 à 19:23:14  profilanswer
 

A la louche je dirais que j'aurais 500 mo de données (j'ai pas finis l'extraction)
Je peux me contenter de fichier csv tu penses ?

n°30623
zairo
Posté le 01-10-2017 à 19:27:34  profilanswer
 

ok pour pandas, je vais voir de ce côté là :o
merci  :jap:

n°30624
Bébé Yoda
Posté le 01-10-2017 à 19:38:17  profilanswer
 

zairo a écrit :

A la louche je dirais que j'aurais 500 mo de données (j'ai pas finis l'extraction)
Je peux me contenter de fichier csv tu penses ?

 

À mon avis ça doit pouvoir se faire tranquillement oui.
Le mieux c'est d'essayer de toute manière ;)
Autant essayer d'abord avec l'outil le plus simple avant de se compliquer la vie.

n°30625
Rasthor
Posté le 02-10-2017 à 00:47:18  profilanswer
 

Y'avait d'ailleurs un article pour comment gerer des centaines de Mo dans Pandas:
https://www.dataquest.io/blog/pandas-big-data/


Message édité par Rasthor le 02-10-2017 à 00:47:25
 Page :   1  2  3  4  5  ..  15  16  17  ..  133  134  135  136  137  138

Aller à :
Ajouter une réponse
 

Sujets relatifs
[Topic unique] Veille IA - Actu, lectures, podcasts & documentaires[Topic Unique] Claude by Anthropic
[Topic unique] IA générative de texte, ChatGPT, Copilot, Gemini & co 
Plus de sujets relatifs à : [Topic Unique] Machine Learning & Data Science


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)