机器学习的应用

8
我在这里看到了一些机器学习的问题,所以我想发布一个相关的问题:假设我有一个随机生成的食品清单,其中包括主菜、甜点和饮料。例如:鸡肉、芝士蛋糕、橙汁。用户会根据1-5分的等级对他们个人喜欢的组合进行排名。每次评分后,会出现另一个随机的食品清单。
我的问题是,我应该使用什么机器学习技术/算法来预测用户会如何评价先前所有数据中随机生成的一组食品?实质上,使用他们的意见来预测他们对新食品组合的评分。是否有任何网站/书籍可以提供帮助?
7个回答

3
您提到了回归问题,因为您正在尝试预测连续数值。对于每个数据实例,您可以提取特征并关联一个值(1-5)。这些特征可以是餐点中某道菜的存在(例如有奶酪蛋糕、有橙汁),其中每个特征都是布尔值。假设有N种可能的菜肴,则每顿饭都是一个数据实例(也称为特征向量),具有N个特征和一个相关联的值。下面是一个N=12的示例,其中最后(第13列)是值。
0 0 0 1 1 0 0 0 1 0 0 0 5
1 0 0 1 0 1 0 0 0 0 0 0 3
0 0 0 0 0 0 1 1 0 0 0 1 4

您可以将这些数据输入到像Weka这样的机器学习程序中,它将为您创建一个回归模型。然后当您想要预测用户对新餐点的排名时,只需输入一个新的向量,其中最后一列是未知的,就像下面的示例:

0 0 1 0 0 0 1 0 0 0 0 1 ?

这个软件会给你返回一个值,比如3.9。


更正:当你将其视为布尔值1时,而不是对其进行评级。 - ono
此外,您如何在Weka中执行此操作?是否有教程? - ono
是的,有12个布尔值对应着12种可能的食物。'1'表示在餐中有这种特定的食物。 - stackoverflowuser2010
1
这将是一个相当弱的模型,因为它没有相关性特征(根据您的回归模型,该方法可能会包含这些特征),除了菜肴的身份之外什么也没有被使用。我想寻找菜肴之间的共性作为特征,而且我认为最有趣的特征是表达一组菜肴如何构成令人满意的餐食。这正是情感检测所考虑的内容。 - Ben Allison
1
一些示例功能:价格,热量含量,5种主要“口味”的存在(甜,咸,酸,苦,鲜),开胃菜与主菜中卡路里的比例,主菜与甜点中卡路里的比例,共享核心成分的数量等等。这样的功能将使您能够推断出您以前从未见过的菜肴,评判餐点是否超越其部分之和,超越简单的身份特征。 - Ben Allison
显示剩余3条评论

2
你所询问的基本上是情感检测,这在预测用户对产品的态度等方面非常流行。这里有一篇开创性的论文,取决于你是否学术倾向。
你可以将其视为回归问题,但很多时候人们忽略了类之间的序关系。如果你对餐点中的物品没有更多信息,我不确定你能否做得很好。如果可能的话,你应该寻找课程的特征表示,以提高预测值的准确性。

情感检测似乎很准确。不确定为什么我以前没有发现它。那篇论文看起来很有用。我刚读了摘要。谢谢。 - ono
情感识别只是机器学习分类的一个应用,最终核心问题在于提取相关特征。关于序数关系,你可以采用计算语言学中的n-grams方法,提取包含n个子序列的特征。例如,你的特征可以是"蛋糕_红酒",表示用户先吃了蛋糕再喝红酒。但在餐厅场景下,已知了菜品的顺序如前菜、主菜和甜点,那么这个顺序可能已经被确定了。 - stackoverflowuser2010
通过类之间的序数关系,我指的是这些类之间有一个顺序,即1 < 2 < 3 < 4 < 5,因此回归模型最自然地适合。您可以更加天真地将1、2、3、4、5视为单独的、独立的类别(忽略它们的标签是数字的事实),这也是许多情感检测方法所做的。 - Ben Allison

1

有许多算法可以适用于您的问题,其中一些可能是决策树, 神经网络支持向量机

然而,当您处理用户意见时,在某些情况下可能并不会收到所有产品的用户意见(他们可以跳过)。我不知道这是否是您的情况,也许您强制要求他们对所有产品进行排名。但是,如果您给用户提供跳过选项,您将最终得到一些未被标记的产品。在这种情况下,您可以使用协同过滤。该方法即使在我解释的情况下,也可以预测新用户的预估选择。

您可以在Ng的课程中找到一个很好的教程。


1
我会研究运筹学,因为通常它是一个最小化或最大化的问题。

1

由于您有一个分类列,即优先级列,因此可以尝试使用决策树。


1

为了选择最好的分类器,您需要评估问题的几个附加特征,例如属性值的大致数量(即有多少菜肴、甜点和饮料可供选择),以及在进行预测之前要提供多少训练示例。并非所有的分类器都擅长处理稀疏数据。

如果您拥有大量的训练示例(相对于属性值的数量),则决策树分类器是一个不错的起点。决策树的一个好处是,所学习的树的结构直观且提供了重要属性(和属性组合)的简单解释。


我有7个特征,每个特征大约有5个属性。我以晚餐为例来说明我想做的事情。我最初的想法是决策树。我会进一步研究它。 - ono
通常情况下,当构建决策树时,它会测量一个布尔结果;例如,基于几个特征,事件是否会发生。在我的情况下,结果是1到5。构建时是否适用相同的原则? - ono
决策树分类器适用于任意数量的类别(即不仅限于二元分类)。您还可以构建回归树,其具有实值输出(如果您不想将自己限制在整数值输出上,则可能还要考虑此应用程序)。 - bogatron

0
如果您想从用户之间的相似性(同一用户同样的食物)创建模型,则可以使用协作过滤创建模型。(为每个用户创建向量)像Keras、Scikit-learn和Pandas这样的库非常有用且易于使用。 如果您想编写自己的模型,则矩阵分解可能会有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接