7

我正在解决一个问题,试图通过机器学习将数据样本分类为质量好坏。

数据样本存储在关系数据库中。样本包含属性 id、名称、赞成票数(用于表示好/坏质量的指示)、评论数等。还有一个表,其中包含指向数据样本 id 的外键的项目。这些项目包含重量和名称。指向数据样本的所有项目共同表征数据样本,这通常有助于对数据样本进行分类。问题是,指向一个外键的项目数对于不同的样本是不同的。

我想为机器学习输入(例如神经网络)提供指向特定数据样本的项目。问题是我不知道项目的数量,所以我不知道我想要多少个输入节点。

Q1) 当输入维度是动态的时候,是否可以使用神经网络?如果是这样,怎么做?

Q2)当列表的长度未知时,是否有向网络提供元组列表的最佳实践?

Q3) 是否有将机器学习应用于关系数据库的最佳实践?

4

5 回答 5

5

有一个机器学习领域称为归纳逻辑编程,专门处理关系数据。在您的情况下,如果您希望使用神经网络,您可能希望将关系数据集转换为命题数据集(单表) - 即具有固定数量属性的表,可以输入神经网络或任何其他命题学习器。这些技术通常构建所谓的一阶特征,从辅助表中捕获数据。此外,您需要这样做只是为了诱导您的学习者 - 一旦您拥有了特征和学习者,您就可以动态评估这些特征以获得新的数据点。

这是可用于此类问题的一些技术的概述文件。如果您有任何进一步的问题,请走开。

于 2013-01-03T21:56:07.453 回答
2

神经网络并非设计用于处理动态大小的输入。很少有机器学习方法是,它们通常假设维数不变。我认为解决这个问题的最简单方法是计算可变大小实例的汇总统计信息,例如,如果您有任意数量的输入,则计算这些输入的均值(和方差,以及您喜欢的任何其他内容),这如果您一心想要使用神经网络,它将是固定维度的。

有一类模型适合您想要做的事情:贝叶斯非参数。这是一类特别优雅的模型,它具有增长到无限大小的能力,但总是使用有限数量的参数来解释有限数量的数据。在数据量不断增加的情况下,模型更新是明确定义的(模型中的参数数量只是根据需要增加以适应它们)。

但是,有两个重要的警告:

  1. 这些模型很难。如果您在机器学习和统计方面没有良好的背景,则可能需要相当长的接送时间
  2. 无限模型中的推理是棘手的。这通常使用计算量相当大的 MCMC 方法来处理。尽管最近在变分非参数方面取得了一些进展,但这仍然是一个新的研究领域,您肯定不会在各种模型中找到这些东西的实现。
于 2012-12-07T10:54:57.270 回答
1

我不知道所有问题的答案,但也许这会有所帮助:

Q1)您可以尝试使用一些降维方法,例如主成分分析(PCA),将所有输入对象映射到一个公共维度。为此,您必须选择长度为 N 的所有数据点,并仅使用这些数据点来学习从维度 N 到维度 M 的映射。

示例:假设您有大小为 3、4 和 5 的输入。您需要学习从大小为 5 到大小为 3 的映射,您可以使用大小为 5 的所有点和从尺寸 4 到尺寸 3,您可以使用所有尺寸为 4 的点来学习。

不过,我不希望这能很好地工作。

Q2) 如果 Q1 得到解决,应该不再是问题。

Q3)我在推测这个,但也许你可以将数据库映射到图表,并使用大量的算法来学习图表?

于 2012-12-06T15:04:58.273 回答
1

我很抱歉添加第二个答案,但它与我的第一个答案大不相同。

一种可行的方法是执行以下操作:假设您的输入大小可以是 3、4 或 5。您让神经网络有 5 个输入节点(输入的最大大小)。然后,如果出现大小为 3 的点,则在前 3 个节点上提供其值,并在其余节点上提供虚拟值。

让我们讨论一个具体的例子:假设您的输入是 R^3、R^4 或 R^5 中的点,并且它们是二进制的:它们可以在每个条目处取值 0 或 1。如果出现一个点 (0,1,0,0,1),您只需将这些值输入网络的 5 个输入节点。如果出现点 (0,1,1),则将 (0,1,1,-1,-1) 馈送到网络,其中 -1 是虚拟值。这可确保您向网络提供“最后两个节点是特殊的”的信息。

在线性分类器中,虚拟值是非常危险的;然而,由于神经网络不是线性的,它可以(原则上)学习任何函数,只要你给它所需的信息并有足够的训练数据来提供它。

于 2012-12-06T18:21:40.373 回答
1

据我所知,没有众所周知的分类方法可以直接作用于动态大小的输入集合。降维通过将高维但固定的数据减少到低维来工作,因此它看起来并不像您需要的那样。

在机器学习中处理二进制分类(这似乎是您感兴趣的问题)的一种方法是构建直方图。例如,您可以通过构建文本中出现的单词的直方图来对文本(不同长度)进行分类。已经提出了几个扩展,bi-grams 的直方图,n-grams,但它们建立在相同的想法上。

另一种想法是结构化预测,一个很好的例子是当你有一个句子并且你需要确定每个单词,它是什么词性,在这种类型的设置中,每个单词都有一个标签,以及它们之间的交互标签非常重要。这类问题的很好理解的方法是Latent Structural SVMCRFMax Margin Markov Network

于 2012-12-06T17:57:53.903 回答