Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
906 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  ..  21  22  23  ..  128  129  130  131  132  133
Auteur Sujet :

[Topic Unique] Machine Learning & Data Science

n°5021306
Tidom
Posté le 28-11-2017 à 04:50:46  profilanswer
 

Reprise du message précédent :

SSgomad a écrit :

 

C'est pour une compétition en fait, l'objectif est de prédire l'âge d'un patient sachant son EEG quand il est endormi et d'autres données comme le cycle de son sommeil. Merci pour vos réponses, je préfère utiliser un réseau de neurones en dernier recours

 

Quelque chose qui marche bien pour la classification de séries temporelles (pour la régression aussi), c'est les transformations de tes séries brutes de départ.
Ces transformations souvent "simples" et peu coûteuses en temps de calcul (Fourier transform, Power Spectrum, Autocorrelation, shapelet, dérivée locale, ...) enrichissent la description de tes données et te permettent bien souvent d'améliorer les performances prédictives du modèle que tu utilises.

 

A l'University of East-Anglia, : http://timeseriesclassification.com/ , ils ont développé quelques approches (open-source) dans ce sens.
Au moins deux articles qui en parlent :

 

Anthony Bagnall, Luke M. Davis, Jon Hills, Jason Lines:
Transformation Based Ensembles for Time Series Classification. SDM 2012: 307-318
(1-NN avec Distance euclidienne et plusieurs transformations)

 

Anthony Bagnall, Jason Lines, Aaron Bostrom, James Large, Eamonn J. Keogh:
The great time series classification bake off: a review and experimental evaluation of recent algorithmic advances. Data Min. Knowl. Discov. 31(3): 606-660 (2017)
(Un gros benchmark sur la classification de séries temporelles)

 

Sur ce même site, tu trouveras également un répertoire de +80  bases de données de séries temporelles : http://timeseriesclassification.com/dataset.php
il y a notamment des EEG et des ECG

 

Les algos utilisés dans les comparaisons de performance : http://timeseriesclassification.com/algorithm.php
Les codes source si tu veux les utiliser : http://timeseriesclassification.com/code.php

 

Et pour faire plaisir à Rontgen : le dernier sorti (2016) à base de CNN :o (oui ils ont du se mettre à la mode aussi ...)
http://timeseriesclassification.co [...] =HIVE-COTE

 

Mais si tu n'es pas spécialiste du domaine, tu peux commencer par les transformations de séries, c'est plus facile à comprendre :)

 


Message édité par Tidom le 28-11-2017 à 04:52:31
mood
Publicité
Posté le 28-11-2017 à 04:50:46  profilanswer
 

n°5021319
Tidom
Posté le 28-11-2017 à 09:34:07  profilanswer
 

Je crois avoir vu passer le lien vers le blog Data Analytics Post sur ce topic : https://dataanalyticspost.com/
Y a un dossier intéressant sur les différentes facettes du métier "data scientist". Plus précisément, des fiches métiers détaillées : https://dataanalyticspost.com/repository/  
Le lien direct vers le pdf : https://dataanalyticspost.com/wp-co [...] n_2017.pdf
 
C'est bien fait je trouve :)

n°5021356
Bébé Yoda
Posté le 28-11-2017 à 17:11:15  profilanswer
 

Hello, il y a des gens qui savent utiliser tensorflow par ici ? Je deviens un peu fou avec un modèle :)

n°5021368
Tidom
Posté le 28-11-2017 à 19:42:31  profilanswer
 

Bébé Yoda a écrit :

Hello, il y a des gens qui savent utiliser tensorflow par ici ? Je deviens un peu fou avec un modèle :)


 
Faut que je m'y mette :o
C'est facile d'utilisation (je veux dire juste le brancher pour faire de la prédiction) ?
J'aime bien comprendre ce que ça fait avant de l'utiliser et là je suis pret :o

n°5021370
Bébé Yoda
Posté le 28-11-2017 à 19:54:04  profilanswer
 

En fait tu as les API haut et bas niveau selon ce que tu veux faire.
Du coup, pour débuter, avec les exemples sur les API haut niveau c'est assez facile à prendre en main (pas besoin de construire de graphe ni rien).
 
Là j'ai une classification, ça se présente comme ça
 

