Як розробити алгоритм, який пропонує можливі рецепти приготування?


15

Колись у мене в курсі був ветеран, який створив алгоритм, який би запропонував рецепти приготування. Спочатку виходили б усілякі божевільні рецепти. Потім вона навчила б алгоритм приготування справжніх рецептів, і в кінцевому підсумку це запропонує дуже хороші.

Я вважаю, що вона використовувала щось, що стосується теореми Байєса чи кластеризації, але її вже давно немає, і такий алгоритм. Я шукав в Інтернеті, але пошуки рецептів приготування дають будь-які результати, але не ті, які я шукаю. Отже, моє питання:

Які методи можна використовувати для розробки алгоритму, який (випадковим чином) пропонує реалізовані рецепти (без використання бази даних фіксованих рецептів)?

Чому я б не намагався шукати алгоритм приготування? Ну, це був дуже вдалий приклад застосування реального світу базових понять, і такий алгоритм може бути корисним у різних налаштуваннях, ближчих до реального світу.


1
Можливо, варто переглянути різні типи еволюційного алгоритму
Генрі

7
... або для полегшення світла, це від xkcd
Генрі

2
@Henry: А яку функцію ти би використовував для фітнесу? Це головний момент питання!
Рафаель

1
Чи може людина, яка проголосувала за закриття, пояснити причину свого голосування? Голосування про закриття без пояснення причини не допомагає ОП покращити його питання.
Олексій десять Брінк

1
Зауваження здається більш екзотичним, ніж саме питання.
Oeufcoque Penteano

Відповіді:


4

Гм, використовуючи теорему Байєса для створення нових рецептів із старих рецептів. Я думаю, що ви спочатку хочете, щоб алгоритм розбив інгредієнти у формі, яку він розуміє (не впевнений, чи ми для цього використовуємо NLP, або ви вручну вводите дані в себе, це ні тут, ні там.) .

Я передбачаю щось подібне.

Проаналізовані дані тесту. Тепер у нас є перелік рецептів та ймовірності того, що кожен інгредієнт буде мати місце поряд з іншим інгредієнтом і в яких кількостях. Після того, як ми отримаємо ці дані, ви отримаєте програму випадковим чином скласти нові рецепти. Спочатку він переглядає список усіх відомих інгредієнтів, потім випадковим чином вибирає основний інгредієнт, звідти він використовує ймовірності того, що інгредієнт дав інший інгредієнт, щоб почати вводити більше випадкових інгредієнтів, весь час порівнюючи відповідні навчені дані щодо кількості та сумісних інгредієнти.

Можливо, я б пропоную, щоб при створенні нового рецепту програмі було надано інформацію, наприклад, я хочу чогось солодкого, або чогось кислого, або, наприклад, щось, здебільшого, складається з пшениці.

Сподіваємось, це трохи допомагає.


3

Для широкого набору даних, орієнтованих на США, майже 2000 рецептів, ви можете ознайомитись із службою прийому збройних сил . Це не дає відповіді на ваше запитання, але надасть вам дані про тренінги в реальному світі.

Вимоги до проблеми, ймовірно, важко сформулювати для більшості людей, і обраний підхід, швидше за все, в кінцевому підсумку скоригує пристосованість так, як ви запропонували. Продукти харчування в генералі дуже специфічні для культури, і цей підхід, ймовірно, подорожує дуже погано, не маючи широкої настройки.

Для цього потрібні значні сематичні та доменні знання, щоб підготувати більше, ніж просто список інгредієнтів. Зрештою, морозиво з ароматом кави з вафлями, кафе au lait та круасаном та тиру мису інакше було б не відрізнятись.


"Це не відповідає на ваше запитання" - саме так, так це має бути коментар. Я бачу, вам поки що не дозволяють коментувати; Я позначений для конверсії.
Рафаель

@Raphael: не перетворювати це, тому що це занадто довго і, хоча це не може бути ідеальною відповіддю, в цілому він намагається вирішити проблему. Якщо ви вважаєте, що це не допомагає, будь ласка, голосуйте. Пекка, хоча це, можливо, не є найпродуктивнішим джерелом нового кулінарного мистецтва, але це цікава - і пов'язана з цим проблема ... Якщо ви могли б розширити свою відповідь, щоб обговорити специфіку розробки такого алгоритму, це може бути більш прийнятним.
Shog9

3

Генерація рецептів зазвичай використовується як приклад програми для систем обгрунтування на основі конкретних випадків. Він навіть використовується як приклад на сторінці Вікіпедії . Пошук Google за "рецептами міркувань на основі конкретних випадків" дає численні результати.


1

Клас алгоритмів, який ви шукаєте, - це бандитський. Зазвичай вони використовуються для розробки дослідницької частини класифікаційної проблеми.

Основним підходом було б представити рецепти як обмежений пакет компонентів (вектор булевих значень з максимум k не 0 значеннями) та використовувати LinUCB для вибору набору компонентів. Тоді зворотний зв'язок буде "як" або "не подобається". Звичайно, якщо ви баєсий, ви можете скористатись Trueskill (використовуючи варіант Adpredictor).

Щось менш базове вимагатиме використання ядра замість лінійного поділу. Ядро ucb може допомогти впоратися з цією частиною. Але в якийсь момент я думаю, що було б корисно звернути увагу на хімічні склади аліментів, оскільки в кінці кінців ви, мабуть, хочете досягти балансу між різними основними смаками.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.