我在这里看到了一些机器学习问题,所以我想我会发布一个相关问题:假设我有一个随机生成的食物列表,其中包括主菜、甜点和饮料。一个例子是鸡肉、芝士蛋糕、橙汁。用户将从 1-5 的等级对他们个人喜欢这种组合的程度进行排名。达到等级后,会出现另一组随机食物。
我的问题是,我将使用什么机器学习技术/算法来预测用户将从他们之前的所有数据中随机生成的集合中排名什么?从本质上讲,使用他们的意见来预测他们对新食物集的评价。任何可能有帮助的网站/书籍?
我在这里看到了一些机器学习问题,所以我想我会发布一个相关问题:假设我有一个随机生成的食物列表,其中包括主菜、甜点和饮料。一个例子是鸡肉、芝士蛋糕、橙汁。用户将从 1-5 的等级对他们个人喜欢这种组合的程度进行排名。达到等级后,会出现另一组随机食物。
我的问题是,我将使用什么机器学习技术/算法来预测用户将从他们之前的所有数据中随机生成的集合中排名什么?从本质上讲,使用他们的意见来预测他们对新食物集的评价。任何可能有帮助的网站/书籍?
你已经陈述了一个回归问题,因为你试图预测一个连续的数值。
对于每个数据实例,您可以提取特征并关联一个值 (1-5)。特征可以是用餐期间是否存在一道菜(例如has_cheesecake、has_orange_juice),其中每个特征都是一个布尔值。假设有 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。
我会研究运筹学,因为通常它是一个最小化或最大化的问题。
由于您有一个分类列,它是优先级列,您可以尝试决策树。
要选择最佳分类器,您应该估计问题的几个附加特征,例如属性值的大致数量(即,有多少主菜、甜点和饮料可供选择)以及大约有多少训练示例您想在做出预测之前提供吗?并非所有分类器都擅长处理稀疏数据。
如果您有大量训练示例(相对于属性值的数量),那么决策树分类器是一个不错的起点。决策树的一个好处是学习树的结构是直观的,并提供了对重要属性(和属性组合)的简单解释。
有许多算法可以解决您的问题,其中一些可以是决策树、神经网络或支持向量机。
但是,当您处理用户意见时,在某些情况下,您可能无法在所有产品中获得用户意见(他们可以跳过)。我不知道这是不是你的情况,也许你强迫他们对所有产品进行排名。但是,如果您让用户选择跳过,您最终会得到一些尚未标记的产品。在这种情况下,您可以使用协同过滤。即使在我解释的情况下,这种方法也能预测新用户的估计选择。
你可以在Ng 的课程中找到一个很好的教程。
如果您想根据用户的相似性(相同的用户相同的食物)创建一个模型,那么创建一个具有协同过滤的模型。(适用于每个用户的矢量) keras、scikit learn 和 pandas 等库非常有用且简单。如果您想编写自己的模型,那么矩阵分解可能会有所帮助。