Code :
  1. classifier = tf.estimator.DNNClassifier(feature_columns=feature_columns,
  2.                                         hidden_units=hu,
  3.                                         n_classes=2,   
  4.                                         optimizer=tf.train.ProximalAdagradOptimizer(
  5.                                                 learning_rate=1e-6,
  6.                                                 l1_regularization_strength=1e-2),
  7.                                         model_dir=model_dir)


 
Et après tu as juste à faire un train, puis predict et zou :)

n°5021371
Rontgen
Posté le 28-11-2017 à 19:55:26  profilanswer
 

Bébé Yoda a écrit :

Hello, il y a des gens qui savent utiliser tensorflow par ici ? Je deviens un peu fou avec un modèle :)


Je suis en train de migrer de Caffe vers TensorFlow
Je m'y connais pas encore très bien niveau syntaxe car j'utilise principalement Keras, mais tu peux toujours poser ta question :o
 

Tidom a écrit :


Faut que je m'y mette :o
C'est facile d'utilisation (je veux dire juste le brancher pour faire de la prédiction) ?
J'aime bien comprendre ce que ça fait avant de l'utiliser et là je suis pret :o


Pour faire de la prédiction c'est enfantin
Pour entrainer un réseau c'est plus complexe mais y'a des librairies comme Keras justement qui rendent le truc beaucoup plus facile, et y'a beaucoup d'exemples sur internet :jap:

n°5021372
Rontgen
Posté le 28-11-2017 à 19:57:45  profilanswer
 

Bébé Yoda a écrit :


Code :
  1. classifier = tf.estimator.DNNClassifier(feature_columns=feature_columns,
  2.                                         hidden_units=hu,
  3.                                         n_classes=2,   
  4.                                         optimizer=tf.train.ProximalAdagradOptimizer(
  5.                                                 learning_rate=1e-6,
  6.                                                 l1_regularization_strength=1e-2),
  7.                                         model_dir=model_dir)




 
Ton learning rate il est vraiment super bas, j'ai jamais eu besoin d'utiliser une valeur comme ca [:transparency]
Et en plus tu régularises.. t'es sur que t'apprends vraiment qqchose ? :o

n°5021379
Bébé Yoda
Posté le 28-11-2017 à 20:24:05  profilanswer
 

Rontgen a écrit :


 
Ton learning rate il est vraiment super bas, j'ai jamais eu besoin d'utiliser une valeur comme ca [:transparency]
Et en plus tu régularises.. t'es sur que t'apprends vraiment qqchose ? :o


 
Heu oui là il est bas, pour tester un truc, mais par défaut la valeur est de 1e-5 il me semble c'est déjà bas.
Pour la régularisation, j'avoue que je tâtonne complet, je voulais voir si ça pouvait jouer sur mes prédictions, je teste plein de valeurs mais ça part dans tous les sens.. je pige pas bien ce qu'il se passe :/
 
Edit : je me demande si je devrais pas me mettre à Keras pour me simplifier la vie d'ailleurs


Message édité par Bébé Yoda le 28-11-2017 à 20:24:25
n°5021381
Bébé Yoda
Posté le 28-11-2017 à 20:34:11  profilanswer
 

Bon voilà mon code, j'espère que c'est lisible :)
 

