Jak opracować algorytm, który sugeruje możliwe przepisy kulinarne?

15

Kiedyś miałem na kursie weterana, który stworzył algorytm, który sugerowałby przepisy kulinarne. Na początku pojawiły się wszelkiego rodzaju szalone przepisy. Następnie trenowała algorytm gotowania z prawdziwymi przepisami i ostatecznie sugerowałaby te bardzo dobre.

Wydaje mi się, że użyła czegoś związanego z Twierdzeniem Bayesa lub Clustering, ale już dawno jej nie ma, podobnie jak algorytm. Szukałem w Internecie, ale szukanie przepisów kulinarnych przyniesie jakiekolwiek rezultaty, ale nie te, których szukam. Moje pytanie brzmi:

Jakie techniki można zastosować do opracowania algorytmu, który (losowo) sugeruje wykonalne przepisy (bez korzystania z bazy stałych przepisów)?

Dlaczego miałbym zawracać sobie głowę szukaniem algorytmu gotowania? Cóż, był to bardzo dobry przykład zastosowania podstawowych koncepcji w świecie rzeczywistym, a taki algorytm może być przydatny w różnych ustawieniach, które są bliższe rzeczywistemu światu.

Oeufcoque Penteano
źródło
1
Warto przyjrzeć się różnym typom algorytmów ewolucyjnych
Henry
7
... lub dla lekkiej ulgi, to z xkcd
Henry
2
@Henry: A jakiej funkcji użyłbyś do ćwiczeń? To jest główny punkt pytania!
Raphael
1
Czy osoba, która głosowała za zamknięciem, może wyjaśnić powód swojego głosowania? Głosowanie na zakończenie bez podania przyczyny nie pomaga OP poprawić jego pytania.
Alex ten Brink
1
Komentarze wydają się bardziej egzotyczne niż samo pytanie.
Oeufcoque Penteano

Odpowiedzi:

4

Hmm, używając Twierdzenia Bayesa do tworzenia nowych przepisów ze starych przepisów. Wyobrażam sobie, że najpierw chciałbyś, aby algorytm rozdzielił składniki do postaci, którą rozumie (nie jestem pewien, czy do tego używamy NLP, czy też ręcznie wprowadzasz dane w sobie, nie ma go tu ani tam.) Stamtąd ... .

Wyobrażam sobie coś takiego.

Dane testowe przeanalizowane. Teraz mamy listę przepisów i prawdopodobieństwa, że ​​każdy składnik odbędzie się obok innego składnika iw jakich ilościach. Gdy mamy te dane, program losowo tworzy nowe przepisy. Najpierw przegląda listę wszystkich znanych składników, a następnie losowo wybiera główny składnik, a następnie używa prawdopodobieństwa składnika podanego innego składnika, aby zacząć rzucać bardziej losowymi składnikami, jednocześnie dopasowując odpowiednio wyszkolone dane dla ilości i kompatybilne Składniki.

Może sugeruję, aby podczas tworzenia nowego przepisu programowi podawano takie informacje, że chcę czegoś słodkiego lub kwaśnego, lub na przykład czegoś, co składa się głównie z pszenicy.

Mam nadzieję, że to trochę pomoże.

J. Russell
źródło
3

Aby znaleźć szeroki zbiór danych z blisko 2000 przepisów zorientowanych na USA, możesz skorzystać z usługi receptur Sił Zbrojnych . To nie odpowiada na twoje pytanie, ale zapewni ci rzeczywiste dane treningowe.

Wymagania dotyczące problemu są prawdopodobnie trudne do sformułowania dla większości ludzi, a wybrane podejście prawdopodobnie w sposób dorozumiany dostosuje sprawność zgodnie z sugestią. Pokarmy w geenral są bardzo specyficzne dla kultury, a podejście prawdopodobnie podróżowałoby bardzo źle bez dogłębnego dostrajania.

Wymaga to również znacznej wiedzy półmatycznej i dziedzinowej, aby przygotować więcej niż tylko listę składników. W końcu lody o smaku kawowym z waflem, cafe au lait oraz rogalik i tira misu byłyby w przeciwnym razie nie do odróżnienia.

Pekka
źródło
„To nie odpowiada na twoje pytanie” - dokładnie, więc powinien to być komentarz. Widzę, że nie możesz jeszcze komentować; Oflagowałem do konwersji.
Raphael
@ Rafael: nie konwertowanie tego, ponieważ jest za długie i - choć może nie być idealną odpowiedzią - jako całość próbuje rozwiązać problem. Jeśli uważasz, że to nie jest pomocne, zagłosuj na nie. Pekka, choć może nie być to najbardziej produktywne źródło nowej sztuki kulinarnej, jest to interesujący - i dający się odnieść - problem ... Jeśli możesz rozszerzyć swoją odpowiedź, aby omówić specyfikę opracowania takiego algorytmu, może być bardziej akceptowalny.
Shog9
3

Generowanie receptur jest powszechnie stosowane jako przykładowa aplikacja dla systemów wnioskowania opartego na analizie przypadków. Jest nawet używany jako przykład na stronie Wikipedii . Wyszukiwanie w Google „przepisów opartych na analizie przypadków” daje wiele wyników.

alt
źródło
1

Klasa algorytmów, której szukasz, to bandyta. Są zwykle używane do obsługi części eksploracyjnej problemu klasyfikacyjnego.

Podstawowym podejściem byłoby przedstawienie receptur jako ograniczonego zestawu składników (wektor booleanów o wartości co najwyżej k non 0) i użycie LinUCB do wybrania zestawu składników. Wtedy informacja zwrotna będzie „lubić” lub „nie lubić”. Oczywiście, jeśli jesteś bayesianinem, wolisz użyć Trueskill (używając wariantu Adpredictor).

Coś mniej podstawowego wymagałoby użycia jądra zamiast liniowej separacji. Ucb jądra może pomóc w obsłudze tej części. Ale w pewnym momencie uważam, że przydałoby się zwrócenie uwagi na skład chemiczny alimentów, ponieważ na końcu prawdopodobnie chcesz osiągnąć równowagę między różnymi podstawowymi smakami.

użytkownik1662497
źródło