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

我有一个大型稀疏矩阵,代表数百万实体的属性。例如,一个记录,代表一个实体,可能具有属性“有(毛)”, “有(尾巴)”, “发出声音(喵)”,以及“是(猫)”。

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

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

我的第一个想法是简单地计算每个缺失属性的条件概率(例如,P(是(猫)|有(毛) 且 有(尾巴) 且 … )),但这似乎是一个非常慢的方法。此外,据我所知,传统的条件概率计算,我想象我会遇到一些问题,我的实体包含一些不常见且与其他是(猫)实体不共有的属性,导致条件概率为零。

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

有没有更好的解决方案?


回答:

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

你应该看看Netflix挑战赛中一些更成功的方法。数据集相当大,因此效率是高度优先的。一个好的起点可能是论文《推荐系统的矩阵分解技术》

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注