Code :
  1. def model(hu, model_dir, features):
  2.     # Specify the shape of the features columns
  3.     feature_columns = [tf.feature_column.numeric_column("x", shape=[len(features),1])]
  4.     # Build n layer DNN with [hu] units
  5.     classifier = tf.estimator.DNNClassifier(feature_columns=feature_columns,
  6.                                         hidden_units=hu,
  7.                                         n_classes=2,   
  8.                                         model_dir=model_dir)
  9.  
  10.    
  11. # Define the training inputs
  12.     train_input_fn = tf.estimator.inputs.numpy_input_fn(
  13.         x={"x": np.array(X_train)},
  14.         y=np.array(y_train.values.reshape((len(y_train),1))),
  15.         num_epochs=1,
  16.         shuffle=True)
  17.     return classifier, train_input_fn
  18. # Define the test inputs
  19. def testinput(X_test, y_test):
  20.     test_input_fn = tf.estimator.inputs.numpy_input_fn(
  21.             x={"x": np.array(X_test)},
  22.             y=np.array(y_test),
  23.             num_epochs=1,
  24.             shuffle=False)
  25.     return test_input_fn
  26. # 3-layers
  27. classifier, train_input_fn = model([512,1024,512], "./tmp/DNN70", features)
  28. #Let's train
  29. classifier.train(input_fn=train_input_fn, steps=100000)
  30.  
  31. test_input_fn = testinput(X_test,y_test)     
  32. pred_tf_test_data_temp = classifier.predict(input_fn=test_input_fn)
  33. # Evaluate accuracy.
  34. accuracy_score = classifier.evaluate(input_fn=test_input_fn)["accuracy"]
  35. print("\nTest Accuracy: {0:f}\n".format(accuracy_score))
  36. test_input_fn = tf.estimator.inputs.numpy_input_fn(
  37.         x={"x": np.array(data_valid2[features])},
  38.         y=None,
  39.         num_epochs=1,
  40.         shuffle=False)
  41. pred = classifier.predict(input_fn=test_input_fn)
  42. predictions = list(pred)
  43. pred_tf_validation = list()
  44. pred_tf_validation_proba = list()
  45. for i,p in enumerate(predictions):
  46.     pred_tf_validation.append(p['class_ids'][0])
  47.     pred_tf_validation_proba.append(p['probabilities'][1])
  48. pred_tf = np.array(pred_tf)
  49. #print(pred_tf.sum())
  50. #pred_tf = pred_tf.astype(int)
  51. pred_tf_test_data_temp = list(pred_tf_test_data_temp)
  52. pred_tf_test_data_proba = list()
  53. pred_tf_test_data = list()
  54. for i,p in enumerate(pred_tf_test_data_temp):
  55.     pred_tf_test_data_proba.append(p['probabilities'][1])
  56.     pred_tf_test_data.append(p['class_ids'][0])
  57.  
  58. fpr, tpr, _ = roc_curve(y_test, pred_tf_test_data_proba,pos_label=1)


 
Résultat magnifique :o
There are 100.00% of positive predictions on the test set
roc_auc score: 0.5


Message édité par Bébé Yoda le 28-11-2017 à 20:49:45
n°5021393
Pina Colad​a
Posté le 28-11-2017 à 20:54:12  profilanswer
 

Rontgen a écrit :


Je suis en train de migrer de Caffe vers TensorFlow


 
Good luck :o
 
Pourquoi ? Il me semble que caffe2 a été repris par facebook et que ça marche plutot bien non ?
 
J'ai utilisé caffe au début puis on est passé direct à tensorflow quand c'est sorti, c'était un peu un enfer au début.
Je suis toujours pas très fan d'ailleurs et de temsp en temps je songe à switcher vers PyTorch.

mood
Publicité
Posté le 28-11-2017 à 20:54:12  profilanswer
 

n°5021653
cequelsar
Posté le 01-12-2017 à 00:10:06  profilanswer
 

Le contenu de ce message a été effacé par son auteur

n°5021664
rogermajax
Posté le 01-12-2017 à 01:35:12  profilanswer
 

scale tes variables de manière différente, ça fera pareil qu'un lambda par variable. Je te laisse ecrire la fonction d'erreur régularisé pour t'en rendre compte.

 

Édit: en relisant ton message, tu veux pondérer les exemples différemment en fait, non? Ma réponse du dessus est si tu voulais avoir un lambda par variable.

 

Pour la régression pondéré, si elle n'est pas implémenté déjà dans ta framework tu peux l'emuler en multipliant par wi les xi et les yi si tu n'as pas d'intercept. Si tu veux un intercept a ton modele c'est plus compliqué, il faudra aussi le multiplier (il faut pouvoir le manipuler, c'est pas forcément possible si tu n'as acces qu'à des fonctions haut niveau).


Message édité par rogermajax le 01-12-2017 à 02:02:42
n°5021677
Rontgen
Posté le 01-12-2017 à 08:49:17  profilanswer
 

+1 à rogermajax
Je suis pas sur de comprendre la question non plus [:transparency]

 

Si vraiment l'idée c'est de faire en sorte que certains samples contribuent moins à la régularisation que d'autres, peut être que ça peut être simulé en les dupliquant (ils auront alors plus d'importance dans la partie "attache aux données" )


