Come escogitare un algoritmo che suggerisce ricette di cottura fattibili?


15

Una volta ho avuto un veterano nel mio corso che ha creato un algoritmo che suggerirebbe ricette di cucina. All'inizio, uscivano tutti i tipi di ricette folli. Quindi, avrebbe allenato l'algoritmo di cottura con ricette vere e alla fine avrebbe suggerito quelle molto buone.

Credo che abbia usato qualcosa di correlato al teorema di Bayes o al clustering, ma è sparita da tempo e lo è anche l'algoritmo. Ho cercato su Internet ma cercare ricette di cucina produrrà qualsiasi tipo di risultato, ma non quello che sto cercando. Quindi, la mia domanda è:

Quali tecniche possono essere utilizzate per escogitare un algoritmo che (casualmente) suggerisce ricette fattibili (senza usare un database di ricette fisse)?

Perché dovrei preoccuparmi di cercare un algoritmo di cottura? Bene, è stato un ottimo esempio di un'applicazione del mondo reale dei concetti sottostanti e tale algoritmo potrebbe essere utile in contesti diversi che sono più vicini al mondo reale.


1
Potrebbe valere la pena esaminare vari tipi di algoritmo evolutivo
Henry,

7
... o per un leggero sollievo, questo da xkcd
Henry

2
@ Henry: E quale funzione useresti per il fitness? Questo è il punto principale della domanda!
Raffaello

1
La persona che ha votato per chiudere può spiegare il motivo del suo voto? Votare per chiudere senza fornire una motivazione non aiuta l'OP a migliorare la sua domanda.
Alex ten Brink

1
I commenti sembrano più esotici della domanda stessa.
Oeufcoque Penteano,

Risposte:


4

Hmm, usando il Teorema di Bayes per creare nuove ricette da vecchie ricette. Immagino che prima vorresti che l'algoritmo separasse gli ingredienti in una forma che capisce (non sono sicuro se stiamo usando la PNL per quello, o se inserisci manualmente i dati in te, che non è né qui né lì.) Da lì ... .

Immagino qualcosa del genere.

Dati di test analizzati. Ora abbiamo un elenco di ricette e le probabilità che ogni ingrediente avrà luogo insieme a un altro ingrediente e in quali quantità. Dopo che avremo questi dati, il programma dovrebbe creare casualmente le nuove ricette. Prima scorre un elenco di tutti gli ingredienti noti, quindi seleziona casualmente un ingrediente principale, da lì utilizza le probabilità di un ingrediente dato un altro ingrediente per iniziare a lanciare ingredienti più casuali, nel frattempo abbinando i dati addestrati appropriati per quantità e compatibilità ingredienti.

Potrei suggerire che durante la creazione di una nuova ricetta al programma vengano fornite informazioni come, voglio qualcosa di dolce, o qualcosa di acido, o per esempio qualcosa per lo più fatto di grano.

Spero che questo aiuti un po '.


3

Per un ampio set di dati incentrato sugli Stati Uniti di quasi 2000 ricette, puoi consultare il servizio di ricette delle forze armate . Questo non risponde alla tua domanda, ma ti fornirà i dati di allenamento del mondo reale.

I requisiti del problema sono probabilmente difficili da articolare per la maggior parte delle persone e l'approccio selezionato finirà probabilmente per adeguare implicitamente la forma fisica nel modo che hai suggerito. Gli alimenti in geenral sono molto specifici della cultura e l'approccio probabilmente viaggerebbe molto male senza una messa a punto approfondita.

Ciò richiede anche una sostanziale conoscenza sematica e di dominio per preparare più di un semplice elenco di ingredienti. Dopotutto, il gelato al caffè con wafer, cafe au lait e un cornetto e tira misu sarebbero altrimenti indistinguibili.


"Questo non risponde alla tua domanda" - esattamente, quindi dovrebbe essere un commento. Vedo che non puoi ancora commentare; Ho contrassegnato per la conversione.
Raffaello

@Raphael: non convertire questo, perché è troppo lungo e - anche se potrebbe non essere una risposta ideale - nel suo insieme tenta di risolvere il problema. Se ritieni che non sia di aiuto, ti preghiamo di votarlo. Pekka, anche se questa potrebbe non essere la fonte più produttiva di nuova arte culinaria, è un problema interessante e correlabile ... Se potessi espandere la tua risposta per discutere le specifiche dello sviluppo di un tale algoritmo, potrebbe essere più accettabile.
Shog9

3

La generazione di ricette viene comunemente utilizzata come applicazione di esempio per i sistemi di ragionamento basato sui casi. È persino usato come esempio nella pagina di Wikipedia . Una ricerca su google per "ricette di ragionamento basate sul caso" produce numerosi risultati.


1

La classe di algoritmi che stai cercando è quella dei banditi. Di solito vengono utilizzati per gestire la parte esplorativa di un problema di classificazione.

Un approccio di base sarebbe quello di rappresentare le ricette come un pacchetto limitato di componenti (un vettore di valori booleani con al massimo k valori non 0) e utilizzare LinUCB per selezionare un insieme di componenti. Quindi il feedback sarebbe "mi piace" o "non mi piace". Naturalmente se sei bayesiano potresti preferire l'uso di Trueskill (usando la variante Adpredictor).

Qualcosa di meno essenziale richiederebbe l'uso di un kernel invece di una separazione lineare. Kernel ucb può aiutare a gestire quella parte. Ma a un certo punto penso che sarebbe utile prestare attenzione alle composizioni chimiche degli alimenti perché alla fine probabilmente vorrai raggiungere un equilibrio tra diversi gusti di base.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.