用于查找缺失属性的可扩展分类器

时间:2010-07-09 14:37:59

标签: machine-learning data-mining

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

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

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

我的第一个是简单地计算每个缺失属性的条件概率(例如P(is(cat)| has(fur)和has(tail)和...)),但这似乎是一种非常慢的方法。另外,正如我理解条件概率的传统计算,我想我会遇到一些问题,其中我的实体包含一些与其他(cat)实体不相同的异常属性,导致条件概率为零。 / p>

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

有更好的解决方案吗?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

您应该看一些Netflix Challenge更成功的方法。数据集非常大,因此效率是一个高优先级。一个好的起点可能是论文'Matrix Factorization Techniques for Recommender Systems'