Message édité par Rontgen le 01-12-2017 à 08:50:58
n°5021836
Bébé Yoda
Posté le 01-12-2017 à 19:30:23  profilanswer
 

Hello :)
J'ai que des notions vraiment limitées en PCA, et j'ai décidé de m'y mettre un peu. J'ai lu des trucs à droite à gauche et je regarde quelques tutos.
Mais j'avoue que c'est pas très clair pour moi. Par exemple, j'ai regardé ce tuto chez scikit-learn:
http://scikit-learn.org/stable/aut [...] _pipe.html
 
Et je ne comprends pas bien ce qu'il fait.
En gros, j'ai compris qu'ils commencent par une PCA pour réduire les dimensions et qu'ils enchaînent avec une régression logistique pour la classification.
 
En fait je comprends pas bien ce que représente le graphe "explained variance" vs "n_components" ... Dans la doc je lis The amount of variance explained by each of the selected components. mais c'est pas plus clair pour moi :/
 
Ensuite au niveau de la prédiction, on choisit 3 valeurs pour n_components mais je pensais que justement le but de la PCA c'était de définir le nombre optimal de composants ?
Quand on fit le pipeline à la fin (estimator.fit(X,y)) que passe-t-il à la régression logistique depuis la PCA ? Je pensais que la PCA faisait en gros une sélection de features et que le logit derrière testait ces différentes sélections de features, mais ça n'a pas l'air d'être ça ..
 
Bref, c'est pas clair du tout :(
 

Code :
  1. print(__doc__)
  2. # Code source: Gaël Varoquaux
  3. # Modified for documentation by Jaques Grobler
  4. # License: BSD 3 clause
  5. import numpy as np
  6. import matplotlib.pyplot as plt
  7. from sklearn import linear_model, decomposition, datasets
  8. from sklearn.pipeline import Pipeline
  9. from sklearn.model_selection import GridSearchCV
  10. logistic = linear_model.LogisticRegression()
  11. pca = decomposition.PCA()
  12. pipe = Pipeline(steps=[('pca', pca), ('logistic', logistic)])
  13. digits = datasets.load_digits()
  14. X_digits = digits.data
  15. y_digits = digits.target
  16. # Plot the PCA spectrum
  17. pca.fit(X_digits)
  18. plt.figure(1, figsize=(4, 3))
  19. plt.clf()
  20. plt.axes([.2, .2, .7, .7])
  21. plt.plot(pca.explained_variance_, linewidth=2)
  22. plt.axis('tight')
  23. plt.xlabel('n_components')
  24. plt.ylabel('explained_variance_')
  25. # Prediction
  26. n_components = [20, 40, 64]
  27. Cs = np.logspace(-4, 4, 3)
  28. # Parameters of pipelines can be set using ‘__’ separated parameter names:
  29. estimator = GridSearchCV(pipe,
  30.                          dict(pca__n_components=n_components,
  31.                               logistic__C=Cs))
  32. estimator.fit(X_digits, y_digits)
  33. plt.axvline(estimator.best_estimator_.named_steps['pca'].n_components,
  34.             linestyle=':', label='n_components chosen')
  35. plt.legend(prop=dict(size=12))
  36. plt.show()

n°5021842
Profil sup​primé
Posté le 01-12-2017 à 20:09:54  answer
 

Le PCA va projeter tes donnes sur x dimensions, x dimensions étant les dimensions contenant le plus de variabilité su ton set de données.

 

Ça permet de réduire ton nombre de variables sans trop perdre d'information

n°5021851
-Meringue-
Posté le 01-12-2017 à 21:28:40  profilanswer
 

Ça peut te permettre également de passer de variables catégorielles à des variables numériques. Ce qui est parfois bien utile.

n°5021854
rogermajax
Posté le 01-12-2017 à 21:45:13  profilanswer
 

Ces x dimensions étant des combinaisons linéaires des variables d'entrées.

 

Faudrait que je révise mais de mémoire, tu diagonalises la matrice de covariance et la matrice de changement de base va être ta matrice te donnant les composantes principales. Comme elle diagonalise la covariance, tes composantes vont être decorellé et la variance de chaque composante correspond à la valeur propre de ta diagonalisation. Tu peux ordonner ses valeurs, et garder les composantes de plus grandes variance.

 

