Làm thế nào để đưa ra một thuật toán gợi ý các công thức nấu ăn khả thi?


15

Tôi đã từng có một cựu chiến binh trong khóa học của mình đã tạo ra một thuật toán có thể gợi ý các công thức nấu ăn. Lúc đầu, tất cả các loại công thức điên rồ sẽ xuất hiện. Sau đó, cô sẽ huấn luyện thuật toán nấu ăn với các công thức nấu ăn thực sự và cuối cùng nó sẽ gợi ý những thuật toán rất hay.

Tôi tin rằng cô ấy đã sử dụng một cái gì đó liên quan đến Định lý Bayes hoặc Clustering, nhưng cô ấy đã mất từ ​​lâu và thuật toán cũng vậy. Tôi đã tìm kiếm trên internet nhưng tìm kiếm công thức nấu ăn sẽ mang lại bất kỳ loại kết quả nào nhưng không phải là kết quả mà tôi đang tìm kiếm. Vì vậy, câu hỏi của tôi là:

Những kỹ thuật nào có thể được sử dụng để đưa ra một thuật toán (ngẫu nhiên) gợi ý các công thức nấu ăn khả thi (không sử dụng cơ sở dữ liệu về các công thức cố định)?

Tại sao tôi lại bận tâm tìm kiếm một thuật toán nấu ăn? Vâng, đó là một ví dụ rất hay về một ứng dụng trong thế giới thực của các khái niệm cơ bản và thuật toán như vậy có thể hữu ích trong các cài đặt khác gần với thế giới thực hơn.


1
Có thể đáng để xem xét các loại thuật toán tiến hóa
Henry

7
... Hoặc để giảm nhẹ, cái này từ xkcd
Henry

2
@Henry: Và bạn sẽ sử dụng chức năng nào cho thể dục? Đó là điểm chính của câu hỏi!
Raphael

1
Người bỏ phiếu có thể giải thích lý do đằng sau phiếu bầu của mình không? Bỏ phiếu để đóng mà không đưa ra lý do không giúp OP cải thiện câu hỏi của mình.
Alex ten Brink

1
Các ý kiến ​​có vẻ kỳ lạ hơn so với chính câu hỏi.
Oeufcoque Penteano

Câu trả lời:


4

Hmm, sử dụng Định lý Bayes để tạo ra các công thức mới từ các công thức cũ. Tôi tưởng tượng trước tiên bạn muốn thuật toán tách các thành phần thành một dạng mà nó hiểu (không chắc chúng ta đang sử dụng NLP cho điều đó hay nếu bạn tự nhập dữ liệu vào chính mình, không phải ở đây cũng không ở đó.) Từ đó .. .

Tôi hình dung một cái gì đó như thế này.

Dữ liệu thử nghiệm được phân tích. Bây giờ chúng tôi có một danh sách các công thức nấu ăn và xác suất mà mỗi thành phần sẽ diễn ra cùng với một thành phần khác, và với số lượng bao nhiêu. Sau khi chúng tôi có dữ liệu này, bạn sẽ có chương trình ngẫu nhiên thực hiện các công thức nấu ăn mới. Đầu tiên, nó đi qua một danh sách tất cả các thành phần đã biết, sau đó chọn ngẫu nhiên một thành phần chính, từ đó sử dụng xác suất của một thành phần được đưa ra một thành phần khác để bắt đầu ném vào các thành phần ngẫu nhiên hơn, trong khi phù hợp với dữ liệu được đào tạo phù hợp về số lượng và tương thích Thành phần.

Tôi có thể đề nghị rằng khi tạo một công thức mới, chương trình sẽ được cung cấp thông tin như, tôi muốn thứ gì đó ngọt ngào, hoặc thứ gì đó chua, hoặc ví dụ thứ gì đó chủ yếu được tạo thành từ lúa mì.

Hy vọng điều này sẽ giúp một chút.


3

Đối với một bộ dữ liệu tập trung rộng lớn của Hoa Kỳ với gần 2000 công thức nấu ăn, bạn có thể xem Dịch vụ Công thức Vũ trang . Điều này không trả lời câu hỏi của bạn, nhưng sẽ cung cấp cho bạn dữ liệu đào tạo trong thế giới thực.

Các yêu cầu cho vấn đề có lẽ khó xác định đối với hầu hết mọi người và cách tiếp cận được chọn có thể sẽ kết thúc việc điều chỉnh thể lực theo cách bạn đã đề xuất. Thực phẩm ở geenral rất đặc trưng về văn hóa và cách tiếp cận có thể sẽ đi rất kém nếu không điều chỉnh sâu rộng.

Điều này cũng cần có kiến ​​thức và ngữ nghĩa đáng kể để chuẩn bị nhiều hơn là một danh sách các thành phần. Rốt cuộc, kem có hương vị cà phê với wafer, cafe au lait và croissant và tira misu nếu không sẽ không thể phân biệt được.


"Điều này không trả lời câu hỏi của bạn" - chính xác, vì vậy nó nên là một nhận xét. Tôi thấy bạn chưa được phép bình luận; Tôi gắn cờ để chuyển đổi.
Raphael

@Raphael: không chuyển đổi điều này, vì nó quá dài và - mặc dù nó có thể không phải là một câu trả lời lý tưởng - vì toàn bộ nó cố gắng giải quyết vấn đề. Nếu bạn cảm thấy nó không có ích, vui lòng bỏ phiếu xuống. Pekka, mặc dù đây có thể không phải là nguồn nghệ thuật ẩm thực mới hiệu quả nhất, nhưng nó là một vấn đề thú vị - và có thể giải quyết được ... Nếu bạn có thể mở rộng câu trả lời của mình để thảo luận về các chi tiết cụ thể của việc phát triển thuật toán như vậy, có thể dễ chấp nhận hơn.
Shog9

3

Tạo công thức thường được sử dụng như một ứng dụng ví dụ cho các hệ thống Lý do dựa trên trường hợp. Nó thậm chí còn được sử dụng như một ví dụ trên Trang Wikipedia . Một tìm kiếm google cho "công thức lý luận dựa trên trường hợp" mang lại nhiều kết quả.


1

Lớp các thuật toán bạn đang tìm kiếm là một tên cướp. Chúng thường được sử dụng để xử lý phần thăm dò của một vấn đề phân loại.

Một cách tiếp cận cơ bản sẽ là biểu diễn các công thức nấu ăn như một túi các thành phần giới hạn (một vectơ booleans có tối đa k giá trị 0) và sử dụng LinUCB để chọn một bộ các thành phần. Sau đó, phản hồi sẽ là 'thích' hoặc 'không thích'. Tất nhiên, nếu bạn là người Bayes, bạn có thể thích sử dụng Trueskill (sử dụng biến thể Adpredictor).

Một cái gì đó ít cơ bản hơn sẽ yêu cầu sử dụng kernel thay vì tách tuyến tính. Kernel ucb có thể giúp xử lý phần đó. Nhưng đến một lúc nào đó tôi nghĩ sẽ trở nên hữu ích khi chú ý đến các thành phần hóa học của các chất vì cuối cùng bạn có thể muốn đạt được sự cân bằng giữa các vị cơ bản khác nhau.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.