Machine learning 用于查找缺失属性的可伸缩分类器

Machine learning 用于查找缺失属性的可伸缩分类器,machine-learning,data-mining,Machine Learning,Data Mining,我有一个大型稀疏矩阵,表示数百万个实体的属性。例如,一条表示实体的记录可能具有属性“has(fur)”、“has(tail)”、“makesSound(meow)”和“is(cat)” 然而,这一数据是不完整的。例如,另一个实体可能具有典型“is(cat)”实体的所有属性,但可能缺少“is(cat)”属性。在这种情况下,我想确定这个实体应该具有“is(cat)”属性的概率 所以我试图解决的问题是确定每个实体应该包含哪些缺失的属性。给定一个任意记录,我想找到前N个最有可能丢失但应该包含的属性。我不

我有一个大型稀疏矩阵,表示数百万个实体的属性。例如,一条表示实体的记录可能具有属性“has(fur)”、“has(tail)”、“makesSound(meow)”和“is(cat)”

然而,这一数据是不完整的。例如,另一个实体可能具有典型“is(cat)”实体的所有属性,但可能缺少“is(cat)”属性。在这种情况下,我想确定这个实体应该具有“is(cat)”属性的概率

所以我试图解决的问题是确定每个实体应该包含哪些缺失的属性。给定一个任意记录,我想找到前N个最有可能丢失但应该包含的属性。我不确定这类问题的正式名称,因此我不确定在研究当前解决方案时要搜索什么。对于这类问题是否有可扩展的解决方案

我首先要简单地计算每个缺失属性的条件概率(例如p(is(cat)| has(fur)和has(tail)和…),但这似乎是一种非常缓慢的方法。另外,当我理解传统的条件概率计算时,我想我会遇到一些问题,其中我的实体包含一些与其他is(cat)实体不常见的不寻常属性,导致条件概率为零

我的第二个想法是为每个属性训练一个最大熵分类器,然后根据实体的当前属性对其进行评估。我认为概率计算会更加灵活,但这仍然会有可伸缩性问题,因为我必须为可能数以百万计的属性训练单独的分类器。此外,如果我想找到前N个最有可能包含的属性,我仍然需要评估所有分类器,这可能需要花费很长时间


有更好的解决方案吗?

如果您有一个大的数据集,并且担心可伸缩性,那么我会调查。Mahout是一个机器学习和数据挖掘库,可以帮助您完成项目,特别是他们已经内置了一些最著名的算法:

  • 协同过滤
  • 基于用户和项目的推荐者
  • K-均值,模糊K-均值聚类
  • 均值漂移聚类
  • Dirichlet过程聚类
  • 潜在Dirichlet分配
  • 奇异值分解
  • 并行频繁模式挖掘
  • 互补朴素贝叶斯分类器
  • 基于随机森林决策树的分类器
  • 高性能java集合(以前是colt集合)

    • 这听起来像是一个典型的推荐问题。对于每个属性,请使用“电影分级”一词,对于每行,请使用“人”一词。对于每个人来说,你都想找到他们可能喜欢但尚未评级的电影


      你应该看看一些比较成功的方法来解决这个问题。数据集相当大,因此效率是一个高度优先事项。报纸可能是一个很好的起点。

      谢谢,我听说过Mahout。它看起来很有趣,尽管我不熟悉所有实现的算法。你能推荐那些最适合我的问题的吗?朴素贝叶斯分类器可能非常有用,K-Means、SVD等等(不同的算法有不同的好处)。实际上,您可以尝试,这是多种机器学习算法的组合,以获得更好的结果。NetFlix挑战赛的获胜者通过组合多种算法获得了最好的结果,因此,如果你不想从头开始开发自己的算法,而想组合许多算法,那么我建议你真正研究一下Mahout。遵循Stompchick的建议,推荐问题通常通过协作过滤解决,协作过滤是由Mahout的“Taste”组件()实现的。@Chris,我认为Mahout有一点学习和集成开销,但你知道这比从头开始编写自己的算法要快得多,你会花更多的时间。这两种方式都没有错,但你必须根据自己的情况做出最好的选择。我的问题得到了很好的解决。