Je me souviens qu'il y a une autre interprétation plus éclairante, où l'ACP est la solution d'un pb de minimisation d'écart quadratique entre (données d'origine) et (données changé de base, "gardage de n composantes" puis "déchangement de base" ). Faudra que je remette la main dessus.

 

Le nombre de composantes que tu gardes, c'est à toi de voir. L'ACP te donne les transformations optimales pour chaque n que tu pourrais choisir et te donne la perte d'info associée.


Message édité par rogermajax le 01-12-2017 à 22:01:27
n°5021855
rogermajax
Posté le 01-12-2017 à 21:48:00  profilanswer
 

-Meringue- a écrit :

Ça peut te permettre également de passer de variables catégorielles à des variables numériques. Ce qui est parfois bien utile.


Ça m'intéresse ça, t'as une référence ?

n°5021861
Bébé Yoda
Posté le 01-12-2017 à 22:21:57  profilanswer
 

Donc au niveau "feature selection", c'est très différent d'un lasso qui sélectionne les features "seules" et permet donc une interprétation directe de la sélection.
Là vu qu'il opère des combinaisons, on ne sait pas réellement à quoi ça correspond.
C'est ça ?

n°5021862
rogermajax
Posté le 01-12-2017 à 22:28:21  profilanswer
 

Oui c'est très différent d'un LASSO.

 

En ACP, seuls les x sont traités ainsi les composantes que tu gardes sont pas forcément utiles pour prédire y. Dans les autres défauts, l'ACP est sensible au scaling des x (comme LASSO d'ailleurs).

 

On ne sait pas quelles variables participent aux combinaisons (a priori, toutes participent). Après ça a quand même du sens, cf le pb de minimisation dont je parle. De plus, l'ACP c'est pas propre au ML, ça peut permettre de débruiter des signaux.

 

LASSO, c'est une régression linéaire régularisé dont la résolution amene à mettre certains coeffs à zero. Les variables dont le coef est nul ne seront pas utilisées.


Message édité par rogermajax le 01-12-2017 à 23:31:27
n°5021885
-Meringue-
Posté le 02-12-2017 à 08:52:28  profilanswer
 

rogermajax a écrit :


Ça m'intéresse ça, t'as une référence ?


 
My bad, c’est l’ACM ça  ;)

n°5021886
Profil sup​primé
Posté le 02-12-2017 à 09:08:19  answer
 

Bébé Yoda a écrit :

Donc au niveau "feature selection", c'est très différent d'un lasso qui sélectionne les features "seules" et permet donc une interprétation directe de la sélection.
Là vu qu'il opère des combinaisons, on ne sait pas réellement à quoi ça correspond.
C'est ça ?

 

Tu sais à quoi ça correspond: les axes de projection sont les vecteurs propres de ton set de données dans l'ordre des valeurs propres.

 

Tu peux aussi regarder du côté du LDA linear discriminant analysis, qui est l'équivalent supervise du PCA. Le LDA effectue une décomposition qui explique le maximum de variance de ton objectif.


Message édité par Profil supprimé le 02-12-2017 à 09:08:48
n°5022241
shalazyr
Posté le 04-12-2017 à 18:31:58  profilanswer
 

Petit coucou  
Me suis absentée un loooong moment :lol:  
 
Beaucoup de pages à lire  
 
Bientôt fini la certif Microsoft dont je parlais en page 3 ou 4
 

n°5022260
Bébé Yoda
Posté le 04-12-2017 à 19:40:41  profilanswer
 

shalazyr a écrit :

Petit coucou  
Me suis absentée un loooong moment :lol:  
 
Beaucoup de pages à lire  
 
Bientôt fini la certif Microsoft dont je parlais en page 3 ou 4
 


 
Quand tu auras tout rattrapé, on sera content d'avoir un retour sur la certification MS ;)

n°5022266
shalazyr
Posté le 04-12-2017 à 19:59:16  profilanswer
 

Bébé Yoda a écrit :


 
Quand tu auras tout rattrapé, on sera content d'avoir un retour sur la certification MS ;)


 
Promis !  :D

n°5022268
cequelsar
Posté le 04-12-2017 à 20:02:57  profilanswer
 

Le contenu de ce message a été effacé par son auteur

n°5022273
Bébé Yoda
Posté le 04-12-2017 à 20:31:24  profilanswer
 

J'ai eu un petit soucis pour faire un modèle de classification binaire.
Au prétraitement des données je procède à un 1-hot encoding des paramètres et je crée donc des colonnes supplémentaires.
Par exemple : si j'ai col1=[0,1,2] ça donne [0,0,1], [0,1,0], [1,0,0]. Je nomme automatiquement les nouvelles colonnes col1_1, col1_2, col1_3. Bon jusque là, c'est très classique à priori.
Seulement si je n'ai pas exactement les mêmes valeurs dans mes train et validation sets j'ai comme problème que par exemple mon train set va avoir col1_1, col1_2, col1_3 et le validation set aura col1_1, col1_2.
Donc mes features lors du training sont col1_1, col1_2, col1_3  et lors de la prédiction, ça ne fonctionne pas car il manque une colonne dans le validation set.
 
Pour palier au problème, j'ai fait une petite fonction qui compare les colonnes entre train/validation sets et qui rajoute des colonnes de 0 dans l'un des sets.
 
Au niveau du score je ne vois pas vraiment de différence.
 
Je me demande si ce que je fais est correct, et s'il y aurait une autre façon de faire ?
 
Voilà comment j'ai fait :  

Code :
  1. features_data = set(feats)
  2. features_data_valid = set(data_valid.columns)
  3. temp = features_data.difference(features_data_valid) #uniquement les features dans data training
  4. for t in temp:
  5.     data_valid[t] = np.zeros(len(data_valid))
  6.    
  7. temp = features_data_valid.difference(features_data)    #uniquement les features dans data validation
  8. for t in temp:
  9.     data[t] = np.zeros(len(data))


Message édité par Bébé Yoda le 04-12-2017 à 20:32:57
n°5022276
Rontgen
Posté le 04-12-2017 à 20:44:20  profilanswer
 

La base de toute la théorie du ML, c'est que les données de training et de validation sont censées provenir de la même distribution
Tu dois donc revoir la façon dont tu as séparé training set et validation set
Si vraiment c'est impossible (mais je ne sais pas pourquoi ça le serait), je pense que tu devrais plutôt retirer de l'ensemble d'apprentissage toutes les données qui ont une valeur non présente dans l'ensemble de test, plutôt qu'inventer une valeur arbitraire

 

Ce que tu as fait a du sens aussi bien sûr, mais je pense que c'est sous optimal


Message édité par Rontgen le 04-12-2017 à 20:47:01
n°5022279
Bébé Yoda
Posté le 04-12-2017 à 20:49:09  profilanswer
 

Hmm je vois.
En fait les données de validation sont séparées.
Comme d'habitude, c'est une compétitions kaggle où on te donne un jeu de données sur lesquelles tu dois prédire pour valider. Donc je peux pas "mélanger" pour optimiser les distributions.
 
Je vais enlever des données dans la partie apprentissage pour voir ce que ça donne :)
Merci ;)

n°5022317
rogermajax
Posté le 05-12-2017 à 01:50:33  profilanswer
 

Juste comme ça, tu utilises le meme codage pour ton training set et ton validation set ?

 

Normalement, sur la base du training set, tu décides quelle variable binaire encode quelle valeur catégorielle.

 

Une fois ta "table de correspondance" construite à partir de ton TS, tu l'applique sur ton VS. Et si jamais, dans ton VS, tu tombes sur une valeur catégorielle nouvelle, ben toutes tes variables binaires sont à zero. Il n'y a pas de raison d'ajouter des variables binaires sur le VS.

 

Après pour rejoindre la remarque de  Rontgen, t'as des façons d'equilibrer tes ensembles d'apprentissage. Tapes "validation croisée stratifiée" ou l'équivalent anglais et tu devrais trouver des trucs.


Message édité par rogermajax le 05-12-2017 à 02:04:10
n°5022319
Tidom
Posté le 05-12-2017 à 05:32:52  profilanswer
 

