IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Optimiser les poids de différents paramètres pour maximiser une fonction ?


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 31
    Points : 25
    Points
    25
    Par défaut Optimiser les poids de différents paramètres pour maximiser une fonction ?
    Bonjour,

    J'ai différents paramètres qui interviennent dans un calcul et je voudrais savoir quel poids leur accorder pour avoir un max de ma fonction.

    Par exemple si ma fonction était la probabilité d'avoir un restaurant étoilé, elle pourrait dépendre des paramètres : age, formationCuisine, expérienceCuisine, ...
    Et j'aurais ma formule qui serait du style :
    ProbaRestauEtoile = x * âge + y * formationCuisine + z * expérienceCuisine +...

    avec des poids x-y-z que je voudrais optimiser d'après un jeu de données tel que :
    Jean : age = 30 ans, formationCuisine = 1 an, expérienceCuisine = 3 ans ... et je sais que Jean a 1 étoile
    Pierre : age = 25 ans, formationCuisine = 3 an, expérienceCuisine = 3 ans ... et je sais que Pierre a 1 étoile
    Paul : age = 5 ans, formationCuisine = 0 an, expérienceCuisine = 0 ans ... et je sais que Paul a 0 étoiles

    Au début je pensais tester toutes les valeurs de x,y,z par pas de 0.1 entre 0 et 1, mais ça risque d'être loooong et pas forcément optimum car ça me fait rater des valeurs.

    Connaissez-vous des algos tout faits (et faciles, je débute ;-)) ?

    Merci d'avance !

  2. #2
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Optimiser les poids de différents paramètres pour maximiser une fonction ?
    Bonjour,

    S'agit-il d'une véritable probabilité (de valeur comprise entre 0 et 1), ou d'une note de candidature (ou d'aptitude professionnelle) allant par exemple de 0 à 10 ?

    Il est envisageable, mais difficile, de traduire en formules les critères d'embauche de l'employeur, d'autant que ces critères sont nombreux (il y a, en plus de ceux que tu donnes, les rapports de stages et les références des éventuels précédents employeurs), et que certaines candidatures atypiques (mais non négligeables) s'adapteront mal aux critères choisis (que décidera-t-on au sujet d'un candidat trop âgé ayant servi chez la Mère Brazier ? ).
    Il ne s'agit pas en tout cas d'une simple combinaison linéaire, semblable à celle que tu proposes.

    Une formule est cependant envisageable à deux conditions:
    a) Considérer qu'elle conduit à une évaluation approximative du dossier, qu'il faut impérativement compléter par une note d'entretien.
    b) Déterminer pour chacun des critères mentionnés (âge, durée de formation, expérience professionnelle) les seuils au-delà desquels (ou entre lesquels) un choix s'impose.
    Par exemple pour l'âge:
    - l'âge minimal d'embauche (A1 = 16 ans ?);
    - la plage (A2 , A3) sur laquelle la note attribuée est maximale (Na = 4 ?) - (25 et 55 ans ?);
    - la limite d'embauche (A4 = 65 ans ?).
    On aurait ainsi: Na = 0 pour tout âge (a<A1) ou (a>A4);
    Na = 4 (Namax) pour (A2 < a < A3);
    Na = (Namax)*(a - A1)/(A2 - A1) pour (A1 < a < A2);
    Na = (Namax)*(A4 - a)/(A4 - A3) pour (A3 < a < A4).

    Pour l'importance relative à accorder aux différentes rubriques, il te faut réfléchir à la note que tu donnerais dans les cas limites suivants:
    - à un candidat d'âge optimal sans formation ni expérience;
    - à un autre semblable muni d'un diplôme professionnel, mais sans expérience;
    - à un troisième non diplômé, mais avec 5 ans d'exercice de la profession.
    Les calculs sont ici plus simples, parce qu'il intervient des fonctions à un seul palier:
    N = Nmax (si t > Tmax) ou N = Nmax*t/Tmax (si 0 < t < Tmax) ,
    avec Tmax = 2 ans (?) pour la formation professionnelle, 5 ans (?) pour l'expérience professionnelle.

    C'est à l'usage que tu pourras juger de l'opportunité de ces divers calculs.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    Bonjour wiwaxia et merci pour ta réponse :-)

    je suis bien consciente que l'exemple choisi n'est certainement pas optimum mais ce sur quoi je travaille risque d'être encore moins clair.
    En fait, j'ai deux lots de données, dans l'exemple choisi :
    - le jeu1 est étiquetté avec les profils de candidats + le fait que le candidat X ou Y possède ou pas un restaurant.
    - D'un autre côté j'ai un jeu2 de données avec les profils de candidats et je veux savoir si je pourrais automatiquement prédire s'il possède ou pas un restaurant.

    C'est sur le jeu1 que je dois optimiser les différents poids, afin que je puisse ensuite voir ma capacité de prédiction sur le jeu2 avec ces mêmes poids.
    Ce que je ne sais pas faire, plutôt que faire varier les poids de x,y,z sur des plages de 0 à 1 [0,0.1,0.2,....0.9,1], c'est s'il existe une façon de donner le jeu1 à un système et qu'il me dise que les poids qui permettent de donner une plus grande probabilité à ceux qui ont effectivement un restaurant, même si ce n'est pas parfaitement juste dans 100% des cas.

    Je ne sais pas si c'est plus clair

    (Au passage je remercie aussi Flodelarab pour sa réponse mais elle n'apparaît pas sur le site),

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Tu décris le fonctionnement d'un algorithme à apprentissage comme par exemple un réseau de neurones.
    Pour le réseau de neurones, l'avantage est qu'il n'y a pas de formule à inventer puisque c'est le réseau de neurones qui se charge de donner une réponse.
    L'inconvénient est qu'il faut d'abord choisir une forme pour le réseau de neurones, puis le régler. Si ton ensemble d'apprentissage est trop petit ou contient des biais, le réseau ne sera pas très bon en prédiction.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 054
    Points : 9 394
    Points
    9 394
    Par défaut
    Il y a 15 ans, on aurait répondu parfaitement à ta question en abordant ce problème comme un problème de régression linéaire. Si tu as un outil comme Excel ou Open Office sous la main, essaie d'utiliser la fonction DroiteReg() : Tu as une plage de données, une ligne pour chaque restaurant, une des colonne est le nombre d'étoiles, les autres colonnes sont les variables 'explicatives', et on va chercher une formule qui dit : nombre d'étoiles = f(age, expérience, etc).

    Si tu te définis comme débutant, tu dois regarder l'aide de cette fonction DROITEREG() avant d'aller plus loin, et tu dois expérimenter cette fonction DroiteReg avant d'aller plus loin.. Ce serait un non-sens de vouloir faire quelque chose qui ressemble à de l'analyse de données sans connaître la fonction la plus basique. Ce serait comme s'inscrire à un marathon alors qu'on n'a jamais essayé de courir plus de 5km.

    Après, tu vas peut-être en vouloir plus, et aborder des trucs plus poussés. On va parler SVM, on va parler algorithme de Classification (c'est un mot qui peut t'aider dans tes recherches), tu vas lire des trucs comme ce lien

    Mais ça, c'est après.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  6. #6
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    (Au passage je remercie aussi Flodelarab pour sa réponse mais elle n'apparaît pas sur le site),
    J'ai quasiment instantanément supprimé mon message (hors-sujet), car je n'avais pas vu, en première lecture, que les étoiles étaient fixées ! Ce qui donne un problème de réseau de neurones, comme l'a judicieusement indiqué Dinogoban. Mais comme d'autres habitués sont plus forts en réseau de neurones, je n'ai pas remplacé mon message.

    La petite taille de l'espace des étoiles et la petite taille de l'ensemble des candidats sont 2 gros problèmes pour arriver à un résultat satisfaisant.

    Peut-être serait-il intéressant de tracer un graphique avec les étoiles en fonction de chaque critère et utiliser une méthode des moindres carrés pour chaque modèle choisi ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    Bonjour à tous,

    Merci pour vos différentes réponses, je vais creuser du côté des solutions proposées les plus simples, et après je verrai pour les solutions plus pointues si cela ne donne rien, sachant que, en reprenant l'exemple donné, j'ai environ 5000 profils d'individus (3000 avec étoile et 2000 sans étoile), avec au moins cinquante paramètres différents à pondérer.

    Encore merci et bonne journée à vous :-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec les date heure comme paramètres pour exécuter un jar
    Par hardredman dans le forum Collection et Stream
    Réponses: 15
    Dernier message: 23/05/2012, 04h09
  2. [SQL] Requête SELECT avec un paramètre pour choisir une colonne
    Par svergeylen dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 26/12/2007, 17h36
  3. Comment attendre que tous les thread lancés soient morts pour lancer une action.
    Par rgesnot dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 31/03/2007, 20h27
  4. Réponses: 3
    Dernier message: 13/05/2006, 11h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo