Comment concevoir un algorithme qui suggère des recettes de cuisine réalisables?

15

J'ai eu une fois un vétéran dans mon cours qui a créé un algorithme qui suggérerait des recettes de cuisine. Au début, toutes sortes de recettes folles sortaient. Ensuite, elle entraînerait l'algorithme de cuisine avec de vraies recettes et éventuellement il en proposerait de très bonnes.

Je crois qu'elle a utilisé quelque chose lié au théorème de Bayes ou au clustering, mais elle est partie depuis longtemps, tout comme l'algorithme. J'ai cherché sur Internet, mais la recherche de recettes de cuisine donnera des résultats, mais pas celui que je recherche. Donc, ma question est:

Quelles techniques peuvent être utilisées pour concevoir un algorithme qui (au hasard) suggère des recettes réalisables (sans utiliser une base de données de recettes fixes)?

Pourquoi devrais-je prendre la peine de chercher un algorithme de cuisson? Eh bien, c'était un très bon exemple d'une application réelle des concepts sous-jacents, et un tel algorithme pourrait être utile dans différents contextes plus proches du monde réel.

Oeufcoque Penteano
la source
1
Il pourrait être utile de regarder différents types d' algorithmes évolutionnaires
Henry
7
... ou pour un léger soulagement, ceci de xkcd
Henry
2
@Henry: Et quelle fonction utiliseriez-vous pour le fitness? C'est le point principal de la question!
Raphael
1
La personne qui a voté pour clore peut-elle expliquer la raison de son vote? Voter pour clore sans donner de raison n'aide pas le PO à améliorer sa question.
Alex ten Brink
1
Les commentaires semblent plus exotiques que la question elle-même.
Oeufcoque Penteano

Réponses:

4

Hmm, en utilisant le théorème de Bayes pour faire de nouvelles recettes à partir d'anciennes recettes. J'imagine que vous voudriez d'abord que l'algorithme sépare les ingrédients sous une forme qu'il comprend (je ne sais pas si nous utilisons la PNL pour cela, ou si vous entrez manuellement les données en vous-même, ce n'est ni ici ni là-bas.) À partir de là .. .

J'envisage quelque chose comme ça.

Données de test analysées. Nous avons maintenant une liste de recettes et les probabilités que chaque ingrédient se déroule aux côtés d'un autre ingrédient, et en quelles quantités. Une fois que nous aurons ces données, le programme créera au hasard les nouvelles recettes. D'abord, il parcourt une liste de tous les ingrédients connus, puis sélectionne au hasard un ingrédient principal, à partir de là, il utilise les probabilités d'un ingrédient donné à un autre ingrédient pour commencer à jeter plus d'ingrédients aléatoires, tout en faisant correspondre les données appropriées pour les quantités et compatibles Ingrédients.

Puis-je suggérer que lors de la création d'une nouvelle recette, le programme reçoive des informations telles que, je veux quelque chose de sucré, quelque chose d'aigre, ou par exemple quelque chose principalement composé de blé.

Espérons que cela aide un peu.

J. Russell
la source
3

Pour un large ensemble de données centré sur les États-Unis de près de 2000 recettes, vous pouvez consulter le Service de recettes des forces armées . Cela ne répond pas à votre question, mais vous fournirait des données d'entraînement réelles.

Les exigences du problème sont probablement difficiles à articuler pour la plupart des gens et l'approche choisie finira probablement par ajuster implicitement la forme physique de la manière que vous avez suggérée. Les aliments dans le geenral sont très spécifiques à la culture et l'approche se déplacerait probablement très mal sans un réglage approfondi.

Cela nécessite également une connaissance approfondie du domaine et du domaine pour préparer plus qu'une simple liste d'ingrédients. Après tout, une glace au café avec une gaufrette, un café au lait et un croissant et du tira misu serait autrement impossible à distinguer.

Pekka
la source
"Cela ne répond pas à votre question" - exactement, donc ce devrait être un commentaire. Je vois que vous n'êtes pas encore autorisé à commenter; J'ai signalé la conversion.
Raphael
@Raphael: ne pas convertir cela, car c'est trop long et - bien que ce ne soit pas une réponse idéale - dans son ensemble, il essaie de résoudre le problème. Si vous pensez que cela ne vous aide pas, veuillez voter contre. Pekka, bien que ce ne soit pas la source la plus productive de nouveaux arts culinaires, c'est un problème intéressant - et relatable ... Si vous pouviez développer votre réponse pour discuter des spécificités du développement d'un tel algorithme, cela pourrait être plus acceptable.
Shog9
3

La génération de recettes est couramment utilisée comme exemple d'application pour les systèmes de raisonnement basé sur les cas. Il est même utilisé comme exemple sur la page Wikipedia . Une recherche google pour les "recettes de raisonnement par cas" donne de nombreux résultats.

alto
la source
1

La classe d'algorithmes que vous recherchez est celle des bandits. Ils sont généralement utilisés pour gérer la partie exploration d'un problème de classification.

Une approche de base serait de représenter les recettes comme un sac limité de composants (un vecteur de booléens avec au plus k valeurs non 0) et d'utiliser LinUCB pour sélectionner un ensemble de composants. Ensuite, la rétroaction serait «comme» ou «n'aime pas». Bien sûr, si vous êtes un bayésien, vous pouvez préférer utiliser Trueskill (en utilisant la variante Adpredictor).

Quelque chose de moins basique nécessiterait d'utiliser un noyau au lieu d'une séparation linéaire. Le noyau ucb peut aider à gérer cette partie. Mais à un moment donné, je pense qu'il serait utile de prêter attention à la composition chimique des aliments, car à la fin, vous voulez probablement parvenir à un équilibre entre les différents goûts de base.

user1662497
la source