Je ne connaissais pas le terme 1-hot coding : en fait c'est le codage en disjonctif complet.
C'est en effet la technique la plus simple mais je ne suis pas convaincu de son intérêt :
1) si tu as beaucoup de variables catégorielles chacune avec beaucoup de valeurs possibles, ça fait beaucoup x beaucoup de nouvelles variables : pas forcément facile à gérer pour certains algos (apres ce n'est peut être pas ton cas ?)
2) comme pour la discretisation de variables numériques, tu peux faire du regroupement de valeurs pour le pretraitement de variables catégorielles : concrètement, tu explores l'espace des partitions de l'ensemble des valeurs de ta variable en optimisant un critère du genre la corrélation, L' entropie, l'information mutuelle, ... Ainsi, ton pretraitement génère moins de nouvelles variables mais potentiellement plus informatives que le 1-hot encoding. Notons que ça peut être coûteux aussi, il faut une bonne heuristique et eviter la recherche exhaustive pour les variables à grand domaine de définition. D'ailleurs je crois que certaines versions d'arbres de décisions adoptent cette stratégie pour créer des noeuds n-aires avec des variables categorielles
À voir si ca existe dans scikit-learn ?

Message cité 1 fois
Message édité par Tidom le 05-12-2017 à 05:36:30
n°5022355
Oceanborn
Posté le 05-12-2017 à 10:05:34  profilanswer
 

Yo,
J'ai un petit soucis pour comprendre conceptuellement un reseau de neurone.
Je souhaiterais predire un trait/maladie/whatever a partir des mutations d'individus. Donc pour chaque mutation (disons 1 million sur le genome, communs a tous les individus), j'ai des 0/1/2. Et mon training set sera de quelques milliers d'individus, N.
 
Dans le cas d'un NN tres simple, j'utilise quoi comme feature pour 1 perceptron, un vecteur de taille N contenant le couple {0/1/2; outcome} ? Du coup dans mon premier layer j'ai 1 millions de perceptron, vu qu'il y a 1M de mutations ?
J'suis pas sur d'avoir ete tres clair, mais si vous avez une idee, je suis preneur. :o
Merci :jap:

n°5022401
Bébé Yoda
Posté le 05-12-2017 à 13:52:53  profilanswer
 

Tidom a écrit :

Je ne connaissais pas le terme 1-hot coding : en fait c'est le codage en disjonctif complet.  
C'est en effet la technique la plus simple mais je ne suis pas convaincu de son intérêt :  
1) si tu as beaucoup de variables catégorielles chacune avec beaucoup de valeurs possibles, ça fait beaucoup x beaucoup de nouvelles variables : pas forcément facile à gérer pour certains algos (apres ce n'est peut être pas ton cas ?)  
2) comme pour la discretisation de variables numériques, tu peux faire du regroupement de valeurs pour le pretraitement de variables catégorielles : concrètement, tu explores l'espace des partitions de l'ensemble des valeurs de ta variable en optimisant un critère du genre la corrélation, L' entropie, l'information mutuelle, ... Ainsi, ton pretraitement génère moins de nouvelles variables mais potentiellement plus informatives que le 1-hot encoding. Notons que ça peut être coûteux aussi, il faut une bonne heuristique et eviter la recherche exhaustive pour les variables à grand domaine de définition. D'ailleurs je crois que certaines versions d'arbres de décisions adoptent cette stratégie pour créer des noeuds n-aires avec des variables categorielles
À voir si ca existe dans scikit-learn ?


 
Je ne connaissais pas le terme "codage disjonctif complet" :)
Alors en effet, c'est pas terrible dans mon cas, je passe de 59 features à environ 400 au final et les temps de traitement s'en ressentent (1 million de lignes environ). Certaines variables catégorielles ont une quinzaine de valeurs ...
 
J'ai utilisé cette technique "pour voir", car je la vois appliquée un peu partout mais j'avoue que dans mon cas je ne suis pas sûr que c'est très utile. Si je fais une regression logistique ou une random forest est-ce que c'est vraiment nécessaire ?

n°5022528
andrewwile​s
Posté le 05-12-2017 à 19:59:14  profilanswer
 

Bonjour,
 
Par curiosité, quelles sont les perspectives actuelles pour du data mining via le web ?
 
En particulier dans le but de profiter d'opportunités d'arbitrages sur des marchés dérégulés.
 
