¿Cómo diseñar un algoritmo que sugiera recetas de cocina factibles?


15

Una vez tuve un veterano en mi curso que creó un algoritmo que sugería recetas de cocina. Al principio, saldrían todo tipo de recetas locas. Luego, ella entrenaría el algoritmo de cocina con recetas reales y eventualmente sugeriría muy buenas.

Creo que ella usó algo relacionado con el Teorema de Bayes o la Agrupación, pero hace mucho que desapareció y también el algoritmo. He buscado en Internet, pero buscar recetas de cocina arrojará cualquier tipo de resultados, pero no el que estoy buscando. Entonces, mi pregunta es:

¿Qué técnicas se pueden usar para diseñar un algoritmo que (al azar) sugiera recetas factibles (sin usar una base de datos de recetas fijas)?

¿Por qué me molestaría en buscar un algoritmo de cocina? Bueno, fue un muy buen ejemplo de una aplicación en el mundo real de los conceptos subyacentes, y dicho algoritmo podría ser útil en diferentes entornos más cercanos al mundo real.


1
Podría valer la pena mirar varios tipos de algoritmos evolutivos
Henry

77
... o para alivio ligero, esto de xkcd
Henry

2
@Henry: ¿Y qué función usarías para estar en forma? ¡Ese es el punto principal de la pregunta!
Raphael

1
¿Puede la persona que votó cerrar cerrar la razón detrás de su voto? Votar para cerrar sin dar una razón no ayuda al OP a mejorar su pregunta.
Alex ten Brink

1
Los comentarios parecen más exóticos que la pregunta misma.
Oeufcoque Penteano

Respuestas:


4

Hmm, usando el Teorema de Bayes para hacer nuevas recetas con recetas antiguas. Me imagino que primero querrá que el algoritmo separe los ingredientes en una forma que comprenda (no estoy seguro de si estamos usando PNL para eso, o si ingresa manualmente los datos en sí mismo, eso no es ni aquí ni allá). A partir de ahí ... .

Me imagino algo como esto.

Datos de prueba analizados. Ahora tenemos una lista de recetas y las probabilidades de que cada ingrediente tenga lugar junto con otro ingrediente, y en qué cantidades. Una vez que tengamos estos datos, el programa hará al azar las nuevas recetas. Primero, realiza un ciclo a través de una lista de todos los ingredientes conocidos, luego selecciona aleatoriamente un ingrediente principal, a partir de ahí usa las probabilidades de un ingrediente dado otro ingrediente para comenzar a arrojar más ingredientes aleatorios, todo mientras coincide con los datos entrenados apropiados para cantidades y compatibles ingredientes

¿Puedo sugerir que al crear una nueva receta el programa reciba información como, quiero algo dulce, o algo ácido, o por ejemplo, algo compuesto principalmente de trigo?

Esperemos que esto ayude un poco.


3

Para un amplio conjunto de datos centrado en los EE. UU. De casi 2000 recetas, puede consultar el Servicio de Recetas de las Fuerzas Armadas . Esto no responde a su pregunta, pero le proporcionaría datos de capacitación del mundo real.

Los requisitos para el problema son probablemente difíciles de articular para la mayoría de las personas y el enfoque seleccionado probablemente terminará ajustando implícitamente la aptitud de la manera que usted ha sugerido. Los alimentos en general son muy específicos de la cultura y el enfoque probablemente viajaría muy mal sin una amplia sintonía.

Esto también necesita un conocimiento sustancial de dominio y semática para preparar más que una simple lista de ingredientes. Después de todo, el helado con sabor a café con oblea, café con leche y un croissant y tira misu no serían distinguibles.


"Esto no responde a su pregunta", exactamente, por lo que debería ser un comentario. Veo que aún no puedes comentar; Marqué para la conversión.
Raphael

@Raphael: no convierte esto, porque es demasiado largo y, aunque puede no ser una respuesta ideal, en su conjunto intenta abordar el problema. Si cree que no es útil, por favor vote hacia abajo. Pekka, aunque puede que esta no sea la fuente más productiva del nuevo arte culinario, es un problema interesante y fácil de relacionar ... Si pudiera ampliar su respuesta para discutir los detalles del desarrollo de dicho algoritmo, podría ser más aceptable.
Shog9

3

La generación de recetas se usa comúnmente como una aplicación de ejemplo para sistemas de razonamiento basado en casos. Incluso se usa como ejemplo en la página de Wikipedia . Una búsqueda en Google de "recetas de razonamiento basadas en casos" arroja numerosos resultados.


1

La clase de algoritmos que está buscando es la de los bandidos. Por lo general, se utilizan para manejar la parte de exploración de un problema de clasificación.

Un enfoque básico sería representar las recetas como una bolsa limitada de componentes (un vector de booleanos con un máximo de k valores distintos de 0) y usar LinUCB para seleccionar un conjunto de componentes. Entonces la retroalimentación sería 'me gusta' o 'no me gusta'. Por supuesto, si eres bayesiano, podrías preferir usar Trueskill (usando la variante Adpredictor).

Algo menos básico requeriría usar un núcleo en lugar de una separación lineal. Kernel ucb puede ayudar a manejar esa parte. Pero en algún momento creo que sería útil prestar atención a las composiciones químicas de los alimentos porque al final probablemente desee lograr un equilibrio entre los diferentes sabores básicos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.