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.
fonte
Respostas:
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.
fonte
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.
fonte
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.
fonte
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.
fonte