En attendant d'avoir votre avis sur ce sujet.
 
Cordialement
 

n°5022546
Tidom
Posté le 05-12-2017 à 22:05:25  profilanswer
 

Bébé Yoda a écrit :


 
J'ai utilisé cette technique "pour voir", car je la vois appliquée un peu partout mais j'avoue que dans mon cas je ne suis pas sûr que c'est très utile. Si je fais une regression logistique ou une random forest est-ce que c'est vraiment nécessaire ?


 
Pour la régression logistique, pas vraiment le choix, puisque les variables catégorielles à 3 valeurs ou plus ne sont pas prévues par défaut. Donc c'est soit 1-hot encoding, soit du groupement de valeurs (comme discuté plus haut) mais tu seras quand même obligé de binariser les groupes après.
Par exemple pour une variable X définie sur {a,b,c,d,e,f}, si tu trouves que les groupement de valeurs X1 = {a,b}, X2 = {c,d}, X3 = {e,f} sont informatifs, comme tu as trois groupes, tu seras contraint de créer 3 variables binaires (par 1-hot encoding), X1, X2, X3.
 
Pour le random forest, dans scikit-learn, quelle est la politique de split des noeuds des arbres ? Si ça se trouve il fait déjà autrement que du 1-hot encoding ?

n°5022582
Bébé Yoda
Posté le 06-12-2017 à 10:04:59  profilanswer
 

Pfff oui en fait c'est logique. Et comme un bourrin, j'ai appliqué la même transformation pour les deux méthodes sans réfléchir...
 
J'essaye de comprendre comment c'est fait dans sklearn, mais c'est pas très clair. Je pense pas qu'ils font du 1-hot à première vue.
https://github.com/scikit-learn/sci [...] /forest.py

n°5022583
Bébé Yoda
Posté le 06-12-2017 à 10:05:46  profilanswer
 

Oceanborn a écrit :

Yo,
J'ai un petit soucis pour comprendre conceptuellement un reseau de neurone.
Je souhaiterais predire un trait/maladie/whatever a partir des mutations d'individus. Donc pour chaque mutation (disons 1 million sur le genome, communs a tous les individus), j'ai des 0/1/2. Et mon training set sera de quelques milliers d'individus, N.
 
Dans le cas d'un NN tres simple, j'utilise quoi comme feature pour 1 perceptron, un vecteur de taille N contenant le couple {0/1/2; outcome} ? Du coup dans mon premier layer j'ai 1 millions de perceptron, vu qu'il y a 1M de mutations ?
J'suis pas sur d'avoir ete tres clair, mais si vous avez une idee, je suis preneur. :o
Merci :jap:


 
J'avoue que j'ai pas vraiment compris ton message :/
Mais je suis pas non plus expert en NN, je crois que certains sont bien calés, faut juste attendre qu'ils passent par là :o

n°5022592
Rasthor
Posté le 06-12-2017 à 10:36:31  profilanswer
 
n°5023092
Tidom
Posté le 10-12-2017 à 04:35:15  profilanswer
 

De ce que j'ai pu lire sur ce topic, les master data science de X et MVA sont difficiles d'accès et de top niveau.
Il y en a d'autres : vite fait sur Google
http://www.mastersportal.eu/study- [...] rance.html

n°5023094
Bébé Yoda
Posté le 10-12-2017 à 09:04:20  profilanswer
 

Après il y a bien plus de postes que de diplômes de ces deux masters.
Même avec un diplôme moins prestigieux il y aura moyen...

 

Sinon en interne dans ta boîte ?

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  21  22  23  ..  128  129  130  131  132  133

Aller à :
Ajouter une réponse
 

Sujets relatifs
Recherche d'emploi[Topik Unique] Les girls de la section E&E
Avez vous des problèmatiques sur le Big Data ?Master Finance et Stratégie de Science Po après des études de droit ?
Je veux travailler dans les Big DATAOrientation pour Data Science & Recherche Opérationnelle
[Topic Unique] Concours ingénieur ENAC/IESSA : 30 postes [Topic Unique] EIVP
[Topic Unique] L'Aylite !!! 
Plus de sujets relatifs à : [Topic Unique] Machine Learning & Data Science


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR