4

我对基于配方的各种属性的统计分析以编程方式对配方进行分类感兴趣。换句话说,我想将食谱分类为BreakfastLunchDinner没有Dessert任何用户输入。

我可用的属性是:

  1. 食谱标题(如鸡肉沙拉
  2. 配方描述(描述配方的任意文本)
  3. 烹饪方法(准备这个食谱的步骤)
  4. 准备和烹饪时间
  5. 配方中的每种成分及其数量

好消息是我有一个样本集,其中包含大约 10,000 个已经分类的食谱,我可以使用这些数据来教授我的算法。我的想法是寻找模式,比如糖浆这个词在统计上出现在早餐食谱中的频率是否更高,或者任何需要超过1 杯糖的食谱有 90% 的可能性是甜点。我想如果我从多个维度分析配方,然后适当调整权重,我可以得到相当准确的东西。

在解决这个问题时,有哪些好的算法可以研究?像 k-NN 这样的东西会有所帮助,还是有更适合这项任务的东西?

4

3 回答 3

2

如果我要这样做,我会尝试像李考建议的那样去做。我会首先关注成分。我会建立一个出现在食谱成分部分的单词的字典,并以监督的方式清理列表以删除非成分术语,例如数量和单位。

然后我会求助于贝叶斯定理:您的数据库允许您计算早餐和晚餐中都有鸡蛋的概率......;您将预先计算这些先验概率。然后给定一个包含鸡蛋和果酱的未知食谱,您可以后验计算这顿饭是早餐的概率。

您以后可以使用其他术语和/或考虑数量(每人的鸡蛋数量)来丰富...

于 2012-02-13T22:37:23.223 回答
1

尝试各种众所周知的机器学习算法。我建议首先使用贝叶斯分类器,因为它很容易实现并且通常工作得很好。如果这不起作用,请尝试更复杂的方法,例如神经网络或 SVM。

主要问题将决定一组特征作为方法的输入。为此,您应该查看哪些信息是唯一的。例如,如果您有一个名为“鸡肉沙拉”的食谱,那么“鸡肉”部分不会引起太大兴趣,因为它也存在于配料中并且更容易从那里收集。因此,您应该尝试找到一组提供新信息的关键字(即沙拉部分)。尝试为此找到一组好的关键字。这可能可以以某种方式自动化,但如果你手动完成,你可能会更好,因为它只需要完成一次。

描述也是如此。对于此类任务,找到正确的特征集始终是最困难的部分。

一旦你有了你的一组特征,只需在它们上训练你的算法,看看它的效果如何。如果您对机器学习没有太多经验,请查看正确测试 ML 算法的不同方法(例如,不进行 N 测试等)。

于 2012-02-13T18:48:06.583 回答
1

我认为 NN 可能是一个矫枉过正。我会尝试对每种类型的膳食(早餐、晚餐)使用单个感知器“网络”进行分类,然后让它遍历输入并调整权重向量。在数据集中找到的每个有意义的词都可以作为网络的输入。我希望这足以满足您的需求。我之前成功地使用过这种方法对文本进行分类。

于 2012-02-14T07:55:22.573 回答