【问题标题】:Application of machine learning机器学习的应用
【发布时间】:2012-11-07 21:23:12
【问题描述】:

我在这里看到了一些机器学习问题,所以我想我会发布一个相关问题: 假设我有一个随机生成的食物清单,其中包括主菜、甜点和饮料。一个例子是鸡肉、芝士蛋糕、橙汁。用户将从 1-5 的等级对他们个人喜欢这种组合的程度进行排名。达到等级后,会出现另一组随机食物。

我的问题是,我会使用什么机器学习技术/算法来预测用户会根据他们之前的所有数据对随机生成的集合进行排名?从本质上讲,使用他们的意见来预测他们对新食物集的评价。任何可能有帮助的网站/书籍?

【问题讨论】:

    标签: machine-learning data-mining


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        你已经陈述了一个回归问题,因为你试图预测一个连续的数值。

        对于每个数据实例,您可以提取特征并关联一个值 (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。

        【讨论】:

        • 关于样本数据的问题:那么这 12 个布尔值是所有可能出现的特征,比如 4 个主菜、4 个甜点和 4 个饮料?这就是你有12个的原因吗?当用 1 对句子进行评分时,您是在表示哪些是存在的。
        • 更正:布尔值 1,而不是你评价它的时候。
        • 另外,你如何在 Weka 中预演这个?有教程吗?
        • 如前所述,这将是一个相当弱的模型——没有类似相关的特征(取决于您的回归模型,该方法可能包括这些),除了菜正在使用。我想寻找菜肴之间的共同点作为特征,我认为最有趣的特征表达了一组菜肴如何构成令人满意的一餐。这就是情绪检测所考虑的事情。
        • 一些示例特征:价格、卡路里含量、存在 5 种主要“口味”(甜、咸、酸、苦、鲜)、开胃菜与主菜的卡路里比例、主菜与主菜的卡路里比例甜点,共享核心成分的数量等。这样的功能将使您能够推断出您从未见过的菜肴,判断这顿饭多于(或少!)比其部分的总和,并超越简单身份特征。
        【解决方案4】:

        您要问的基本上是sentiment detection,它在预测用户对产品的态度之类的事情上变得非常流行。这是seminal paper,具体取决于您的学术倾向。

        您可以将其视为回归问题,但很多时候人们忽略了类之间存在序数关系的事实。如果您对餐点中的物品没有更多的信息而不是他们的名字,我不确定我是否希望您做得很好。如果可能,您应该寻找课程的特征表示,以提高您预测价值的能力。

        【讨论】:

        • 情绪检测似乎正确。不知道为什么我以前没有找到它。那张纸看起来很有用。我刚读了摘要。谢谢。
        • 情感识别只是机器学习分类的一种应用;最后,核心问题是提取相关特征。关于序数关系,您可以采用计算语言学中的 n-gram 方法,在其中提取包含 n 个子序列的特征。您的特征可以是类似于“cake_wine”的东西,表示用户先吃了蛋糕,然后吃了酒。但在餐厅场景中,如开胃菜、主菜、甜点等已知顺序,可能已经知道顺序。
        • 通过类之间的序数关系,我的意思是类对它们有一个顺序,即 1
        【解决方案5】:

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

        如果您有大量训练示例(相对于属性值的数量),decision tree classifier 是一个不错的起点。决策树的一个好处是学习树的结构很直观,并提供了对重要属性(以及属性组合)的简单解释。

        【讨论】:

        • 我有 7 个功能和每个大约 5 个属性。我以晚餐为例来说明我正在尝试做的事情。我最初的想法是决策树。我会进一步研究。
        • 此外,通常在构建决策树时,它会测量布尔结果;例如,一个事件是否会基于几个特征发生。在我的例子中,结果是 1 到 5。构建它时是否适用相同的原则?
        • 决策树分类器适用于任意数量的类(即,不仅仅是二元分类)。您还可以构建具有实值输出的回归树(如果您不想将自己限制为整数值输出,您可能还需要为您的应用程序考虑这一点)。
        【解决方案6】:

        有很多算法可以解决您的问题,其中一些可以是decision treesneural netssupport vector machines

        但是,当您处理用户意见时,在某些情况下,您可能不会在所有产品中都获得用户意见(他们可以跳过)。我不知道这是不是你的情况,也许你强迫他们对所有产品进行排名。但是,如果您让用户选择跳过,您最终会得到一些尚未标记的产品。在这种情况下,您可以使用协同过滤。即使在我解释的情况下,这种方法也能预测新用户的估计选择。

        你可以在Ng's course找到一个很好的教程。

        【讨论】:

          【解决方案7】:

          如果您想根据用户的相似性(相同的用户相同的食物)创建一个模型,那么创建一个具有协同过滤的模型。 (适用于每个用户的矢量) keras、scikit learn 和 pandas 等库非常有用且简单。 如果您想编写自己的模型,那么矩阵分解可能会有所帮助。

          【讨论】:

            猜你喜欢
            • 2020-06-18
            • 2023-03-12
            • 2012-11-20
            • 2015-12-02
            • 1970-01-01
            • 2018-11-27
            • 2017-03-03
            • 2019-05-14
            • 2019-07-10
            相关资源
            最近更新 更多