Como conceber um algoritmo que sugere receitas de cozinha viáveis?

15

Certa vez, tive um veterano em meu curso que criou um algoritmo que sugeria receitas de culinária. No começo, todo tipo de receita maluca surgia. Depois, ela treinava o algoritmo de culinária com receitas reais e, eventualmente, sugeria outras muito boas.

Eu acredito que ela usou algo relacionado ao Teorema de Bayes ou Clustering, mas ela se foi há muito tempo e o algoritmo também. Eu pesquisei na internet, mas procurando receitas de culinária trará qualquer tipo de resultado, mas não aquele que estou procurando. Então, minha pergunta é:

Quais técnicas podem ser usadas para criar um algoritmo que (aleatoriamente) sugere receitas viáveis ​​(sem usar um banco de dados de receitas fixas)?

Por que eu me incomodaria em procurar um algoritmo de culinária? Bem, foi um exemplo muito bom de uma aplicação do mundo real dos conceitos subjacentes, e esse algoritmo pode ser útil em diferentes configurações mais próximas do mundo real.

Oeufcoque Penteano
fonte
1
Pode valer a pena olhar para vários tipos de algoritmo evolutivo
Henry
7
... ou para o alívio da luz, isso a partir xkcd
Henry
2
@ Henry: E qual função você usaria para fitness? Esse é o ponto principal da questão!
Raphael
1
A pessoa que votou para fechar explica a razão por trás de seu voto? A votação para encerrar sem apresentar um motivo não ajuda o OP a melhorar sua pergunta.
Alex ten Brink
1
Os comentários parecem mais exóticos do que a própria pergunta.
Oeufcoque Penteano

Respostas:

4

Hmm, usando o Teorema de Bayes para fazer novas receitas com receitas antigas. Eu imagino que você primeiro desejaria que o algoritmo separasse os ingredientes de uma forma que entenda (não tenho certeza se estamos usando a PNL para isso ou se você inserir manualmente os dados em si mesmo, isso não é aqui nem ali.) A partir daí .. .

Eu imagino algo assim.

Dados de teste analisados. Agora, temos uma lista de receitas e as probabilidades de que cada ingrediente ocorra ao lado de outro ingrediente e em que quantidades. Depois que tivermos esses dados, você terá o programa aleatoriamente para fazer as novas receitas. Primeiro, ele percorre uma lista de todos os ingredientes conhecidos e, em seguida, seleciona aleatoriamente um ingrediente principal; a partir daí, usa as probabilidades de um ingrediente dado outro ingrediente para começar a inserir mais ingredientes aleatórios, sempre combinando dados treinados apropriados para quantidades e compatibilidade. ingredientes.

Posso sugerir que, ao criar uma nova receita, o programa receba informações como: quero algo doce, azedo ou, por exemplo, principalmente composto de trigo.

Espero que isso ajude um pouco.

J. Russell
fonte
3

Para um amplo conjunto de dados centrado nos EUA de quase 2000 receitas, você pode consultar o Serviço de Receita das Forças Armadas . Isso não responde à sua pergunta, mas fornece dados de treinamento do mundo real.

É provável que os requisitos para o problema sejam difíceis de articular para a maioria das pessoas e a abordagem selecionada provavelmente acabará implicitamente ajustando a adequação da maneira sugerida. Os alimentos no geenral são muito específicos da cultura e a abordagem provavelmente viajaria muito mal sem um ajuste extenso.

Isso também requer conhecimentos somáticos e de domínio substanciais para preparar mais do que apenas uma lista de ingredientes. Afinal, sorvete com sabor de café com bolacha, café com leite e croissant e tira misu seriam indistinguíveis.

Pekka
fonte
"Isso não responde à sua pergunta" - exatamente, portanto deve ser um comentário. Vejo que você não tem permissão para comentar ainda; Eu sinalizei a conversão.
Raphael
@ Rafael: não convertendo isso, porque é muito longo e - embora possa não ser a resposta ideal - como um todo, ele tenta resolver o problema. Se você acha que é inútil, faça um voto negativo. Pekka, embora essa possa não ser a fonte mais produtiva da nova arte culinária, é um problema interessante - e relacionável - ... Se você pudesse expandir sua resposta para discutir as especificidades do desenvolvimento de um algoritmo desse tipo, seria mais aceitável.
Shog9
3

A geração de receita é geralmente usada como um aplicativo de exemplo para sistemas de Raciocínio Baseado em Casos. É usado até como exemplo na página da Wikipedia . Uma pesquisa no google por "receitas de raciocínio com base em casos" gera vários resultados.

alto
fonte
1

A classe de algoritmos que você está procurando é a dos bandidos. Eles geralmente são usados ​​para lidar com a parte de exploração de um problema de classificação.

Uma abordagem básica seria representar as receitas como um pacote limitado de componentes (um vetor de booleanos com no máximo k valores 0) e usar o LinUCB para selecionar um conjunto de componentes. Então o feedback seria 'like' ou 'dont like'. Obviamente, se você é bayesiano, pode preferir usar o Trueskill (usando a variante Adpredictor).

Algo menos básico exigiria o uso de um kernel em vez de uma separação linear. O kernel ucb pode ajudar a lidar com essa parte. Mas, em algum momento, acho que seria útil prestar atenção às composições químicas dos alimentos, porque no final você provavelmente deseja alcançar um equilíbrio entre diferentes gostos básicos.

user1662497
fonte