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.
la source
Réponses:
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.
la source
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.
la source
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.
la source
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.
la source