Machine learning 如何使用动态大小的输入集合处理机器学习问题?

Machine learning 如何使用动态大小的输入集合处理机器学习问题?,machine-learning,relational-database,neural-network,data-mining,feature-extraction,Machine Learning,Relational Database,Neural Network,Data Mining,Feature Extraction,我正在尝试用机器学习将数据样本分类为好的或坏的质量 数据样本存储在关系数据库中。样本包含属性id、名称、向上投票数(用于良好/不良质量指示)、注释数等。还有一个表,其中包含外键指向数据样本id的项。这些项包含权重和名称。指向数据样本的所有项共同表示数据样本的特征,这通常有助于对数据样本进行分类。问题是,对于不同的示例,指向一个外键的项目数是不同的 我想将指向特定数据样本的项目输入机器学习输入,例如神经网络。问题是我不知道项目的数量,所以我不知道需要多少输入节点 Q1)当输入维度是动态的时,是否可

我正在尝试用机器学习将数据样本分类为好的或坏的质量

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

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

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

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


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

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

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

示例:假设您有大小为3、4和5的输入。你需要学习一张从5号到3号的地图,你可以使用所有大小为5号的点来学习,还有一张从4号到3号的地图,你可以使用所有大小为4号的点来学习

不过,我并不认为这能很好地发挥作用

如果Q1得到解决,则Q2)不再是问题


问题3)我在猜测这一点,但也许您可以将数据库映射到一个图形,并使用大量用于在图形中学习的算法?

据我所知,没有已知的分类方法可以直接处理动态大小的输入集合。降维是通过将高维但固定的数据降维到低维来实现的,所以它看起来并不是您所需要的

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


另一种想法是结构化预测,一个很好的例子是当你有一个句子,你需要确定每个单词的词性,在这种类型的设置中,每个单词都有一个标签,标签之间的交互非常重要。这类问题的理解方法是,很抱歉添加第二个答案,但它与我的第一个答案有很大不同

一种可行的方法是:假设输入的大小可以是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是虚拟值。这可确保您向网络提供“最后两个节点是特殊的”信息


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

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

有一类模型适用于您想要执行的操作:。这是一类特别优雅的模型,它有能力扩展到无限大,但总是使用有限数量的参数来解释有限数量的数据。模型更新在数据量不断增加的情况下得到了很好的定义(模型中的参数数量只是根据需要增加以适应它们)

然而,有两大警告:

  • 这些模型是硬的。如果你在机器学习和统计方面没有良好的背景,可能需要相当长的学习时间
  • 无限模型中的推理是难以解决的。这通常使用MCMC方法来处理,MCMC方法需要大量计算。尽管最近在这方面取得了一些进展,但这仍然是一个新的研究领域,您肯定不会在广泛的模型中找到这方面的实现

  • 有一个机器学习领域叫做归纳逻辑编程,专门处理关系数据。在您的例子中,如果您希望使用神经网络,您将希望将关系数据集转换为命题数据集(单个表)-即,具有固定n的表